有没有办法限制使用 THREE.js 裁剪的模型部分? [复制]
Posted
技术标签:
【中文标题】有没有办法限制使用 THREE.js 裁剪的模型部分? [复制]【英文标题】:Is there a way to cap portions of a model clipped using THREE.js? [duplicate] 【发布时间】:2019-08-26 02:09:39 【问题描述】:我刚开始使用 Three.js,但遇到了一些问题,我有一个 3d 对象,我在其中使用本地剪切平面来塑造一定程度的形状。
但是由于 3d 对象是“空心的”,只有外表面被渲染,当某些东西被剪裁时,我们可以看到形状并看到它的背面。 例如,您可以看到管内https://i.imgur.com/akk7Ist.png
我想盖上这些孔。基于这个问题,似乎实现这一点的最佳方法是在剪切区域上创建一个表面,从而盖住孔并使对象看起来不是空心的。但我不知道该怎么做。
这只是使用示例 https://threejs.org/examples/ 中的基本代码。
我想要达到的目标https://i.stack.imgur.com/rmb50.png
【问题讨论】:
【参考方案1】:它不会像使用 gpu 裁剪平面那样快,但它会给你返回实际的几何图形..
您可以尝试使用我最近修复的这个 CSG 库:
https://github.com/manthrax/THREE-CSGMesh
欢迎提出建议。
【讨论】:
我对 Three.js 的经验很少。我不确定你的这个图书馆是干什么用的。据我了解,它需要两个网格并根据减去交叉点或它们不相交的位置创建一个新网格? 没错。所以在你的情况下,你可以拿你的结模型,从它减去一个巨大的盒子,得到你在屏幕截图中看到的东西。并感谢您的反馈。我应该提供一些关于图书馆是什么的更好的信息。 CSG 代表 Constructive Solid Geometry。它使用称为 BSP 树的内部结构来支持 .subtract、.union 和 .intersect 等操作,然后生成结果几何。而不是使用剪切平面。 这已经足够接近我想要的了,将其添加到项目中只需要 .js 文件吗?对不起,如果这个问题似乎毫无意义。老实说,不知道如何实现或使用这些东西。 是的。你只需要 CSGMesh.js。您可以像这样导入它: import CSG from "./CSGMesh.js" 然后按照示例 2 中的逻辑在 github 页面上...分别用你的结和一个巨大的立方体替换 meshA 和 meshB。 您是否正在尝试制作用于 3D 打印的切片机?以上是关于有没有办法限制使用 THREE.js 裁剪的模型部分? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法在使用 Three.js 渲染的 3D 图像中插入 html 元素?
如何在 Three.js 中用 ShaderMaterial 替换 Collada 导入的纹理?