1. 通过相机创建一个volume,然后采样是否在体积内,删除
2. 根据相机 空间坐标 定义xyz偏移值 padding移除点
vector ndc = toNDC("/obj/cam1", @P);
float ox=ch("ox");
float oy=ch("oy");
float oz=ch("oz");
if ((ndc[0]<0-ox)||(ndc[0]>1+ox)) removepoint(geoself(), @ptnum);
if ((ndc[1]<0-oy)||(ndc[1]>1+oy)) removepoint(geoself(), @ptnum);
if ((ndc[2]>0+oz)) removepoint(geoself(), @ptnum);
3. 移除背面点 instersect函数
vector camP = point(1,"P",0);//获取相机位置
vector lookat = camP - @P;//获取物体朝向相机的方向
vector p;
float u,v;
vector newP = @P +lookat*chf("bias");//物体向相机偏移一段距离,得到一个新的物体位置
i@fit = intersect(0,newP,lookat,p,u,v);//新的物体位置向相机方向发射线,与旧物体做碰撞,会被碰撞到的就删除
if(@fit!=-1)removepoint(0,@ptnum);// 如果是点就直接这么写
版权说明
文章采用: 《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权。版权声明:未标注转载均为本站原创,转载时请以链接形式注明文章出处。如有侵权、不妥之处,请联系站长删除。敬请谅解!
@feWTkd6X:图床有问题,可以在C...