【发布时间】:2016-09-02 14:56:52
【问题描述】:
在 Three.js 中,我有一个 3d 对象,我在其中使用本地剪切平面来仅渲染对象的一部分。
但是,由于 3d 对象是“空心的”(意味着只渲染外表面),当我们从该表面剪下任何东西时,我们可以“看到”对象。这是我的意思的一个例子,clipping a corner off a cube。注意我们是如何看到对角的背面的。
我想让物体看起来是实心的。基于this issue,似乎实现此目的的最佳方法是在剪切区域上创建一个表面,从而盖住孔并使对象看起来不是空心的。
我的问题是,我怎么知道在哪里构建这个表面? Three.js 是否提供了一种方法来获取平面和任意曲面之间相交的顶点列表?如果没有,我该如何自己解决这个问题?
我找到了this question,但作者没有描述他们是如何解决我在这里遇到的问题的。
【问题讨论】:
-
您能否提供一个真实用例的实时链接来展示您的真正约束?是否涉及纹理?你用什么材料?你愿意妥协什么?
-
@WestLangley 当然,这个simple example 说明了我的问题。我想盖住开口,这样你就看不到形状的内部了。我没有使用纹理,只是一个基本的 MeshPhongMaterial。性能是我的首要任务,所以如果这只能在简单的形状上以高性能的方式完成,那就这样吧。但我想知道是否有可能以一种可以应用于任何形状的通用方式来做到这一点。
标签: javascript 3d three.js shader clip