When I use Library Overrides, I get a lot of ValueError and AssertionError error messages in the console.
This happens even when the project file does not contain any MMD models.
The reason for the problem seems to be that Blender is trying to access each custom property without using the panel's poll function. The error occurs in the handler function of the property get.
This PR changes to validate prop.id_data in the get handler functions which causes the problem.
Steps for reproduce the error (2.91, 2.92)
Creating a library file.
Create a new project
Add a Cube
Save to library_override_test.blend
Linking a library and library override.
Create a new project
File > Link > library_override_test.blend > Object > Cube
Right-click the Cube on the Outliner and run ID Data > Add Library Override.
Select the Cube on the Outliner and deselect it repeatedly
Traceback (most recent call last):
File "~/.config/blender/2.92/scripts/addons/mmd_tools/properties/root.py", line 165, in _getVisibilityOfMMDRigArmature
rig = mmd_model.Model(prop.id_data)
File "~/.config/blender/2.92/scripts/addons/mmd_tools/core/model.py", line 55, in __init__
raise ValueError('must be MMD ROOT type object')
ValueError: must be MMD ROOT type object
File "~/.config/blender/2.92/scripts/addons/mmd_tools/properties/root.py", line 164, in _getVisibilityOfMMDRigArmature
Traceback (most recent call last):
File "~/.config/blender/2.92/scripts/addons/mmd_tools/properties/root.py", line 165, in _getVisibilityOfMMDRigArmature
rig = mmd_model.Model(prop.id_data)
File "~/.config/blender/2.92/scripts/addons/mmd_tools/core/model.py", line 55, in __init__
raise ValueError('must be MMD ROOT type object')
ValueError: must be MMD ROOT type object
File "~/.config/blender/2.92/scripts/addons/mmd_tools/properties/root.py", line 164, in _getVisibilityOfMMDRigArmature
Traceback (most recent call last):
File "~/.config/blender/2.92/scripts/addons/mmd_tools/properties/camera.py", line 35, in _getMMDCameraAngle
cam = __get_camera(prop.id_data)
File "~/.config/blender/2.92/scripts/addons/mmd_tools/properties/camera.py", line 18, in __get_camera
cam = mmd_camera.MMDCamera(empty).camera()
File "~/.config/blender/2.92/scripts/addons/mmd_tools/core/camera.py", line 15, in __init__
raise ValueError('%s is not MMDCamera'%str(obj))
ValueError: <bpy_struct, Object("Cube") at 0x7feb3e1b8e08> is not MMDCamera
File "~/.config/blender/2.92/scripts/addons/mmd_tools/properties/camera.py", line 34, in _getMMDCameraAngle
Traceback (most recent call last):
File "~/.config/blender/2.92/scripts/addons/mmd_tools/properties/camera.py", line 35, in _getMMDCameraAngle
cam = __get_camera(prop.id_data)
File "~/.config/blender/2.92/scripts/addons/mmd_tools/properties/camera.py", line 18, in __get_camera
cam = mmd_camera.MMDCamera(empty).camera()
File "~/.config/blender/2.92/scripts/addons/mmd_tools/core/camera.py", line 15, in __init__
raise ValueError('%s is not MMDCamera'%str(obj))
ValueError: <bpy_struct, Object("Cube") at 0x7feb3c31c208> is not MMDCamera
File "~/.config/blender/2.92/scripts/addons/mmd_tools/properties/camera.py", line 34, in _getMMDCameraAngle
Traceback (most recent call last):
File "~/.config/blender/2.92/scripts/addons/mmd_tools/properties/camera.py", line 43, in _getIsPerspective
cam = __get_camera(prop.id_data)
File "~/.config/blender/2.92/scripts/addons/mmd_tools/properties/camera.py", line 18, in __get_camera
cam = mmd_camera.MMDCamera(empty).camera()
File "~/.config/blender/2.92/scripts/addons/mmd_tools/core/camera.py", line 15, in __init__
raise ValueError('%s is not MMDCamera'%str(obj))
ValueError: <bpy_struct, Object("Cube") at 0x7feb3e1b8e08> is not MMDCamera
File "~/.config/blender/2.92/scripts/addons/mmd_tools/properties/camera.py", line 42, in _getIsPerspective
Traceback (most recent call last):
File "~/.config/blender/2.92/scripts/addons/mmd_tools/properties/camera.py", line 43, in _getIsPerspective
cam = __get_camera(prop.id_data)
File "~/.config/blender/2.92/scripts/addons/mmd_tools/properties/camera.py", line 18, in __get_camera
cam = mmd_camera.MMDCamera(empty).camera()
File "~/.config/blender/2.92/scripts/addons/mmd_tools/core/camera.py", line 15, in __init__
raise ValueError('%s is not MMDCamera'%str(obj))
ValueError: <bpy_struct, Object("Cube") at 0x7feb3c31c208> is not MMDCamera
File "~/.config/blender/2.92/scripts/addons/mmd_tools/properties/camera.py", line 42, in _getIsPerspective
Traceback (most recent call last):
File "~/.config/blender/2.92/scripts/addons/mmd_tools/properties/rigid_body.py", line 73, in _get_size
return getRigidBodySize(prop.id_data)
File "~/.config/blender/2.92/scripts/addons/mmd_tools/core/model.py", line 28, in getRigidBodySize
assert(obj.mmd_type == 'RIGID_BODY')
AssertionError
File "~/.config/blender/2.92/scripts/addons/mmd_tools/properties/rigid_body.py", line 72, in _get_size
Traceback (most recent call last):
File "~/.config/blender/2.92/scripts/addons/mmd_tools/properties/rigid_body.py", line 73, in _get_size
return getRigidBodySize(prop.id_data)
File "~/.config/blender/2.92/scripts/addons/mmd_tools/core/model.py", line 28, in getRigidBodySize
assert(obj.mmd_type == 'RIGID_BODY')
AssertionError
File "~/.config/blender/2.92/scripts/addons/mmd_tools/properties/rigid_body.py", line 72, in _get_size
When I use Library Overrides, I get a lot of
ValueError
andAssertionError
error messages in the console. This happens even when the project file does not contain any MMD models.The reason for the problem seems to be that Blender is trying to access each custom property without using the panel's
poll
function. The error occurs in the handler function of the propertyget
.This PR changes to validate
prop.id_data
in theget
handler functions which causes the problem.Steps for reproduce the error (2.91, 2.92)
Creating a library file.
library_override_test.blend
Linking a library and library override.
File > Link > library_override_test.blend > Object > Cube
ID Data > Add Library Override
.