歡迎光臨
每天分享高質量文章

16行Python實現3D破壞球效果

來源:Python程式員

ID:pythonbuluo

以下是製作上面炫酷動畫所需的全部程式碼:

(如果你對Blender Python完全陌生,訪問連結:http://slicker.me/blender/3d_mandelbrot.htm瞭解如何複製貼上程式碼。)

我們需要三組剛體(當您在Blender的物件上開啟一個剛體的屬性時,Blender將模擬與其它剛體的碰撞):

1.平面
    第2行程式碼建立了一個簡單的平面,立方體將放置在該平面上。為了防止它因重力而墜落,我們將其設為“受體”[第4行程式碼]。

2. 圓環
    x迴圈[5-12行程式碼]建立由18個圓環組成的鏈條,它們將撞擊牆體:
    [6-8行]確定它們的坐標並沿Y軸依次旋轉90°。旋轉是透過x除以2的餘數(獲得“0-1-0-1-0…”序列)乘以90度(弧度1.5708)實現的。
    [第10行]將它們的碰撞形狀設定為“MESH”。如果設定為預設的”Convex Hull“,Blender就不會考慮到中間的孔洞,鏈條就會脫落。
    [第11-12行]將第一個圓環的”Enabled”屬性設定為false,防止由於重力而墜落。這樣它就固定在那牽住整個鏈條。

3. 立方體
    在13-16行程式碼中,我們建立了一個由10個立方體組成的列,重量非常輕,以便在撞擊時飛得更遠。
    因為z迴圈[第13行]巢狀在x迴圈[第5行]中,我們將得到一個18X10的立方體組成的牆。

    好了!當您點選時間線上的“播放”時,鏈條就會掉下來,撞上立方體並讓它們飛起來!

現在我們讓最後一個圓環變大一點,讓它看起來更像一個實際的破壞球,而不是用一根鏈子打破牆壁。為了有更酷的碰撞效果,將第6-8行程式碼更改為:

下載相關程式碼請點選此連結:https://od.lk/d/OF8xMzk3MDkxODVf/wreck.blend

你還要打破別的東西嗎?讓我們來撞碎這個壞小子:

將第13-16行程式碼替換為:

併在程式碼的最開始處新增以下行,這樣才能使用sin和cos三角函式:

享受破壞的過程吧!

英文原文:http://slicker.me/blender/wreck.htm
譯者:錢利鵬

《Linux雲端計算及運維架構師高薪實戰班》2018年11月26日即將開課中,120天衝擊Linux運維年薪30萬,改變速約~~~~

    *宣告:推送內容及圖片來源於網路,部分內容會有所改動,版權歸原作者所有,如來源資訊有誤或侵犯權益,請聯絡我們刪除或授權事宜。

    – END –


    贊(0)

    分享創造快樂