如何创建指向三个方向的随机对象



我需要通过创建几个圆柱来创建一个球体,然后使用Trix.js库将它们旋转到不同的方向。我尝试过将2个派循环循环,以更改旋转轴的设置,但它不起作用。我该怎么办?

var cylinder;
var cylinderMaterial    = new THREE.MeshPhongMaterial(
    { color: 0x5500DD,
        specular: 0xD1F5FD,
        shininess: 100 } );
var cylinderGeo = new THREE.CylinderGeometry( 3, 3, 500, 32 );
var cylinder = new THREE.Mesh( cylinderGeo, cylinderMaterial );

var untransformedCylinder = cylinder.clone();
console.log("Untransformed cylinder matrix:")
console.log(untransformedCylinder.matrix); 
scene.add(untransformedCylinder);

var maxCorner = new THREE.Vector3(  1, 1, 1 );
var minCorner = new THREE.Vector3( -1, -1, -1 );
var cylAxis = new THREE.Vector3().subVectors( maxCorner, minCorner );

cylAxis.normalize();
var theta = Math.acos( cylAxis.y );
var rotationAxis = new THREE.Vector3(1, 0, 0);
rotationAxis.normalize();
cylinder.matrixAutoUpdate = false;
cylinder.matrix.makeRotationAxis( rotationAxis, theta );
console.log("Theta: " + theta);
console.log("  cos: " + Math.cos(theta));
console.log("  sin: " + Math.sin(theta));
console.log("Transformed cylinder matrix:")
console.log(cylinder.matrix); 
scene.add( cylinder );

您应该在cylinder.matrix.makeRotationAxis( rotationAxis, theta );

后面添加cylinder.setRotationFromMatrix(cylinder.matrix);

最新更新