1
當我們用OBJMTLLoader加載Object3D時,不可能使用raycaster用鼠標選擇這個對象。交集數組長度始終爲0.任何人都知道原因?下面是代碼...通過OBJMTLLoader加載Object3D
裝載機日常
var loader2 = new THREE.OBJMTLLoader();
loader2.load('/assets/unwrap/masa/dogtasmasa.obj', '/assets/unwrap/masa/dogtasmasa.mtl', function (object) {
object.position.y = 1.5;
object.position.x = 0;
object.position.z = 2;
object.rotateX(-Math.PI/2);
object.rotateZ(-Math.PI/2);
object.scale.set(0.04, 0.04, 0.04);
object.castShadow = true;
scene.add(object);
});
和採摘
function onDocumentMouseDown(event) {
event.preventDefault();
SCREEN_WIDTH = window.innerWidth - 5;
SCREEN_HEIGHT = window.innerHeight - 5;
var vector = new THREE.Vector3((event.clientX/SCREEN_WIDTH) * 2 - 1, -(event.clientY/SCREEN_HEIGHT) * 2 + 1, 0.5);
projector.unprojectVector(vector, camera);
var raycaster = new THREE.Raycaster(camera.position, vector.sub(camera.position).normalize());
var intersects = raycaster.intersectObjects(scene.children);
if (intersects.length > 0) {
for (var i = 0; i < intersects.length; i++) {
var obj = intersects[i].object;
controls.enabled = false;
tControls.attach();
}
}
else {
controls.enabled = true;
tControls.detach();
}
}
場景是整個瀏覽器窗口。通過三種塗蠟任何其他網可以採摘,但object3d不是......
感謝各種幫助
我試過了,當我使用resursive標誌時,十字路口是由很多對象組成的,但我需要創建一個邊界框幫助程序來顯示選擇哪個對象。 object3d的子網格在那裏有一個邊界框。我需要在加載的組周圍創建一個邊框幫助器。例如,對象是我的場景是一個沙發,但沙發不能被全部選中。 – Tezcan
以下是three.js中如何處理這種情況:在加載程序回調中,需要向每個子對象添加一個指向根對象,就像這樣:'child.userData.rootObject = object;'。 – WestLangley
我怎麼無法想到這個?把根源給孩子是...... – Tezcan