用于视锥剔除的截锥体的6个平面方程是怎样得到的
你说的应该是,视锥的6个平面在world space里的表达?那其实就是project space里的(-1, 0, 0, 1), (+1, 0, 0, 1), (0, -1, 0, 1), (0, +1, 0, 1), (0, 0, -1, 1), (0, 0, +1, 1)这六个平面,乘上(view * project)的逆矩阵(下面简称inv(vp)),就得到了。更进一步,因为只是+1或者-1,所以直接可以通过inv(vp)的列经过加减得到。也就是类似这样的代码:float4 column1 = clip.Column(0);float4 column2 = clip.Column(1);float4 column3 = clip.Column(2);float4 column4 = clip.Column(3);planes = column4 - column1; // rightplanes = column4 + column1; // leftplanes = column4 - column2; // topplanes = column4 + column2; // bottomplanes = column4 - column3; // farplanes = column4 + column3; // near
■网友Matrix4 combo = mProjMat * viewMat;mPlanes.normal.x = combo + combo;mPlanes.normal.y = combo + combo;mPlanes.normal.z = combo + combo;mPlanes.d = combo + combo;mPlanes.normal.x = combo - combo;mPlanes.normal.y = combo - combo;mPlanes.normal.z = combo - combo;mPlanes.d = combo - combo;mPlanes.normal.x = combo - combo;mPlanes.normal.y = combo - combo;mPlanes.normal.z = combo - combo;mPlanes.d = combo - combo;mPlanes.normal.x = combo + combo;mPlanes.normal.y = combo + combo;mPlanes.normal.z = combo + combo;mPlanes.d = combo + combo;mPlanes.normal.x = combo + combo;mPlanes.normal.y = combo + combo;mPlanes.normal.z = combo + combo;mPlanes.d = combo + combo;mPlanes.normal.x = combo - combo;mPlanes.normal.y = combo - combo;mPlanes.normal.z = combo - combo;mPlanes.d = combo - combo; 【用于视锥剔除的截锥体的6个平面方程是怎样得到的】 对不对,你可以推算一下,哦好像上面已经回答过了
■网友
两个跟屏幕平行的很容易得到,因为距离就是你自己给的。另外四个只要会一点三角函数就好了,因为你还要给出视锥在Y轴上的夹角,最后用屏幕的分辨率算出来。
■网友
我猜题主是想通过拿到6个平面方程,然后做裁剪。OK, 是这样的,有一篇paper,用于快速get 6个平面的方程。我在自己的soft renderer就使用了这个。叫:"Fast Extraction of Viewing Frustum Planes from the WorldView-Projection Matrix"根据文中的推论,很有意思的是:如果你传入的matrix是Projection,你拿到的plane是在view space如果你传入的matrix是View-Projection,你拿到的plane是在world space如果你传入的matrix是World-View-Projection,你拿到的plane是在object space文中还根据opengl右手或者DX左手给出了代码,自己看paper吧。
■网友
又截锥体 又平面方程 是什么意思…题目表述不清
■网友
不知道题主说的是不是pipeline里的剔除。如果是的话剔除时顶点其实已经通过 proj matrix转换到 clip space了,裁切的六个面都是该space中平行于 xz xy yz平面的
推荐阅读
- 底盘|新专利显示苹果汽车挡风玻璃可能会有一个凹槽用于安装传感器
- 为啥播放器及媒体相关类UI都采用深色系(黑色or灰色),浅色系为啥不适合用于媒体类的UI
- 怎样做内部审计系统,用于数据泄漏后的回溯
- 汽车|大众正在研发MEB-Lite平台 用于小/微型纯电动车
- 将ipad应用于课堂是利大于弊还是弊大于利
- summingbird和storm-yarn 他们的优缺点是啥,分别适用于哪些场景
- |男子患病15年终治愈,向医院捐资百万用于研发
- 中波红外3到5μm波段,在通信/通讯上有啥应用
- YOCTO项目具体用于那些行业或者业务
- 南方都市报|官宣!戴姆勒、吉利将联合开发新一代发动机,用于混动车型
