稍複雜,所以裸跟我說:three.js所:雷路口使用morphtargets不工作時
雷相交的作品完美地當一個對象沒有morphTargets。
當一個對象具有morphTargets只有原來的位置可以相交,也就是說,如果我變形的模型從
0,0,0
到50,50,50
射線不會與對象在50,50,50相交,相反,當我將鼠標移過0,0,0
我得到一個十字路口(即使對象已不在那裏!?)。
是否有某種標誌我需要打開使three.js意識到verts已經移動?
編輯,添加代碼。
這使我目,並將其添加到對象數組(射線相交用途):
function createDeer(deerGeometry, materials) {
mesh = new THREE.MorphAnimMesh(deerGeometry, new THREE.MeshLambertMaterial({ color: 0xE8E8E8, ambient: 0xE8E8E8, morphTargets: true, vertexColors: THREE.FaceColors }));
mesh.scale.set(3, 3, 3);
mesh.position.set(0, -3, 0);
mesh.rotation.set(0, 0, 0);
mesh.castShadow = true;
mesh.receiveShadow = true;
mesh.geometry.dynamic = true;
scene.add(mesh);
objects.push(mesh);
}
雷路口發生在鼠標按下(有一個鼠標懸停還有,同樣的事情),就像我說的,代碼工作正常,它只是與原來的unmorphed目相交:
function onDocumentMouseDown(event) {
event.preventDefault();
var vector = new THREE.Vector3(mouse.x, mouse.y, 0.5);
projector.unprojectVector(vector, camera);
var ray = new THREE.Ray(camera.position, vector.subSelf(camera.position).normalize());
var intersects = ray.intersectObjects(objects);
if (intersects.length > 0) {
SELECTED = intersects[ 0 ].object;
for(var i=0; i<objects.length; i++)
{
if(SELECTED.position.x == objects[0].position.x) {
thisObject = i;
}
}
}
var intersects = ray.intersectObject(plane);
container.style.cursor = 'pointer';
}
}
我已經決定的問題必須進行相關的事實,鹿的位置(如在網格變換)永遠不會改變,但是頂點確實移開,並且射線相交爲com削減對象的位置也許問題在這裏?
的充分程度提供您所編寫的代碼,請加入 – Ocelot
代碼:)感謝。 – Ian