2010-02-25 58 views
0

我有一個3D模型,由三角形組成。我想要做的是,給定一個靠近模型的點,我想將模型(三角形)着色爲另一種顏色,例如藍色。如何動態地對3d對象進行着色/紋理化?

現在,我有一個關於模型的邊界球,當發生碰撞時,我只是想對發生碰撞的模型部分進行近似的着色。

有人可以給我一些建議,我可以使用並做到這一點嗎?

感謝

回答

1

如果你只是有一個或少數幾個點再次進行測試的,最快的渲染的方法很可能是寫在GLSL着色器有條件地修改基於世界空間碎片的顏色到你的點的距離。

如果你從未做過GLSL編程,一個可能更簡單的方法是使用頂點數組並維護從三角形頂點到座標索引頂點數組的映射;那麼你可以採取任何頂點觸發碰撞測試,並在每一幀上手動修改其關聯的顏色數據。

+0

@Ben:我不確定你在「如果你只有一個或少數幾點要測試」中指的是什麼或哪一點? 我對GLSL很熟悉(儘管我的編程經驗非常有限),但是如果它的某些事情需要完成。 關於第二種選擇,我曾經想過一樣。我目前正在使用VBO。所以,如果我要爲頂點着色,我必須檢索數據,更改顏色並將其發回。現在,當我想象每次槍擊事件再次發生時,我認爲這會非常緩慢並且可能無法解決。 你覺得呢? – brainydexter 2010-02-25 06:25:52

+0

那麼,如果你的「靠近模型的點」是子彈 - 你有手槍還是機槍?一次空中有一顆子彈,還是數百顆?無論如何,試圖從第一原則推理性能是很難做到的。除了選擇高效的算法之外,確定某些事情是否會更快的唯一方法就是實施它並進行基準測試。 – 2010-02-25 17:32:58