2014-04-01 69 views
0

我是新來three.js所, 我想達到什麼是TI有相同的觀點多個立方體three.js所顯示相同的觀點3D對象

var g = new THREE.CubeGeometry(200, 200, 200, 1, 1, 1);     
cube1 = new THREE.Mesh(g, new THREE.MeshFaceMaterial(materials)); 
cube1.position.set(0,0,0); 
cube2 = new THREE.Mesh(g, new THREE.MeshFaceMaterial(materials)); 
cube2.position.set(300,0,0); 

這會給我X對齊的立方體,但立方體2稍微旋轉! 如何尋找建議將是非常有益的,謝謝!

+0

你是什麼意思的「相同perpective」?你實際描述的是兩個立方體「透視」 - 它們看起來有些不同,因爲它們距離相機有不同的距離。透視圖中的兩個立方體只有在相同的位置和相同的大小下才會看起來相同 - 基本上是「同一個立方體」:-)我不知道你真的想在這裏實現什麼。看看什麼是正交相機 - 也許這就是你想要的。 – lot

+0

感謝您的評論!如果他們出現輕微不同的原因是他們與相機的距離,我的目標是看起來完全一樣! – user1420929

回答

0

使用正交相機而不是透視相機。您的相機初始化將如下所示:

var camera = new THREE.OrthographicCamera(width/- 2, width/2, height/2, height/- 2, near, far); 

其中寬度和長度是畫布的尺寸。近和遠限定的最大和最小距離從照相機(對象不在此範圍將不被呈現內)

用相同的尺寸和旋轉的正交相機框將出現完全相同沒有它們的位置的問題。

0

創建一個函數,創建立方體,然後在循環中調用它。未經測試,但這樣的事情應該給你想要的結果:

// Function to create cubes 
function create_cube(x,y,z,rx,ry,rz,color) { 
    var geometry, material; 
    geometry = new THREE.CubeGeometry(5,5,5); 
    material = new THREE.MeshLambertMaterial({color: color}); 
    cube = new THREE.Mesh(geometry, material); 
    cube.position.x += x; 
    cube.position.y += y; 
    cube.position.z += z; 
    cube.rotation.x += rx; 
    cube.rotation.y += ry; 
    cube.rotation.z += rz; 
    cube.castShadow = true; 
    return cube; 
} 

// Create 10 cubes 
var n=10; 
for (var i = 0; i < n; i++) { 
    cube = create_cube(10*i,10*i,10*i,i,i,i,0xffffff); 
    scene.add(cube) 
} 

可以使用i的值來控制每個連續的立方體從上有何不同。