我注意到,大多數3D遊戲/渲染環境都將固體表示爲(通常爲三角形)網格(通常爲三角形)3d多邊形。然而,一些示例(例如Second Life或PovRay)使用可以在其上執行各種操作以創建更復雜的形狀的一組3d基元(立方體,球體,錐體,圓環等)構建的固體。Prims vs Polys:每個的優缺點是什麼?
所以我的問題是:爲什麼選擇一種方法而不是其他代表3d數據?
我可以看到,複雜的光線跟蹤操作可能會有好處,可以將曲面描述爲單個數學函數(如PovRay所做的那樣),但SL肯定不會嘗試任何如此雄心勃勃的渲染引擎。同樣,我可以想象,服務廣義實體而不是任意網格的描述可能更具帶寬效率,但它是否真的值得SL的負面影響(即建模的東西是真的是硬,通常結果是醜陋的) - 這是SL開發早期做出的一個糟糕的決定,他們現在堅持着?或者它是OpenGL/DirectX中最容易實現的人造物嗎?
編輯: 讀了到目前爲止的答案,現在我在想,我的兩個例子都使用prims非常不同的原因:
的povray對於,prims可能是一個副作用將固體描述爲數學函數的效果,這爲複雜的光線追蹤提供了好處。
由於性能的原因,Second Life似乎主要關注參數化他們的三維元素(既作爲主體又作爲參數化人物)......我認爲這對於在線遊戲來說非常合理。
使用基本元素來處理類似人物的問題是,您很快需要大量的基元並執行布爾運算(並集和交集)來構建模型。與使用多邊形建模相比,這可能在計算上更加昂貴並且佔用更多的帶寬。 – ChrisF 2010-03-21 18:05:00
@ChrisF:也許做客戶端的布爾操作可以節省帶寬?此外,SL是否可能以參數方式代表人類?這將是帶寬友好的... – 2010-03-21 18:33:07
@MichaelE:+1我沒有考慮過碰撞檢測,但這很有道理。也讓客戶選擇多少細節來渲染是一個聰明的優化。 – 2010-03-21 18:37:24