我現在正在爲此苦苦掙扎幾天,最終我放棄了並決定問你。我試圖有一個簡單的對象檢測,因爲inetersectScene被交換對象,這是不遞歸的替換我正在創建一個新的數組,我存儲所有對象,我想與之交互。我正在嘗試使用純網格物體和object3d,它不適用於它們兩個。然後我將數組傳遞給intersectObjects函數,但返回的數組總是空的。intersectedObjects不能正常工作
下面是一些代碼:
// Translate page coords to element coords
var offset = $(this.renderer.domElement).offset();
var eltx = pagex - offset.left;
var elty = pagey - offset.top;
// Translate client coords into viewport x,y
var vpx = (eltx/this.container.offsetWidth) * 2 - 1;
var vpy = -(elty/this.container.offsetHeight) * 2 + 1;
var vector = new THREE.Vector3(vpx, vpy, 0.5);
this.projector.unprojectVector(vector, this.camera);
var ray = new THREE.Ray(this.camera.position,
vector.subSelf(this.camera.position).normalize());
//console.log(ray);
var intersects = ray.intersectObjects(this.intersectedList);
console.log(intersects.length);
任何想法?
所以basicaly的camera.parent應該是情景嗎?如果沒有 - 我不能輪換...所以這意味着我不能使用控件? (OrbitControls) –
我編輯了我的答案。這可能不是一個three.js問題。看看你能否得到它的工作。 – WestLangley
它肯定是相機的位置,因爲當我改變它,並開始移動intersectObjects開始回調一些對象,但我的光標是隨機的位置。任何其他想法如何我可以修改相機?另一個問題是我應該使用我正在構建的對象的列表I還是scene.children將作爲intersectObjects的參數來完成工作?真的非常感謝你的時間... –