Three.js:如何使用飞机将物体切割成两部分?

问题描述 投票:0回答:1

我有一个复杂的对象,即一个盒子,我想动态剪切它。这个jsFiddle是一个非常简单的示例:jsFiddle

非常简单的飞机

var plane = new THREE.Mesh( geometry, material3 );
plane.rotation.x =1.3; // -Math.PI / 2;
gui.add(plane.rotation, "x", 0.1, Math.PI / 2).name("angle");
gui.add(plane.position, "y", -1, 1).name("h");
scene.add( plane );

我想从我的对象中删除上部。就像用刀从苹果上切下一块。

飞机就是刀子:在我的示例中,您可以玩两个控件来上下移动飞机或更改角度。

example

您能帮我隐藏从对象中删除的部分吗?

javascript three.js clipping
1个回答
0
投票

您有两个选择:

  1. 您可以使用clipping作为上述的WestLangley。
    • 剪切不会修改顶点的几何形状,只是可视的。
    • 是非破坏性的,因此非常适合制作动画或进行不断的更新。
    • 剪切通常是用几个平面而不是复杂的几何图形完成的。
  2. 您可以对Constructive Solid Geometry使用布尔运算。
    • 布尔值会影响可导出的顶点几何。
    • 操作是“破坏性的,因此一旦完成就无法进行更新。”>
    • 布尔可以在复杂的几何体中执行,只要它们是“歧管”即可。
  3. 布尔运算要求两个几何都为manifold geometries才能起作用。这意味着两个网格都必须是封闭的,没有开放面。您不能使用无限薄的平面,但是可以使用非常薄的盒子。

© www.soinside.com 2019 - 2024. All rights reserved.