我已经创建了如下的几何体,
const hand1geo = new THREE.BoxGeometry(2, 0.01, 0.2);
const material_sidehand = new THREE.MeshBasicMaterial({ color: 0x3cc1b7 });
const sidehand = new THREE.Mesh(hand1geo, material_sidehand);
我要做的是从这个方框中提取顶点我使用这个
this.sidehand.attributes.position.array
我得到的结果如下:结果的图片。我真的不明白为什么它只是跨越72个元素(24个向量)具有相同的值。为什么这里有24个向量,它们是在哪里定义的?因为我想稍后用射线投射器来做碰撞检测。我试着使用this.sidehand.vertices,但它不起作用。
我试图使用this.sidehand.vertices,但它不起作用。
我不知道你用了什么参考文献,但是Mesh
从来没有一个叫做vertices
的属性。你可能指的是以前的Geometry
类,它确实有这个性质。但是,这个类已经被弃用了,现在使用BufferGeometry。
我真的不明白为什么它只是跨越了72个元素(24个向量)具有相同的值。
两个值不相同。BoxGeometry
在平面数组中定义了本地空间中盒子的所有顶点,因此数据可以直接由WebGL API使用(这对性能有好处)。
有24个向量,因为几何图形为盒子的每边定义了四个顶点。每条边由两个三角形组成。这样就可以生成合适的法线和纹理坐标。
我建议你重新考虑使用原始几何数据进行碰撞检测。使用边界卷可以获得更好的性能。