Total Articles 442
jnt1 = cmds.listConnections('ikHandle1')
jnt2 = cmds.listRelatives(jnt1)
def test(jnt,obj):
t_jnt = cmds.listRelatives(jnt)
if obj in t_jnt:
print t_jnt
#return t_jnt
else:
test(t_jnt[0],obj)
test(jnt1[0],jnt1[1])
조인트를 찾아가다 조건이 맞으면 그 조인트를 출력할줄 알았는데
print는 되는데 return이 안되는 이유가 있나요?
재귀함수를 잘못 이해하고 있는것 같아서 질문 드립니다.;;

return해도 그값을 저장받고 있지 않으니까요.
이렇게 해보시구요.
jnt1 = cmds.listConnections('ikHandle1')
jnt2 = cmds.listRelatives(jnt1)
def test(jnt,obj):
t_jnt = cmds.listRelatives(jnt)
if obj in t_jnt:
#print t_jnt
return t_jnt
else:
return test(t_jnt[0],obj)
result = test(jnt1[0],jnt1[1])
print result
그리고 지금 로직에서는
t_jnt가 None일 경우를 대처하지 못하고 있는걸요?
jnt가 더이상 child node가 없으면
cmds.listRelatives(jnt)가 None을 return하니까요.
그것도 고려하시려면 이렇게...
from maya import cmds
jnt1 = cmds.listConnections('ikHandle1')
jnt2 = cmds.listRelatives(jnt1)
def test(jnt,obj):
print jnt, obj
t_jnt = cmds.listRelatives(jnt)
if t_jnt is None:
return None
elif obj in t_jnt:
return t_jnt
else:
return test(t_jnt[0],obj)
result = test(jnt1[0],jnt1[1])
print result