【MAYA】 어느 인스턴스의 부모를 선택 상태로 한다
스크립트 편집기에 붙여넣기 위한 것입니다. 선반에 등록하면 편하게 사용할 수 있다고 생각합니다.
MAYA2018 + MacOS Sierra에서 작동 확인 중입니다.
사용법
먼저 인스턴스의 상위 변환이 선택되면,
상위 인스턴스의 상위 변환이 선택됩니다.
먼저 인스턴스 자체가 선택되면,
상위 인스턴스 자체가 선택됩니다.
자신이 부모인 경우에도 메시지가 표시됩니다.
그룹의 인스턴스 상태 등에도 대응합니다.
인스턴스가 없는 경우의 오류.
지원되지 않는 패턴
선택 노드의 직접 자녀 중 인스턴스가 없는 경우. 트리를 재귀적으로 탐색하지 않습니다.
빠른 실행 코드
import pymel.core as pm
def get_first_instance(node):
"""
インスタンスの親(=0番目のインスタンス)を得る
:param node: 親を探すインスタンスノード参照
:type node: pymel.nodetypes.DagNode
:return: 見つかった親ノードとエラー情報ストリング
:rtype: tuple of DagNode and str
"""
org_node = node
target_is_children = False
is_instanced = node.isInstanced()
if not is_instanced:
# 選択がインスタンスでない場合は子供を探す
target_is_children = True
children = pm.listRelatives(node)
node = None
for child_node in children:
if child_node.isInstanced():
node = child_node
break
if node is None:
return None, '対象インスタンスが見つかりません。'
instances = node.getOtherInstances()
instance_number = node.instanceNumber()
if instance_number == 0:
return org_node, 'ノード自身が親です。'
found = None
for ins_node in instances:
if ins_node.instanceNumber() == 0:
found = ins_node
break
if found is not None:
if target_is_children:
parents = pm.listRelatives(found, parent=True)
return parents[0], None
else:
return found, None
return None, '親インスタンスが見つかりません。'
def select_first_instance():
selected = pm.selected()
if len(selected) == 0:
pm.confirmDialog(title='Info', message='ノードを選択して下さい。', button=['Ok'])
return
node = selected[0]
first_node, error_info = get_first_instance(node)
if error_info is not None:
pm.confirmDialog(title='Info', message=error_info, button=['Ok'])
if first_node is not None:
print first_node
pm.select(first_node)
select_first_instance()
del select_first_instance
del get_first_instance
Reference
이 문제에 관하여(【MAYA】 어느 인스턴스의 부모를 선택 상태로 한다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/harayoki/items/3649b87f62ca1ca70396
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import pymel.core as pm
def get_first_instance(node):
"""
インスタンスの親(=0番目のインスタンス)を得る
:param node: 親を探すインスタンスノード参照
:type node: pymel.nodetypes.DagNode
:return: 見つかった親ノードとエラー情報ストリング
:rtype: tuple of DagNode and str
"""
org_node = node
target_is_children = False
is_instanced = node.isInstanced()
if not is_instanced:
# 選択がインスタンスでない場合は子供を探す
target_is_children = True
children = pm.listRelatives(node)
node = None
for child_node in children:
if child_node.isInstanced():
node = child_node
break
if node is None:
return None, '対象インスタンスが見つかりません。'
instances = node.getOtherInstances()
instance_number = node.instanceNumber()
if instance_number == 0:
return org_node, 'ノード自身が親です。'
found = None
for ins_node in instances:
if ins_node.instanceNumber() == 0:
found = ins_node
break
if found is not None:
if target_is_children:
parents = pm.listRelatives(found, parent=True)
return parents[0], None
else:
return found, None
return None, '親インスタンスが見つかりません。'
def select_first_instance():
selected = pm.selected()
if len(selected) == 0:
pm.confirmDialog(title='Info', message='ノードを選択して下さい。', button=['Ok'])
return
node = selected[0]
first_node, error_info = get_first_instance(node)
if error_info is not None:
pm.confirmDialog(title='Info', message=error_info, button=['Ok'])
if first_node is not None:
print first_node
pm.select(first_node)
select_first_instance()
del select_first_instance
del get_first_instance
Reference
이 문제에 관하여(【MAYA】 어느 인스턴스의 부모를 선택 상태로 한다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/harayoki/items/3649b87f62ca1ca70396텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)