如何在THREE.js中单击BoxGeometry的特定边?

时间:2018-05-18 04:43:11

标签: three.js

我希望能够获得BoxGeometry特定边的坐标,以便能够以编程方式单击它。说BoxGeometry的顶部与左侧或右侧相对。我能够抓住物体的位置并从世界坐标转换,但不确定是否得到特定的边。

1 个答案:

答案 0 :(得分:1)

你想做一个光线投射。你从光标位置制作一条光线,进行光线投射,并按照光线的距离顺序返回光线所击中的所有物体的列表。第一个元素将有一个指向立方体的指针,以及索引或指向被击中的面部的指针..立方体由每个面部2个三角形组成,如果你将面部索引除以2,那么你应该给你一张脸.. 0到5 ..或者你可以看看命中normal ..这将是1,0,0 -1,0,0 0,1,0 0,-1,0或0,0,1 0,0,-1,具体取决于表面的面射击点。

https://threejs.org/examples/?q=rayca#webgl_geometry_terrain_raycast

编辑:

这里的认知障碍是你所想到的立方体的“面孔”实际上是2个面......(2个三角形)..所以如果你想处理的话,你将不得不强加自己的结构正方形面对单个实体..所以如果击中triangle1或triangle2那么那就是立方体面1 ...一种识别同一平面上面部的方法,就是通过观察它们的面法线。在同一平面上的面将具有非常相似的面法线,如果不相同的话。喜欢......面向右边的三角形为1,0,0,面向左边的三角形为-1,0,0 ...面向上的三角形为0,1,0,面向下的三角形为0,0 *,0 ,对于面向三角形的三角形为0,1,对于面向你的三角形为0,0,这是否有意义?

所以如果你得到一个光线命中..看看hit [0] .face.normal并检查sign / x / y / z以找到该三角形属于哪个立方体“面部”...