Three.js 基于局部轴的平面局部裁剪

Three.js 基于局部轴的平面局部裁剪,three.js,clipping,Three.js,Clipping,我试图用material.clippingPlanes剪裁飞机缓冲区的左半部分。 当对象位于旋转(0,0,0)的中心时,剪裁工作 object.material.clippingPlanes = [object.getWorldDirection().cross(object.up).normalize(), object.position.z )]; 但当对象处于非零位置且旋转非零且切割不随对象方向而改变时,此代码将失败。来自: 用户定义的剪裁平面指定为世界空间中的三个平面对象 由于平面位于

我试图用material.clippingPlanes剪裁飞机缓冲区的左半部分。 当对象位于旋转(0,0,0)的中心时,剪裁工作

object.material.clippingPlanes =
[object.getWorldDirection().cross(object.up).normalize(), object.position.z )];
但当对象处于非零位置且旋转非零且切割不随对象方向而改变时,此代码将失败。

来自:

用户定义的剪裁平面指定为世界空间中的三个平面对象

由于平面位于世界空间,因此它们不会在对象的局部空间内定向。您需要将对象的世界变换矩阵应用于平面,以便使其与对象对齐

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]。常量-=object.material.clippingPlanes[0]。distanceToPoint(object.position)@Amriteshan,抓得好!感谢您分享这些额外信息。:)