Three.js PolyhedronGeometry顶点位置

时间:2015-09-07 06:39:39

标签: javascript three.js

所以我试图用PolyhedronGeometry创建自己的形状

粗略草图: enter image description here

我遇到了问题。特别是我试图将这个形状附加到一个球体上,所以使用一些公式我想出了以下顶点:

[ -0.6495190528383289, -0.09943689110435831, 0.36157613954394185, 
   0, -0.09943689110435831, 0.7433789778353299, 
   0.6495190528383289, -0.09943689110435831, 0.36157613954394185,
   0.3897114317029973, -0.39774756441743325, 0.7231522790878837, 
   0, -0.5966213466261499, 0.5947031822682639, 
  -0.3897114317029973, -0.39774756441743325, 0.7231522790878837 ]

然后我有面部指数:

[ 5,4,1, 5,1,0, 2,1,3, 4,3,1, 0,1,2, 0,4,5, 2,3,4 ]

当我添加球体作为调试点时,它们出现在正确的位置,但无论我如何调整顶点/面,一些位置都是不正确的:

enter image description here

  1. 这些面孔的重要性是什么?
  2. 为什么我的多面体不能正确绘制?

1 个答案:

答案 0 :(得分:1)

问题是原始矢量的长度彼此不相等,因此它们在图上的投影结构的范围不同。也许,你指定球体的半径是错误的。

例如,集合中第一个向量的长度:

(new THREE.Vector3( 
                    -0.6495190528383289, 
                    -0.09943689110435831, 
                    0.36157613954394185 )
).length() === 0.75

集合中最后一个向量的长度:

(new THREE.Vector3(
                    -0.3897114317029973, 
                    -0.39774756441743325, 
                    0.7231522790878837 )
).length() === 0.9127033163903814

如果将半径设置为等于第一个矢量长度的PolyhedronGeometry,则后一个矢量位于此半径的球体之外。如果将半径设置为等于PolyhedronGeometry的最后一个向量的长度,则第一个向量位于球体内。