2013-09-30 65 views
0

將3D collada(.dae)文件添加到場景中。 'DAE'文件包含名稱爲「monster」的幾何體,id爲「monster-mesh-skin」。我試圖將鼠標單擊事件應用到幾何「怪物」。 like,如何應用3D模型的鼠標點擊事件

var monster = dae.getChildByName("monster"); // get geometry 
monster.addEventListener("click", meshClickHandler); 

點擊事件不起作用。我試圖THREE.Vector3()THREE.Ray一樣,

var mouse3D = new THREE.Vector3(); 
mouse3D.x = event.clientX; 
mouse3D.y = event.clientY; 
mouse3D.z = 0.5; 

var ray = new THREE.Ray(mouse3D); 

var intersects = ray.intersectObjects(monster); 
console.dir(intersects); 

文件上單擊處理。在intersects變量中不包含任何值。

是否有任何解決方案來應用鼠標事件的3D模型和控制它?

+0

這個問題沒有顯示任何研究工作.... – GuyGood

回答

1

看來你需要重新思考這個方法。場景中的任何3D對象都只是作爲對象的2D「繪圖」存在,並且本身不能附加標準的DOM事件處理程序。

你需要的是對文件本身一般事件偵聽器來捕獲鼠標的點擊,就像這樣:

document.addEventListener('click', detectIntersect, false); 

現在,有右three.js所example目錄一噸的例子,可以顯示你確切地說,如何「點擊你的對象」,但在3D術語中,它被稱爲對象拾取對象對對象進行光線投射。這些術語可能有助於搜索示例/幫助。看看這些例子:

http://threejs.org/examples/webgl_interactive_cubes.html http://threejs.org/examples/canvas_interactive_cubes_tween.html

最後一個音符,它出現在使用R57或更早版本的three.js所圖書館。我建議升級到最新版本,因爲當所有人都在同一頁面上時,從社區獲得支持更容易:)

希望能夠幫助,保重。