如何在特定高度上获取three.js模型的顶点?

时间:2014-05-18 09:47:52

标签: javascript 3d three.js

我有一个对象的three.js模型。现在我对不同高度的轮廓感兴趣(角点以及曲线上的一些点来确定曲率)。目前我们将模型转换为CSG库中的对象(csg.js),在特定高度上将它与一个小扁平框(因为某个平面不可能)相交,然后创建一个图像并使用OpenCV findContours ()回到我们感兴趣的点。

这个过程变得有点慢,模型越大,我的切片越多,所以我想知道你们是否知道更好的方法来解决这个问题。也许我只是在文档中监督了一些可以帮助我的东西,但到目前为止我找不到任何看起来会对我有帮助的东西。

根据对象的不同,轮廓可能是凸的和凹的,因此解决方案需要在该部分是通用的。

我非常感谢任何输入或指向可能对我有用的东西。

1 个答案:

答案 0 :(得分:0)

使用shaderMaterial。在制服中,设置

myUniforms = {
    uClipPlane:   { type: "v4", value: new THREE.Vector4( 0.0, 0.0, -1.0, -300.0) }, 
    clipOffset:  { type: "f", value: 1.0 },
}

clipPlane定义了一个裁剪对象的平面。 clipOffset定义裁剪过程的容差。

在顶点着色器中,设置

vec4 pos4 = modelViewMatrix * vec4( position, 1.0 ); 
vClip = dot ( uClipPlane, pos4); 

在片段着色器中,设置

if (vClip < 0 || vClip > clipOffset ) discard;

你需要一个clipOffset的原因与你在过程中需要一个盒子的原因相同,你的形状中的点永远不会在一个精确的平面上,而是在飞机的某个小距离上。