忘却まとめ

Blenderの中級者・上級者向けの踏み込んだ情報や、アドオン・3DCGに関する情報を記事にします

シミュレーションキャッシュのベイク(ptcache.bake)でエラーが出る場合の解決方法【Blender / Python】

Blender

更新日:

Blenderのクロスシミュレーションのベイクをptcache.bakeコマンドから実行しようとしても、下記のようなエラーが出てベイクできない。

bpy.ops.ptcache.bake(bake=True)
> RuntimeError: Operator bpy.ops.ptcache.bake.poll() failed, context is incorrect

解決法

オペレーターにシーン・アクティブオブジェクト・シミュレーションのモディファイアのポイントキャッシュ情報を渡す必要がある模様。

ベイクをクリアする際(ptcache.free_bake)も同様の情報を渡す。

obj = bpy.context.object
for mod in obj.modifiers:
    if mod.type == 'CLOTH':
        override = {'scene': bpy.context.scene, 'active_object': obj, 'point_cache': mod.point_cache}
        bpy.ops.ptcache.free_bake(override)
        bpy.ops.ptcache.bake(bake=True)
        break

3Dモデルなどの制作依頼はこちら

-Blender

Copyright© 忘却まとめ , 2022 All Rights Reserved Powered by STINGER.