blender 绑骨rigify卡顿优化
blender不是游戏引擎,没有设计性能分析工具,有的话也只能在专业的调试工具(如VisualCode MSVC)里下载源码编译一遍才行。
那么就从做对照试验开始吧
卡顿因素:
https://docs.blender.org/manual/en/2.79/render/blender_render/optimizations/performance.html
而本次实验得出:
-
删除物体与骨骼的自定义属性,这与blender内第三方插件的实时计算有关 (一个完整的HumanRig-rigify 有1000条骨骼)
-
分离物理骨骼与角色控制骨骼,做2个独立的物体,用约束器同步物理效果
-
修改器堆栈:尽量应用,只剩一个骨架修改器;
可使用SKkeeper,保留形变键shapeKey同时应用修改器
blender应该引入cached modifier
机制,对参与运算的修改器自动做一个缓存(如果要用修改器做关键帧动画,则更应该缓存这些顶点) -
高密度网格(本次没有出现)
-
blender应该允许playback回放超过60fps(可能开了垂直同步,关不掉的那种),如果允许每秒无回放帧率限制,blender就能做实时转播了(要把视图降噪关掉,重影)
物理骨骼分离后,从5fps→15fps
本次发现删除VRM和MMD的自定义属性,从15fps→30fps
应用修改器后30fps→45fps
删除shapekey没有提升
删除物理模拟后45→47fps
使用以下脚本删除自定义属性
import bpy
for bone in bpy.context.active_object.pose.bones:
d=[]
for prop in bone.keys():
d.append(prop)
for prop in d:
try:
del bone[prop]
except:
print(prop)
pass
for obj in bpy.context.selected_objects:
d=[]
for prop in obj.keys():
d.append(prop)
for prop in d:
try:
del obj[prop]
except:
print('\t\t\t',prop)
pass