【问题标题】:Three.js PolyhedronGeometry Vertices PositionThree.js PolyhedronGeometry 顶点位置
【发布时间】:2015-12-02 15:29:54
【问题描述】:

所以我正在尝试用 PolyhedronGeometry 创建自己的形状

粗略的草图:

我遇到了问题。具体来说,我正在尝试将此形状附加到球体上,因此使用一些公式我想出了以下顶点:

[ -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 ]

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

  1. 人脸的顺序重要吗?
  2. 为什么我的多面体绘制不正确?

【问题讨论】:

    标签: javascript three.js


    【解决方案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的长度,最后一个向量的长度就是第一个向量在球体内。

    【讨论】:

    • 啊,看来我没有仔细阅读文档,它说“将它们投影到一个球体上”用于顶点。我想我应该单独创建每个单独的面,然后在不使用 PolyhedronGeometry 的情况下加入它们。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2013-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-11
    • 2016-01-03
    相关资源
    最近更新 更多