blender 绑骨rigify卡顿优化

blender不是游戏引擎,没有设计性能分析工具,有的话也只能在专业的调试工具(如VisualCode MSVC)里下载源码编译一遍才行。
那么就从做对照试验开始吧

卡顿因素:

https://docs.blender.org/manual/en/2.79/render/blender_render/optimizations/performance.html

而本次实验得出:

  1. 删除物体与骨骼自定义属性,这与blender内第三方插件的实时计算有关 (一个完整的HumanRig-rigify 有1000条骨骼)

  2. 分离物理骨骼与角色控制骨骼,做2个独立的物体,用约束器同步物理效果

  3. 修改器堆栈:尽量应用,只剩一个骨架修改器;
    可使用SKkeeper,保留形变键shapeKey同时应用修改器
    blender应该引入cached modifier机制,对参与运算的修改器自动做一个缓存(如果要用修改器做关键帧动画,则更应该缓存这些顶点)

  4. 高密度网格(本次没有出现)

  5. 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
posted @ 2023-06-13 14:17  Nolca  阅读(240)  评论(0编辑  收藏  举报