三 JS - 如何用 Y 平面切割 3D 对象?

Posted

技术标签:

【中文标题】三 JS - 如何用 Y 平面切割 3D 对象?【英文标题】:Three JS - How to cut a 3D object with Y plane? 【发布时间】:2017-10-10 11:46:58 【问题描述】:

是否有可能使用 Three JS 切割具有我们可以移动的平面(主要是 Y 轴)的网格或对象? 我想要这张图片中显示的相同功能:

目标是保持网格完整,以允许用户移动平面并查看 Y 平面功能的网格。

【问题讨论】:

您能否更具体地了解“剪切”的含义?我们是否应该假设您想在平面交点处添加新顶点以保持网格完整?您想要一个实体面,还是仅实体零件上的多个面?例如。在您的图像中,中心似乎是空心的,您是否要沿着尖端保留它? 如果您不关心是否有一个有效的网格,而只想渲染一些看起来“切割”的东西,您可以在着色器中通过丢弃平面另一侧的片段来实现. 查看三个.js 剪辑示例中的任何一个。例如:threejs.org/examples/webgl_clipping.html 这是一个效果视频,供任何无法加载 WebGL 的人使用:vimeo.com/144777216 【参考方案1】:

根据 WestLangley 的评论,他发布的 sample link 中的以下代码似乎与您要实现的目标相关:

// ***** 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);

【讨论】:

感谢您的回答,感谢您这么快。我没有看到这个例子(有很多!)。我会看看这个,看看它是否适用于我的 3D 对象。

以上是关于三 JS - 如何用 Y 平面切割 3D 对象?的主要内容,如果未能解决你的问题,请参考以下文章

如何用highcharts制作3d图

如何用unity做一个2d小游戏

如何估计 3d 点的局部切平面?

如何用unity3d编写javascript

如何用Matlab快速画出带有3D渲染效果的复杂曲面

unity3d中如何用脚本创建对象或者类