2

我有一个立方体,正在尝试转换立方体一个面上所有坐标的 x 位置。目前我的方法是:

var wDepth = 200;
var hDepth = 200;
var geo = new THREE.CubeGeometry( 20, 40, 40, 20, wDepth, hDepth);

        for ( var i = 0; i < wDepth; i++ ) {
            for ( var j = 0; j < hDepth; j++ ){
                var index = j * wDepth + i;
                geo.vertices[index].x += heightData[ index ];
            }
        }

当我查看我的模型时,我的面部似乎缺少一整行(只有最后一行的第一个点被转换)。我怎样才能遍历这个立方体的整个面,以便我可以访问所有的点?

4

1 回答 1

3

好吧,我想首先,我认为您应该更正问题的标题,因为它不是一张脸,而是立方体的一侧。
无论如何,关于你的问题,如果你尝试使用 three.js 生成立方体的结构,你可以硬编码一些东西。比如,如果 faces 数组中的前 500 个面来自一侧,或者前几百个顶点属于一边。但我不确定这是否有效。如果您想要一个好的通用方法,您应该检查每个面的面法线,因为它们指向您想要的正确方向。一些伪代码类似于:(面部索引 = face.a,face.b,face.c 并且是对特定三角形顶点的引用)

for all geometry.faces 
if (geometry.face[i].normal.equals{Vec3(1,0,0}) then
       for each geometry.face[i].index 
       geometry.vertices[geometry.face[i].index].x = 4; 

这样,您可以获得所有面向特定方向的面(在本例中为 positiv x),然后将这些面的顶点 x 坐标更改为硬编码值 4。我认为这样的事情应该可行。

于 2013-09-12T08:28:51.560 回答