2016-12-30 62 views
0

做了一個緩衝的平面上,設置它的頂點用:ThreeJS:PlaneBufferGeometry,光線投射和麪臨

var vertices = tg.attributes.position.array; 
geometry.addAttribute('position', new THREE.BufferAttribute(vertices, 3)); 

現在我想光線投射到面得到它的Z值:

var z = intersects[i].object.geometry.vertices[intersects[i].face.a].z; 

這個工作在標準幾何體上,因爲它具有面部表情以及我試圖從內存中保存的很多其他東西。

我的問題來自index:intersects [i] .face.a。我必須添加什麼?似乎沒有辦法將「面孔」添加到緩衝的幾何圖形中。現在有在只有一個面整個幾何:

object.face.(a,b,c) 

或許有點擊了個鬼臉,得到的另一種方法是使用緩衝geoms時的頂點值。

小貼士?謝謝!

回答

1

緩衝區幾何圖形包含數組中位置的屬性。

如果您想獲得有關從緩衝區幾何體的頂點特定頂點的z值信息,那麼你可以做這樣的:點的

intersects[i].object.geometry.attributes.position.array[intersects[i].face.a * 3 + 2] 

也可以使用z座標路口(這是在世界座標):

intersects[i].point.z; 

jsfiddle例子(見function showDetails(intersect),綠色平面THREE.PlaneGeometry,藍色平面THREE.PlaneBufferGeometry

+0

謝謝。但在我的網格中,臉部總是一樣的。它不會改變數值。這就是爲什麼我想我會添加面孔。請注意我沒有使用generatefromgeometry,我從頭開始, –

+0

也許我的光線投影是有缺陷的?假期後會檢查它 –

+0

你可以讓jsfiddle。這將是更好的方式來幫助你。節日快樂;) – prisoner849