2010-10-15 85 views
1

在3D Max工作室中,我回想起有一個函數(我記不清函數的名稱,對不起)將3D模型切割成兩個。例如,你創建一個球體,然後在中間切割它,留下2個半球。現在,人體怎麼樣?想象一下武士在胃裏切斷一個敵人,現在敵人的模型會變成2個模型:一個是從頭到腹的上部,另一個是從胃到腳的下部。另外,爲了防止玩家看到切割模型內部,還必須在兩個模型中放置額外的多邊形。 (最好在這個多邊形中添加血液紋理,給人一種印象,認爲這是身體內的血液)對不起,如果我的解釋不好,你明白我想說什麼嗎?關於切割角度分割3D模型

在3D Max Studios中,我們可以做到以上。現在,在3D編程方面,如果我想實現這樣的目標,我需要做些什麼?當然,一種便宜的方法是預先製作切割模型,但這是不現實的。

我正在尋找一種方法來將模型切割成實時切割角度。這可能嗎?

回答

1

您需要兩個角度來表示3個維度中的「切割角度」。

在數學中使用點和法線可能更容易,定義了將模型分成兩部分的plane

然後,您可以確定模型的哪些部分位於平面的一側,哪些部分位於另一側。將每個點插入平面方程中,例如

ax + by + cz + d 

..如果結果爲> 0,則點是在一側上,並且,如果它是0 <,它是在其他。

您可以檢測與平面相交的三角形(因爲某些頂點位於一側,某些位於另一側),並將其分割爲多個三角形以保持「剪切」直。

 
     /\ 
    /\ 
    --------------- (cut) 
    /\ /\ 
/\/\ 
/ \/ \ 
    ------------ 

(請注意,您只需要兩個三角形的線下 - 我不是一個藝術家:)

然後,如果你兩個切實體模型,你需要「補丁」過您需要將tessellate(或triangulate)分界面上的點數設置爲create a new polygon。這並不總是很容易,特別是如果多邊形不是convex

1

這就是所謂的clipping在任何計算機圖形文本中都有用於剪切多邊形的標準算法。