Maya
이미 설정되어 있는 lattice에 새 오브젝트를 연결하는 방법
쮠쮠
2009. 4. 6. 12:39
어떤 오브젝트에 lattice가 연결되어 있으며 애니메이션키 까지 잡혀있는 상태에
새로운 오브젝트를 추가하고 그 오브젝트가 lattice의 영향을 받아야 한다면 난감한 문제가
될 것이다.
하지만 lattice의 기본 작동 원리를 알고 있다면 쉽게 해결 할 수 있을것이다.
이를 해결하기 위해 나타난 문제점과 해결 방법을 제시해 본다.
우선 littce와 object의 연결 구조를 파악하기 위해 hypergraph를 열어 연결 상태를 확인해보자.
lattice를 수동으로 연결해 해결하고자 했지만 위 tweak 노드와 연결된 데이터 attribute가 무엇인지 확인하기 어렵고 연결이 불가능하다. 또 lattice에 연결된 key data를 다른 노드에 일일히 복사하여 사용한다는 것 자체도 너무나 비효율적으로 생각된다.
그렇다면 새로이 node를 수동적으로 만들어 사용하는 방법은 어떨까?
이도 필자가 생각해 봤지만 node의 attribute 를 수정하고 연결한다는 것도 자신이 잘 모른다면 매우 어려운 일이 될 수도 있다.
그래서 다음의 방법을 생각해 봤다.
위 node중 생성하고 연결하기 여러운 부분은 과감히 포기하고 연결하기 쉬운 부분과 핵심적인 연결 부분을 찾는 것이다.
위 node를 살펴보면 tweak node가 lattice의 정보를 받아 geometry shape node에 전달하는 것을 볼 수 있고 연결 또한 그리 어려워 보이지 않는다. 그렇다면 노드의 생성은 어떠할까 조금 어려워 보이지 않나? 따라서 수동적으로 생성할 것이 아니라 새로운 object에 latiice를 생성하고 필요한 부분의 정보만 연결 하는 것이 효율적으로 보인다.
자 일단 새로운 object에 lattice를 적용하고 두 오브젝트의 hypergraph node 연결을 보자
위 그림을 살펴보면 fdd 노드가 littice의 정보를 받아 shape 노드에 전달 함을 알 수 있다. 그리고 littice의 기본 적용 방식을 살펴보면 base node와 lattice 노드의 좌표 차이로 인해 deform이 발생된다. 위에서 말한 lattice의 작동 원리 이다.
따라서 base 와 lattice의 정보를 fdd 노드로 전달하면 새로 생성된 objcet 가 전 lattice의 영향을 받게 될 것이다. 새로 생성된 lattice의 base 와 lattice node를 삭제하고 새 object 의 fdd2 노드에 이미 존재하는 lattice와 base 노드를 연결하자. 어떤 속성을 연결해야 할지는 화살표를 살펴보면 알 수 있다.(구체적인 연결방법은 마야 유져라면 당연히 알고 있다 생각하고 설명은 하지 않는다)
연결 결과 다음의 hypergraph 와 결과를 보여준다.
위와 같은 방법을 생각한 것은 애니메이터 혹은 모델러로 부터 넘어온 데이터가 존재하고 이를 이용해 dummy object를 생성하여 dynamic simulation이 이뤄져야 하는데 또는 polygon이 아닌 nurbs로 연산이 이뤄져야 하는 경우도 있을 것이다.
필자도 어떤 cf 장면을 만들면서 위와 같은 난감한 상황이 발생했고 모델러에게 그리고 애니메이터에게 다시 작업을 해달라고 요구하는 것은 더 난감한 상황이 발생하리라 생각했기 때문에 연구를 한 것이다.
물론 이런것을 생각하면 모델링 단계에서 부터 dummy object를 생성하여 두 object에 lattice를 적용하면 위와 같은 불편함을 피할 수 있다. 하지만 그렇지 못한 경우 또는 여러 상황이 그렇지 못하다면 위 방법을 응용하여 여러가지를 해결 할 수 있으리라 생각된다.
----------------------------------------------------------------------------------------------------------------------------
물론 위 방법에서도 문제점이 없는 것은 아니다. object의 축좌표와 자체적 애니메이션등 몇몇 문제점으로 정확히 맞출수 없는 상황도 있다. 이는 개인이 조금더 연구를 한다면 해결되리라 생각한다.
새로운 오브젝트를 추가하고 그 오브젝트가 lattice의 영향을 받아야 한다면 난감한 문제가
될 것이다.
하지만 lattice의 기본 작동 원리를 알고 있다면 쉽게 해결 할 수 있을것이다.
이를 해결하기 위해 나타난 문제점과 해결 방법을 제시해 본다.
우선 littce와 object의 연결 구조를 파악하기 위해 hypergraph를 열어 연결 상태를 확인해보자.
lattice를 수동으로 연결해 해결하고자 했지만 위 tweak 노드와 연결된 데이터 attribute가 무엇인지 확인하기 어렵고 연결이 불가능하다. 또 lattice에 연결된 key data를 다른 노드에 일일히 복사하여 사용한다는 것 자체도 너무나 비효율적으로 생각된다.
그렇다면 새로이 node를 수동적으로 만들어 사용하는 방법은 어떨까?
이도 필자가 생각해 봤지만 node의 attribute 를 수정하고 연결한다는 것도 자신이 잘 모른다면 매우 어려운 일이 될 수도 있다.
그래서 다음의 방법을 생각해 봤다.
위 node중 생성하고 연결하기 여러운 부분은 과감히 포기하고 연결하기 쉬운 부분과 핵심적인 연결 부분을 찾는 것이다.
위 node를 살펴보면 tweak node가 lattice의 정보를 받아 geometry shape node에 전달하는 것을 볼 수 있고 연결 또한 그리 어려워 보이지 않는다. 그렇다면 노드의 생성은 어떠할까 조금 어려워 보이지 않나? 따라서 수동적으로 생성할 것이 아니라 새로운 object에 latiice를 생성하고 필요한 부분의 정보만 연결 하는 것이 효율적으로 보인다.
자 일단 새로운 object에 lattice를 적용하고 두 오브젝트의 hypergraph node 연결을 보자
따라서 base 와 lattice의 정보를 fdd 노드로 전달하면 새로 생성된 objcet 가 전 lattice의 영향을 받게 될 것이다. 새로 생성된 lattice의 base 와 lattice node를 삭제하고 새 object 의 fdd2 노드에 이미 존재하는 lattice와 base 노드를 연결하자. 어떤 속성을 연결해야 할지는 화살표를 살펴보면 알 수 있다.(구체적인 연결방법은 마야 유져라면 당연히 알고 있다 생각하고 설명은 하지 않는다)
연결 결과 다음의 hypergraph 와 결과를 보여준다.
위와 같은 방법을 생각한 것은 애니메이터 혹은 모델러로 부터 넘어온 데이터가 존재하고 이를 이용해 dummy object를 생성하여 dynamic simulation이 이뤄져야 하는데 또는 polygon이 아닌 nurbs로 연산이 이뤄져야 하는 경우도 있을 것이다.
필자도 어떤 cf 장면을 만들면서 위와 같은 난감한 상황이 발생했고 모델러에게 그리고 애니메이터에게 다시 작업을 해달라고 요구하는 것은 더 난감한 상황이 발생하리라 생각했기 때문에 연구를 한 것이다.
물론 이런것을 생각하면 모델링 단계에서 부터 dummy object를 생성하여 두 object에 lattice를 적용하면 위와 같은 불편함을 피할 수 있다. 하지만 그렇지 못한 경우 또는 여러 상황이 그렇지 못하다면 위 방법을 응용하여 여러가지를 해결 할 수 있으리라 생각된다.
----------------------------------------------------------------------------------------------------------------------------
물론 위 방법에서도 문제점이 없는 것은 아니다. object의 축좌표와 자체적 애니메이션등 몇몇 문제점으로 정확히 맞출수 없는 상황도 있다. 이는 개인이 조금더 연구를 한다면 해결되리라 생각한다.