2014-02-08 72 views
0

我試圖使用這些以獲得正常的網格面的:獲取正常使用raycaster intersectObjects網狀面的 - three.js所

ray = new THREE.Raycaster(x, y); 
var intersection = ray.intersectObjects(objectsOptical, true); 
var vector = intersection[0].face.normal; 

新增相交[0] .point和交叉點[0]。面對.normal(乘以常數)作爲一個頂點,intersection [0] .point作爲(灰色)線的第二個頂點。我得到了這個(紅線是射線,灰色應該是法線 - 但它們不是): Illustrative image

請幫我取得網格面部的法線。

謝謝。

回答

0

您使用紅線繪製的法線看起來像是在實施透視投影時可能是正確的。

raycast測試從網格命中單個三角形面。你所指的正常是射線擊中的臉部對象的正常,即。來自原始網格。

source code for THREE.Raycaster中可以看到交點計算直接返回臉部。

其他地方建議Ray.intersectObjects() requires face centroids.但是我不確定這個,因爲源代碼並不涉及質心。

也許原始幾何中的法線不正確。先試用此功能:

geometry.computeFaceNormals(); 
相關問題