基于局部轴的平面局部裁剪
Posted
技术标签:
【中文标题】基于局部轴的平面局部裁剪【英文标题】:Local clipping of planes based on local axis 【发布时间】:2018-01-18 13:22:48 【问题描述】:我试图使用 material.clippingPlanes 剪辑平面缓冲区的左半部分。 当对象在中心旋转 (0,0,0) 时,剪裁工作。
object.material.clippingPlanes =
[object.getWorldDirection().cross(object.up).normalize(), object.position.z )];
但是当对象处于非零位置且旋转非零并且切割不随对象的方向变化时,此代码将失败。
【问题讨论】:
【参考方案1】:来自Material.clippingPlanes:
在世界空间中指定为 THREE.Plane 对象的用户定义剪切平面。
因为平面位于世界空间,它们不会在对象的本地空间内定向。您需要将对象的世界变换矩阵应用于平面,以便将它们与您的对象对齐。
myMesh.material.clippingPlanes[0].applyMatrix4(myMesh.matrixWorld);
请注意,如果您的网格正在四处移动,您需要存储原始剪裁平面,以便应用每次变换中的新 matrixWorld
。
// somehwere else in the code:
var clipPlane1 = new THREE.Plane(); // however you configure it is up to you
// later, probably in your render method:
myMesh.material.clippingPlanes[0].copy(clipPlane1);
myMesh.material.clippingPlanes[0].applyMatrix4(myMesh.matrixWorld);
【讨论】:
谢谢。我还必须使用 object.material.clippingPlanes[0].constant -= object.material.clippingPlanes[0].distanceToPoint(object.position); 移动平面 @AmriteshAnand 好收获!感谢您分享额外的信息。 :)以上是关于基于局部轴的平面局部裁剪的主要内容,如果未能解决你的问题,请参考以下文章
图像拼接基于matlab最低能量线裁剪图像拼接含Matlab源码 2127期