2013-10-06 1 views
0

Я использую пример художника воксела из репозитория ThreeJS git.ThreeJS Voxel не зафиксирован в сетке

Я изменил его так, что вокселы больше, чем пример. Вместо того, чтобы занимать одно пространство сетки по координате X, они занимают 2.

Однако это означает, что рулонная сетка не прикреплена к сетке и вместо этого переместилась на половину одной с одной стороны, а половина один на другой стороне.

enter image description here

Вот мой код:

// In the example the geometry is set to (50, 50, 50) 
self.rollOverGeo = new THREE.CubeGeometry(100, 50, 50); 
self.rollOverMaterial = new THREE.MeshBasicMaterial({ 
     color: 0xff0000, 
    opacity: 0.5, 
    transparent: true 
}); 
self.rollOverMesh = new THREE.Mesh(self.rollOverGeo, self.rollOverMaterial); 

self.rollOverMesh.position = new THREE.Vector3(0, 25, 0); 

Кто-нибудь знает, почему это?

ответ

1

Геометрия центрирована в начале координат в локальной системе координат. Вам нужно перевести геометрию следующим образом:

rollOverGeo = new THREE.CubeGeometry(100, 50, 50); 
rollOverGeo.applyMatrix(new THREE.Matrix4().makeTranslation(25, 0, 0)); 

cubeGeo = new THREE.CubeGeometry(100, 50, 50); 
cubeGeo.applyMatrix(new THREE.Matrix4().makeTranslation(25, 0, 0)); 

Three.js R.61