制作一个缓冲平面,设置其顶点:
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时,也许有另一种方法可以点击一个面并获得它的顶点值。
提示?谢谢!
答案 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
)