ThreeJS:PlaneBufferGeometry,光线投射和面部

时间:2016-12-30 04:35:01

标签: three.js

制作一个缓冲平面,设置其顶点:

var vertices = tg.attributes.position.array;
geometry.addAttribute('position', new THREE.BufferAttribute(vertices, 3));

现在我想光线投射到脸部以获得它的Z值:

var z = intersects[i].object.geometry.vertices[intersects[i].face.a].z;

这适用于标准几何体,因为它有面孔和许多其他我想从内存中保存的东西。

我的问题来自索引:intersects [i] .face.a。我需要添加什么?似乎没有一种方法可以将“面”添加到缓冲的几何体中。现在,整个几何体只有一个面:

object.face.(a,b,c)

在使用缓冲的geoms时,也许有另一种方法可以点击一个面并获得它的顶点值。

提示?谢谢!

1 个答案:

答案 0 :(得分:1)

缓冲区几何包含数组中位置的属性。

如果要从缓冲区几何体的顶点获取有关特定顶点的z值的信息,则可以这样做:

intersects[i].object.geometry.attributes.position.array[intersects[i].face.a * 3 + 2]

你也可以使用交点(世界坐标)的z坐标:

intersects[i].point.z;

jsfiddle示例(请参阅function showDetails(intersect),绿色平面为THREE.PlaneGeometry,蓝色平面为THREE.PlaneBufferGeometry