使用Three JS,可以通过平面(主要是Y轴)来切割网格或对象吗?我们可以移动这个平面吗?
我想要的功能与此图片中显示的相同:
目标是保持网格完整,以允许用户移动平面并根据Y平面查看网格。
![Y plane with 3D object](https://istack.dev59.com/gHe0o.webp)
// ***** Clipping planes: *****
var localPlane = new THREE.Plane(new THREE.Vector3(0, -1, 0), 0.8);
// Geometry
var material = new THREE.MeshPhongMaterial({
color: 0x80ee10,
shininess: 100,
side: THREE.DoubleSide,
// ***** Clipping setup (material): *****
clippingPlanes: [ localPlane ],
clipShadows: true
});
var geometry = new THREE.TorusKnotBufferGeometry(0.4, 0.08, 95, 20);
var mesh = new THREE.Mesh(geometry, material);
mesh.castShadow = true;
scene.add(mesh);
localClippingEnabled
属性设置为 true
。例如:const renderer = new THREE.WebGLRenderer({ canvas: myExampleCanvas }); renderer.localClippingEnabled = true;
相关文档:
https://threejs.org/docs/index.html?q=material#api/en/materials/Material.clippingPlanes - yaphi1