자세한건 차 후 추가 업로드
원문 출처: http://xischrist.blog.me/110187051351
스프링 컨트롤러란?
스프링에 매달린듯 탄력 애니메이션을 주는 컨트롤러다.
보이지 않는 고무줄에 매달려 있는 것 처럼 탄력적으로 흔들어 주는 특성이다.
일반 애니메이션 키로는 표현하기 까다로운 흔들림 표현에 아주 적합하다.
보통은 세컨들리 애니메이션 표현(캐릭터의 몸에 부착된 여러가지 애니메이션)에 많이 사용된다.
스프링 컨트롤러를 지정하게 되면 원래의 포지션 컨트롤러 위에 스프링 컨트롤러가 추가된다.
키 애니메이션 움직임 위에 스프링 기능을 더해주는 것.
예를들어 오브젝트를 하나 생성하고 Position XYZ 컨트롤러를 Spring으로 바꾸게 되면
이렇게 스프링 관련 XYZ가 추가로 생성되고 기존의 Position XYZ는 하위목록에 그대로 있다.
애니메이션 키를 주게 되면 미세하지만 스프링 기능에 의해 움직이는 것을 확인할 수 있다.
Mass를 500으로 주니 좀 더 흔들리게 되었다.
| 여기서 주목할 점은 스프링(고무줄타겟)을 여러개 지정해 줄 수 있다는 것이다. Self Influence는 자신의 원래 움직임이다. 여기에 Add 버튼을 이용해 여러개의 스프링 타겟을 추가할 수 있다. 그렇게 되면 여러개의 고무줄에 매달린 하나의 오브젝트의 형태가 된다. * 만약 스프링을 적용한 오브젝트를 링크로 연결한 부모 오브젝트가 있다면, Self Influence는 자체 애니메이션 + 부모 오브젝트로 상속받은 애니메이션의 합이된다. |
스프링 컨트롤러의 속성을 알아보자.
Mass/Drag는 스프링 컨트롤러를 지정한 오브젝트에 대한 설정이고 Tension/Damping은 오브젝트를 제어할 스프링에 대한 설정이다.
| Mass | 오브젝트의 무게 (무거울 수록 스프링 표현이 과장됨) |
Drag | 공기저항 (클 수록 저항이 강해짐 마치 물속에서 움직이듯) |
Springs Add | 스프링 영향을 줄 오브젝트 추가 (복수 선택 가능. Self Influence는 제거 불가능) |
Tension | 팽팽함. 질긴 강도. (높을 수록 뻣뻣) |
Dampening | 진동의 감폭. (탄력이 감쇄되는 정도) |
* 여러개의 스프링 | 이 경우에는 스프링 타겟 별로 개별 Tension/Dampening 설정이 가능하다. |
External Forces Add | Gracity, Wind 등의 Space warps 오브젝트를 추가해줌 (중력, 바람의 영향) |
Strat Frame | 스프링이 작동되는 시작지점 |
Iterations | 스프링의 정확도 (디폴드 = 2, 작동 stop = 0) |
X Y Z Effect | 스프링이 반영되는 정도 (퍼센트 단위, 월드 좌표계 기준, 1000까지 입력 가능) |
스프링 컨트롤러의 최대 단점은 반복(Looping)이 안된다는 점이다.
특히 게임에서 사용할 경우에 반복은 필수 요수인데 이런점을 보완하기 위해 Blend 레이어식으로 애니메이션 키를 강제로 시작과 끝을 이어주거나,
모션빌더에서 시작과 끝을 섞어주거나, 게임 내에서 실시간 Spring을 연산하는 방식이 있다.
실시간으로 연산하는 방식을 업계용어로 지글본(Jiggle Bone)이라고 한다.
[ 지글본(Jiggle Bone)이란? [
악세서리나 망토 포니테일 등 캐릭터의 움직임에 의해 2차적으로 계속 움직여주는 세컨들리 애니메이션에 가장 선호되는 방식으로
게임 환경에서 실시간으로 연산해 줌으로서 가장 자연스러운 애니메이션을 기대할 수 있다.
꼭, 게임 환경이 아니어도 Max 상에서 실시간으로 스프링을 만들어 줄 수 있는데
스크립트를 이용해 실시간 효과를 만들어주는 리얼타임 스프링이 있다.
Realtime Spring 이라는 이름의 스크립트 파일을 불러오면 간단한 버튼만으로 실시간 스프링 본을 만들 수 있다.
아래 링크에 가면 튜토리얼과 스크립트 소스를 받을 수 있다.
스크립트스팟 이라는 아래의 사이트에서는 검색을 통해 맥스에서 사용되는 다양한 스크립트를 무료로 받을 수 있다.
] Realtime Spring 리얼타임 스프링 (스크립트) ]
리얼타임 스프링 스크립트 툴 다운로드 주소 :
http://www.scriptspot.com/3ds-max/scripts/realtime-spring-and-distance-constraint
최근에는 다이나믹스(Dynamics)라는 이름으로 최신 스크립트가 올라왔다.
자동차 리깅에 사용하는 예제로 나왔는데 자세히 살펴보진 않았지만 다양한 응용이 가능한 듯 보인다.
다이나믹스 다운로드 및 관련 페이지 :http://www.scriptspot.com/3ds-max/scripts/sox-dynamics
http://cafe.naver.com/pinksox/3470
] 리얼타임 스프링 스크립트로 망토를 하나 만들었다.
스크립트 스팟에서 받은 스크립트를 맥스로 불러오면 이런 창이 하나 열린다.
이 스크립트는 포인트 더미를 본(Bone) 오브젝트로 연결해 스프링 설정을 해주는 기능이다.
빨간 망토용 오브젝트를 대충 만들고 3줄의 포인트 더미를 생성했다.
그리고 연결되기 원하는 더미를 선택하고 스크립트 창의 apply on Points 버튼을 누르면,
아래와 같이 포인트 더미 사이로 초록색 본(Bone)이 생성되고 스프링 기능이 추가된다.
* 이때 주의 할 점은 포인트 더미를 선택할때의 순차이다. 순서에 의해 마스터 역할의 본 위치가 바뀌기 때문인데
이를 위해서 튜토리얼(사이트에 있음)에서 가르쳐 주듯이 선택방식을 박스형에서 페인트 형 으로 바꿔주면 쉽다.
빨간색의 큰 더미가 마스터 더미로서 선택하게 되면 아래와 같이 조절 버튼이 있다.
스프링 기능을 ON/Off 할 수 있고 Tension/Damping을 자식으로 포함된 작은 더미들의 수치와 함께 조절할 수 있다.
빨간색 마스터 더미들을 초록색 상단의 더미에 링크해 주면 전체를 움직일 수 있다.
본이 완성되면 망토 오브젝트에 skin을 적용해 bone 관련만 뼈대로 추가해주자.(더미는 추가X)
결과를 확인해보자.
* 예제에 사용된 스크립트는 파일로 첨부했습니다. (출처는 스크립트스팟)