在Three.JS中旋转和平移对象时剪辑不起作用

时间:2019-02-11 11:18:47

标签: javascript three.js

我将扩展对象裁剪为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);

当对象平移或旋转时,这种方法效果很好。

但这在旋转和平移时均不起作用。

1 个答案:

答案 0 :(得分:0)

我在本文中找到了解决方案。 THREE.js Turn THREE.planeGeometry to THREE.plane

您可以为每个边创建6个planeGeometry作为网格的子代,然后根据网格裁剪移动planeGeometry。

修剪时,可以使用PlaneGeometry修剪网格。