def get_all_hide_mesh(pm_nodes):
"""
判断该物体是不是始终处于隐藏状态
物体显示 →出cache
物体隐藏
查找属性链接
帧 有显示 →出cache
表达式 →出cache
其他 递归
找到帧或表达式
其他 找父物体
Args:
pm_nodes: 传入一个物体列表,遍历获取所有物体及层级下的mesh节点
Returns:
"""
all_mesh = []
pass_node = []
cache_node = []
all_displayLayer = pm.ls(type='displayLayer')
for displayLayer in all_displayLayer:
if not displayLayer.v.get():
for obj in displayLayer.listConnections(type=['mesh', 'transform']):
if obj.nodeType() == 'mesh':
pass_node.append(obj)
pass_node.extend(obj.listRelatives(ad=1, type='mesh'))
for i in pm_nodes:
all_mesh.extend(i.listRelatives(type='mesh', ad=1))
if pm.nodeType(i) == 'mesh':
all_mesh.append(i)
for mesh in all_mesh:
obj = pm.PyNode(mesh)
if obj in pass_node:
continue
if obj.isVisible():
cache_node.append(mesh)
else:
while True:
print obj
if obj.v.get():
obj = obj.getParent()
else:
if get_keyframe(obj.v):
if obj.nodeType() == 'mesh':
cache_node.append(obj)
break
else:
if obj.nodeType() == 'mesh':
pass_node.append(obj)
pass_node.extend(obj.listRelatives(ad=1, type='mesh'))
break
return [cache_node, pass_node]
上一篇
合并动画层
2024-05-10
下一篇
替换reference,保留动画
2024-05-10