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

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)

    分享創造快樂