2017-02-25 50 views
0

我需要通過創建幾個圓柱體然後使用Three.js庫將它們旋轉到不同的方向來創建一個球體。我已經嘗試了循環2個餅圖,它改變了旋轉軸的設置,但它不起作用。我該怎麼辦 ?如何在three.js中創建指向多個方向的隨機對象

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); 

回答

1

您應該添加cylinder.setRotationFromMatrix(cylinder.matrix);背後cylinder.matrix.makeRotationAxis(rotationAxis, theta);

相關問題