程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

blender python script 踩坑記錄

編輯:Python
更新日志
2022-8-1
增加3條地雷

地雷好多啊,痛苦啊

  1. 版本3.2,在 script 中設置或跳轉到指定場景幀時,絕對要使用 scene.frame_set(xxx) !絕對不能使用 scene.frame_cur = xxx ,因為直接設定 scene.frame_cur 不會刷新場景全部物體!從而導致你的 obj.matrix 或同類值 都是不變的!

  2. 版本3.2,如果你的NLA軌道裡面有太多的幀(感覺明顯時大約是800幀),會導致NLA軌道的幀插入速度會顯著變慢!
    如果要加速,必須要自己用腳本 建新的NLA軌道(也可以是已有軌道),並一次性分配足夠多的空關鍵幀,再逐個設定,這樣才行!
    坑爹的自帶烘焙用的就是幀插入的方法,導致密集烘焙400根骨骼8000幀時,需要時間居然長達16小時!
    這個地雷是我在寫 分段烘焙函數 時發現的,因為烘焙花了我超級久的時間,分段烘焙時,發現一開始挺快的,後面越來越慢。。。後面我寫了個快速烘焙的函數,10分鐘就把400根骨骼8000幀烘焙完了 ORZ,但寫腳本時踩了一堆雷又花掉了我12小時的時間。。。。

  3. 在直接獲得對象,姿態骨骼或編輯骨骼的 矩陣,位置,旋轉,縮放等之類的 Matrix,Vector 的值, 並保存到一個地方的時候(例如 pose_bone.location 和 pose_bone.matrix),一定要使用 copy !(例如 pose_bone.location.copy() ),因為這些值是會被就地更改的,在 scene.frame_set(xxx) 的時候 !如果不使用 copy。你會發現你保存下來的矩陣都變了。。。


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved