2016-06-20 27 views
0

私はthree.jsでチェス盤を作っています。私はすべてのファイルが正しくレンダリングされていますが(stl loader)、正しい位置にロードできないようです。私は思っていた限りすべての作品を一直線に並べているが、それらはずらして見える。ここthree.jsで直線にオブジェクトを配置する方法

は私のコードです:

function renderPiece(loader, piece, coor, color) { 
    loader.load(piece, function(geometry) { 
    var material = new THREE.MeshPhongMaterial({color:color}) 
    var mesh = new THREE.Mesh(geometry, material) 
    chessBoard.objects.push(mesh) 
    // mesh.position.set(coor[0], coor[1], coor[2]) 
    mesh.position.x = coor[0] 
    mesh.position.y = coor[1] 
    mesh.position.z = coor[2] 
    mesh.scale.set(0.75,0.75, 0.75); 
    chessBoard.scene.add(mesh) 
    }) 
} 

、ここでは、fnは座標で呼び出して、次のとおりです。

var oStlLoader = new THREE.STLLoader() 

renderPiece(oStlLoader, pieces.rook, [0, 0, -210], 0x000000) 
renderPiece(oStlLoader, pieces.bishop, [0, 0, -140], 0x000000) 
renderPiece(oStlLoader, pieces.knight, [0, 0, -70], 0x000000) 
renderPiece(oStlLoader, pieces.king, [0, 0, 0], 0x000000) 
renderPiece(oStlLoader, pieces.queen, [0, 0, 70], 0x000000) 
renderPiece(oStlLoader, pieces.knight, [0, 0, 140], 0x000000) 
renderPiece(oStlLoader, pieces.bishop, [0, 0, 210], 0x000000) 
renderPiece(oStlLoader, pieces.rook, [0, 0, 280], 0x000000) 
+1

が中心点ですチェス作品の中心にある各モデルの? – samgak

+0

いいえ、私の使用したファイルのように、私の位置設定で追加されたデフォルトの位置があります。ありがとう! – bpr

答えて

0

あなたがセンターであるべき場所にXYZゼロベクトルで3Dモデルを作成する必要があります。あなたのチェスフィールドの。その後、

var fields = []; 
    fields['a1'] = new THREE.Vector3(10,0,10); 
    fields['a2'] = new THREE.Vector3(10,0,20); 
    fields['b1'] = new THREE.Vector3(20,0,10); 

し、モデルの位置を設定します:その後

、あなたはそのために事前に定義されたベクトル配列を使用して、正しい位置を設定するために、より簡単な方法を使用することができます

mymodel.position.set(fields['a2'].x,fields['a2'].y,fields['a2'].z); 
//or 
mymodel.position = new THREE.Vector3.copy(fields['a2']); 
関連する問題