캐릭터 집합의 중간 노드의 연결/재연결을 고려하다
※ 이 경우 강자는 아래 그림을 보면서 "그렇구나"라고 고개를 끄덕이며 함께 술을 마실 수 있는 지구인을 말한다.
예를 들어, 컨트롤러에 삽입될 애니메이션 노드
다른 컨트롤러에 삽입(이식)하고 싶은 경우가 있어요.
컨트롤러 노드와 애니메이션 곡선 노드의 대응 관계가 간단하다면
쉽게 파악할 수 있는 각본화는 조금만 노력하면 완성할 수 있다.
하지만'아트리트'가 캐릭터집에 등록되면
애니메이션 노드는 특집중에 직접 삽입되지 않고 중개 캐릭터 집합을 통해 컨트롤러의 특집을 구동한다.
처음 그림에서 말한 것은 왼쪽의 노드군이죠.
중간에 매우 어리석은 가늘고 긴 캐릭터 설정이 있는데 그것을 끼고 오른쪽에 붙인 것은 컨트롤러이고 왼쪽의 지느러미가 잘 만들어지지 않은 것은 애니메이션 노드(입이 좋지 않다)이다.
이 왼쪽 노드 그룹의 지느러미 부분을 오른쪽 노드 그룹의 적당한 위치에 삽입하기를 바랍니다.
즉
캐릭터 설정을 통해 애니메이션 노드를 연결하려면
귀찮아.
특집의 연결을 확인하다
특집의 연결 상황을 확인하고 싶을 때
기본적으로 사용listConnections.
여기에는 PyMEL의 inputs/outputs를 가로로 사용합니다.
inputs
outputs
어떤 노드를 대상으로 inputs/outputs를 실행하면 이 노드와 연결된 노드나 삽입된 빨대를 조사합니다.
그 중에서 실제 작업은listConnections이다
listConnections에 있는 옵션을 직접 사용할 수 있습니다.
주로
p
c
를 사용하는데 어느 것을 더할까요?자주 잊어버리기 때문에 총괄해 봅시다.
inputs/outpus (선택 없음)
'녹색' 노드를 대상으로 inputs/outputs를 선택 없이 실행합니다
실행 결과로 빨간색 노드를 반환합니다.
.inputs()
왼쪽 노드,오른쪽 노드
여러 개가 연결되어 있을 수 있으며 목록에서 되돌아옵니다.
p=True
.outputs()
효력이 발생하면 집행한다.마찬가지로 빨간색으로 표시된 요소다.
객체 노드(녹색)에서 내보낸 연결된 노드(선택되지 않은 노드)를 삽입합니다.
꽂힌 빨대 돌려줄게.
p(plugs)
에서 대상 노드의 연결에 입력한 아웃사이드 노드의 보기.inputs(p=True)
에서 대상 노드에서 출력된 연결의 측면 노드의 보기얻을 수 있다.
c=True
.outputs(p=True)
유효한 경우조금 이해가 안 가지만.
선택적으로 되돌아오는 노드와 이 노드가 삽입되어 보기
이중 배열로 되돌아오다.
(이중 배열 성형을 할 수 있는 건 확실히 PyMEL 디자인이에요. cmds라면 리스트를 간단하게 돌려줄 것 같아요.)
c(connections)
에서 연결된 노드와 연결을 삽입하는 특집.inputs(c=True)
에 연결된 뷰어 및 연결 삽입 노드 삽입...이 조합으로 답장하면 언제 즐거울까??
p=True, c=True
.outputs(c=True)
와 p
모두 유효합니까?두 결과를 합쳐 연결된 노드를 연결하는 아웃/오프사이드 특집
다 돌아올 것 같아서.
그러나 직감과는 반대로 아래 그림에서 빨간색 요소↓
연결된 흡입관이 이중 배열로 되돌아오다.
그리고 노드도 되돌아와서 배열이 복잡해도 사용하기 어려워요.
Atrict 객체 자체에 node 메서드가 있으므로 노드를 가져올 수 있습니다.
필요에 따라 그걸 쓰면 돼.
캐릭터 설정을 통해 애니메이션 노드 탐색
우선 대상 노드를 삽입한 캐릭터 집합의 특집을 조사한다
거기서 애니메이션 노드의 특집을 조회합니다.
데이터 소스ctl 변수로
target_ctl.inputs(p=True,c=True)
이렇게 하면 수측(target ctl)/출측(캐릭터 집합) 쌍방의 특집을 얻을 수 있다.일단 전자를 target이라고 할게요.그다음은 src.아웃풋에 넣기로 했어요.
for target_input,src_output in target_ctl.inputs(p=True,c=True):
# target_input : 受け側(対象ノード側のアトリビュート)
# src_output : 出し側(キャラクターセット側のアトリビュート)
src_output에 Attribute 객체 포함이 녀석도 inputs/outputs 방법이 있어.
그 특집에 대한 입력과 출력을 조회할 수 있습니다.
여기에 입력한 애니메이션 노드
c
를 보려면 선택 없이 실행하면 됩니다.이번 애니메이션 노드 자체는 별다른 일이 없는데, 목적은 특집을 바꾸기 위해서이다.
.inputs()
와 p 옵션이 적용되면 실행됩니다.이것도 명단에서 반납하겠습니다.
캐릭터 집합의 한 Atrict에 여러 개의 노드가 입력되는 것을 상상하기 어려워 [0]로 툭 꺼낸다.
for target_input,src_output in target_ctl.inputs(p=True,c=True):
anim_node_output = src_output.inputs(p=True)[0]
캐릭터를 바꿀 수 있는 캐릭터 설정도 조사해야 돼요.
동일한 방식으로 이전에 조사한 애니메이션 노드를 특시하다
다른 캐릭터 세트에 꽂혀있는 곳이 좋은지 확인해 보세요.
for new_target_input,chr_attr in new_target_ctl.inputs(p=True,c=True):
# new_target_input : 受け側(対象ノード側のアトリビュート)
# chr_attr : 出し側(キャラクターセット側のアトリビュート)
하는 일은 똑같은데 뭘 해야 할 게 별로 없어요.극본의 난이도가 이러쿵저러쿵하는 것보다 이름을 바꾸는 것을 생각하고 어느 안에 무엇을 넣었는지 상상하는 것이 좀 번거롭다.
애니메이션 노드 연결하기
그리고 양쪽의 for를 돌려줍니다.
목표 노드와 new 목표 노드의 빨대 이름이 일치할 때
애니메이션 노드의 특집을 캐릭터 집합의 특집에 연결하기
이런 내용을 쓰면 된다.
# 前略
attr_longName = target_input.longName()
# 中略
new_attr_longName = new_target_input.longName()
if new_attr_longName == attr_longName:
anim_node_output >> chr_attr
↑는 실제로 for를 반복적으로 회전하기 때문에 축진은 편이된다.요약하자면이런느낌↓
from pymel import core as pm
target_ctl,new_target_ctl = pm.selected()
for target_input,src_output in target_ctl.inputs(p=True,c=True):
anim_node_output = src_output.inputs(p=True)[0]
attr_longName = target_input.longName()
for new_target_input,chr_attr in new_target_ctl.inputs(p=True,c=True):
new_attr_longName = new_target_input.longName()
if new_attr_longName == attr_longName:
anim_node_output >> chr_attr
문자 세트로 등록된 노드 A 및 BA→B 순서로 이 스크립트를 선택하고 실행하는 경우
A측의 캐릭터 설정에 삽입된 애니메이션 노드는 B측의 캐릭터 설정이 같은 아동목에 삽입되었다.
변수를 설명하는 중이라 생각보다 줄 수가 많아요.
만약 그렇게 하지 않는다면, 대략 절반의 행수가 있을 것이다.
이 연결은 손으로 할 수 있어요.
캐릭터 설정은 등록된 특집까지 뻗어 수백 줄에 달할 수 있다
노드 편집기에서도 귀찮아요.처음 그림처럼.
각본으로 처리하는 것은 인도적이다.
그리고 컨트롤러에 콘덴서를 설치했다면pairblend도 고려해야 하기 때문에 더욱 번거롭다.
Reference
이 문제에 관하여(캐릭터 집합의 중간 노드의 연결/재연결을 고려하다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/it_ks/articles/423f7f9200465e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)