2016-06-20 12 views
0

Ich mache ein Schachbrett mit three.js. Ich habe alle Dateien richtig rendern (stl loader), aber ich kann nicht scheinen, sie auf die richtige Position zu laden. Ich setze alle Stücke in einer geraden Linie so weit ich dachte, aber sie scheinen gestaffelt zu sein.Wie man Objekte in einer geraden Linie in three.js anordnet

hier ist mein Code:

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

und hier sind die fn Anrufe mit Koordinaten:

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

Ist der Mittelpunkt von jedem Modell in der Mitte der Schachfigur? – samgak

+0

Guten Ruf, es sieht so aus, als ob Dateien, die ich benutzt habe, eine Standardposition haben, die durch meine Positionseinstellung hinzugefügt wird. Vielen Dank! – bpr

Antwort

0

Sie 3D-Modelle mit einem XYZ Nullvektor an der Stelle schaffen müssen, in dem Zentrum sein sollte von deinem Schachfeld.

Danach können Sie einfachere Methode verwenden richtigen Positionen zu setzen, verwenden Sie vordefinierte Vektorfeld für das:

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

und stellen Sie dann eine Position Ihres Modells:

mymodel.position.set(fields['a2'].x,fields['a2'].y,fields['a2'].z); 
//or 
mymodel.position = new THREE.Vector3.copy(fields['a2']); 
Verwandte Themen