为了优化计算量,我们可以通过删除相机看不到的部分减少数据量
相机看不到的部分一种是相机框外的,一种是背面被遮挡的点
相机框外,可以使用volume from camera,然后采样
通过相机创建一个volume,然后采样是否在体积内,删除
背面被遮挡的,可以使用instersect函数
相机视角看到的不变,背面的面被删除了
vector camP = point(1,"P",0);//获取相机位置
vector lookat = camP - @P;//获取物体朝向相机的方向
vector p;
float u;
float v;
vector newP = @P +lookat*chf("bias");//物体向相机偏移一段距离,得到一个新的物体位置
i@fit = intersect(0,newP,lookat,p,u,v);//新的物体位置向相机方向发射线,与旧物体做碰撞,会被碰撞到的就删除
如果是粒子的删除可以这么做
vector camP = point(2,"P",0);
vector lookat = camP - @P;
vector p;
float u;
float v;
vector newP = @P +lookat*chf("bias");
int fit = intersect(1,newP,lookat,p,u,v);
if(fit!=-1)removepoint(0,@ptnum);
Hip:https://pan.baidu.com/s/1XHXsD3r9ZE_lUIw6nCy11g
提取码:3dat
防健忘笔记,没写很全,如果问题可以联系我
亁杯~