我将扩展对象裁剪为6个平面。 平面的常数由3个滚动条控制,如下所示
原始裁剪平面如下。
var localPlane_x = new THREE.Plane( new THREE.Vector3( -1, 0, 0 ), 5000 );
var localPlane_y = new THREE.Plane( new THREE.Vector3( 0, -1, 0 ), 5000 );
var localPlane_z = new THREE.Plane( new THREE.Vector3( 0, 0, -1 ), 5000 );
var localPlane_x1 = new THREE.Plane( new THREE.Vector3( 1, 0, 0 ), 5000 );
var localPlane_y1 = new THREE.Plane( new THREE.Vector3( 0, 1, 0 ), 5000 );
var localPlane_z1 = new THREE.Plane( new THREE.Vector3( 0, 0, 1 ), 5000 );
mesh.material.clippingPlanes = [localPlane_x, localPlane_y, localPlane_z, localPlane_x1, localPlane_y1, localPlane_z1];
当值更改时,我更新了clippingPlanes
,如下所示。
-对于常数
mesh.material.clippingPlanes[0].constant = clip1.x + mesh.position.x;
var normal = new THREE.Vector3();
normal.set(-1, 0, 0).applyQuaternion(selected_Object.quaternion);
mesh.material.clippingPlanes[0].normal.copy(normal);
当对象平移或旋转时,这种方法效果很好。
但这在旋转和平移时均不起作用。
答案 0 :(得分:0)
我在本文中找到了解决方案。 THREE.js Turn THREE.planeGeometry to THREE.plane
您可以为每个边创建6个planeGeometry作为网格的子代,然后根据网格裁剪移动planeGeometry。
修剪时,可以使用PlaneGeometry修剪网格。