网格位置与其绑定几何顶点位置之间的三个关系

时间:2015-04-10 05:32:02

标签: three.js

我正在寻找一种操纵一堆物品的方法,通常一个技巧是制作团体,将物品作为一个群体的孩子。但在我的情况下,它无法正常工作。

我想要做的是将几何体及其线框绑定在一起,以便我可以将它们一起操作。在立方体的情况下,我使用了BoxGeometry和BoxHelper。我用BoxGeometry创建了一个网格,并创建了网格的BoxHelper。然后我想翻译/旋转/缩放这个包。

我做了:geometry.applyMatrix(new THREE.Matrix4()。makeTranslation(x,y,z)); 我将这个几何图形添加到父版本中。

但我注意到父和网格位置是(0,0,0),BoxHelper位置也是(0,0,0)。为什么值不随几何顶点一起变化? Object3D / Mesh / geometry的位置是否与其父级或世界空间相对位置?

我尝试将矩阵应用于父级。结果是,网格处于正确的位置,但框架是远离的。有谁能解释一下?谢谢。

        var newcube = new THREE.BoxGeometry(20, 20, 20);
        // newcube.applyMatrix( new THREE.Matrix4().makeTranslation(x, y, z); 
        var mats = [];
        mats.push(new THREE.MeshBasicMaterial({ color: 0xffd500  }));
        mats.push(new THREE.MeshBasicMaterial({ color: 0x009e60  }));
        mats.push(new THREE.MeshBasicMaterial({ color: 0x0051ba  }));
        mats.push(new THREE.MeshBasicMaterial({ color: 0xffffff  }));
        mats.push(new THREE.MeshBasicMaterial({ color: "yellow"  }));  // backward
        mats.push(new THREE.MeshBasicMaterial({ color: 0xC41E3A }));
        var faceMaterial = new THREE.MeshFaceMaterial(mats); 

        var parent = new THREE.Object3D();

        var mesh = new THREE.Mesh(newcube, faceMaterial); 

        parent.add(mesh);

        var cubeframe = new THREE.BoxHelper( mesh );
        cubeframe.material.color.set( 0x0066ff );
        parent.add( cubeframe );

        parent.applyMatrix( new THREE.Matrix4().makeTranslation(x, y, z); 

        scene.add(parent);
        objects.push(parent);

0 个答案:

没有答案