2016-07-29 7 views
0

плоскости координат является 800px ширина:threejs - геометрия системы к системе координат экрана

geometry = new THREE.PlaneGeometry(800, 20, 0, 0); 

material = new THREE.MeshBasicMaterial({ 
    color:0xFFFFFF, 
    side:THREE.DoubleSide 
}); 

mesh = new THREE.Mesh(geometry, material); 
mesh.updateMatrixWorld(); 
scene.add(mesh); 

при попытке манипулировать ею, делает систему координат другой нежелательной

mesh.geometry.vertices[0].setY(0); 
mesh.geometry.vertices[0].setX(0); 
mesh.geometry.vertices[0].setZ(0); 

mesh.geometry.vertices[1].setY(0); 
mesh.geometry.vertices[1].setX(800); 
mesh.geometry.vertices[1].setZ(0); 

mesh.geometry.vertices[2].setY(20); 
mesh.geometry.vertices[2].setX(0); 
mesh.geometry.vertices[2].setZ(0); 

mesh.geometry.vertices[3].setY(20); 
mesh.geometry.vertices[3].setX(800); 
mesh.geometry.vertices[3].setZ(0); 

mesh.geometry.verticesNeedUpdate = true; 

можно настроить координат система объекта геометрии к системе координат кадра камеры?

0px = 0

+1

Ваш вопрос не очень ясен. – gaitat

+0

Я хочу поместить отдельные вершины на экранные координаты. – Philipp

+0

Когда вы говорите '0px = 0', вы имеете в виду сделать каждую координату (я согласен с xy, так как экран не имеет az) в строке сцены с координатами экранаL, то есть прямоугольник @ (30,50,10) будет быть (на экране) @ (30px, 50px) правильно? – Rush2112

ответ

1

Прошу прощения, если это не то, что вы ищете. Если вы имеете в виду, что вам нужно преобразовать позицию VEctor3 в 3d мира его 2d позиции пикселя на экране, Вот типичное преобразование:

getScreenTranslation = function (obj, renderer, camera) { 
     var vector = new THREE.Vector3(); 
     var widthHalf = 0.5 * renderer.context.canvas.width; 
     var heightHalf = 0.5 * renderer.context.canvas.height; 

     vector.setFromMatrixPosition(obj.matrixWorld); 
     vector.project(camera); 
     vector.x = vector.x * widthHalf + widthHalf; 
     vector.y = -(vector.y * heightHalf) + heightHalf; 
     return { 
       x: vector.x, 
       y: vector.y 
     }; 
    }; 

Помните, что вам может понадобиться, чтобы компенсировать позиционирование холста элемент на вашей веб-странице.

Смежные вопросы