UConstraintBatch.ms

(이것만 있어도 됨)


AAA-UConstraintBatch.mcr


MassFX를 하다 보면, 귀찮은 점이 Contraint를 일일이 걸어줘야한다는 점이다.

그래서 지인이 만들어 준 스크립트.!! (대환님 감사합니다.


MassFX로 시뮬레이션 할 본들을 Dynamic Rigid Body로 만들어 준 후 선택한 상태에서 스크립으를 실행하면, contraint가 자동으로 생성, 정렬된다. 

*스크립트에서 만들어지는 Containt종류는 마지막에 생성되었던 종류 기준으로 생성되기 때문에, 첫 번째 본은 내가 쓸 contranit를 생성해주고 나서 아랫단부터 스크립트를 실행해 주면 된다. 





UConstraintBatch.ms파일은 스크립트 폴더에 넣고, 

경로>> C:\Program Files\Autodesk\3ds Max 2015\scripts



AAA-UConstraintBatch.mcr 파일은 맥스 작업창에 드래그앤 드롭 해주거나 아래 경로에 넣어준다. 그러면 Customize User Interface창의 카테고리에 보이게 됨. 

경로>> C:\Users\내컴터 이름\AppData\Local\Autodesk\3dsMax\2015 - 64bit\ENU\usermacros




*ms와 mcr의 차이 간략하게 설명. 


ms(맥스 스크립트): 실제 코드. ms안에 있는 내용을 mcr파일에 그대로 적어 넣어도 똑같이 실행이 된다. 좀 불편하더라도 mcr없이 단독으로 실행 가능하다. Run Script를 하거나, 화면에 그냥 드래그 앤 드롭을 하거나. 


mcr(매크로 스크립트):맥스상에서 단축기나 버튼으로 설정해서 쓸 수 있게된다. (아래 사진 참조. 나는 Ctrl+2번으로 지정해주었다.)



Posted by sunnysmileHJ
,


YupScript.ms


스크립트 출처

http://forum.unity3d.com/threads/3dsmax-y-up-script.220104/

*ms스크립트 사용법: 맥스 화면에 Drag&Drop 하면 맥스에 스크립트 창이 뜬다. 




원문 출처 http://blog.naver.com/blue9954/220615535678


[원문에서 퍼온 글.]

3DMAX는 생소하게 느껴지시는 분들이 많겠지만, 건축CG를 목적으로 만들어진 툴입니다. 따라서 AutoCAD와 동일하게 높이를 Z로 계산하지만, 게임엔진... 예를 들어 유니티의 경우 높이를 Y로 계산합니다. 마야의 경우 애초에 영상물을 만들 목적으로 개발되어 화면을 기준으로 높이를 Y로 계산하기에 아무 문제없지만, 맥스의 경우 오브젝트의 피봇을 Y축을 위로 올라오게 일일이 수정해 주어야 합니다.
 이러한 작업을 원버튼으로 해주는 스크립트입니다. 사용 방법은 첨부한 스크립트를 맥스에 드래그해 넣은 다음, 원하는 오브젝트들을 선택하고 새로생긴 창의 버튼을 눌러 주면 됩니다.



Z와 Y. 축이 다른 이유는 사용하는 좌표계가 다르기 때문.

맥스: 오른손 좌표계  // 마야, 언리얼, 유니티: 왼손 좌표계.


좌표계에 대한 자세한 건, 아래 링크 참조.

http://tartist.tistory.com/65

블로그 내용 중에 기억하고 싶은 것 

좌표계가 달라서 생기는 문제는 맥스에서의 프랍이 엔진으로 넘어갈 때 Y축으로 90도 돌아가는 현상이다. 모든 더미와 뼈들은 맥스에서 제작(오른손 좌표계)해서 넘어오기 때문에 자동으로 부모의 축을 따라가기 때문에 문제가 없지만, 무기에 붙은 소켓 더미는 언리얼에서 제작(왼손 좌표계)되면 좌표계가 달라서 프랍이 혼선이 생기게 된다. 

그래서 무기 축 더미는 엔진에서가 아닌 맥스에서 만들어서 사용하여 문제를 해결했다는 내용.  


 

테스트해 본 결과 리뷰.

왼쪽 주전자: 맥스에서 바로 꺼낸 주전자의 피벗을 보면 Z축이 위로 올라가 있는 것을 확인할 수 있다. 

오른쪽 주전자: 스크립트를 적용한 주전자. Y축이 위로 올라가 있다. 


보통 fbx로 익스포트 할 때 옵션을 아래 사진처럼 Y-up 으로 하고 익스포트를 하게 되어서 

맥스와 유니티, 언리얼을 오가며 보이는 캐릭터들의 방향에 육안으로 확인할 때의 다른점은 없었는데, 오늘 포스팅의 스크립트는 이대로 또 쓸 일이 있을 것 같다.

 예를들어, 메쉬만 엔진으로 데려갈 경우에 캐릭터가 90도 누워있는 현상은 익히 경험했기 때문이다. 이 스크립트를 사용하면, 맥스에서 보는 좌표와 엔진에서 보는 좌표가 동일하다는 장점이 있으니까. 







....궁금해서 테스트를 더 해볼까 한다... 축이 뭐길래. 


<물체의 축에 따라서 엔진에서의 차이.>

사진에서 왼쪽 유니티 인스펙터 창. 오른쪽 맥스 창


맥스 좌표 그대로 익스포트->유니티로 갖고왔을 때. (X축이 -90도 돌아가 있음)


축을 왼손좌표계로 돌려준 다음 익스포트-> 유니티로 갖고왔을 때.(맥스와 유니티 좌표 일치)


임포트 된 이 두 주전자를 유니티 씬으로 갖고왔을 때의 차이는 아래처럼 없어보인다.

실제로는 두 주전자의 축이 차이가 있지만 없어보이게만 할 뿐.

 유니티는 자체의 버텍스들을 y축 기준으로 180도 회전시킨 후에 rotation transform의 x축에 -90도를 적용하여 좌표계를 변환시키므로 버텍스가 왼손 좌표계 기준으로 변환되는 것은 아니다. x,y축 변경을 통해 그렇게 보이게 만들 뿐이다. 


이 내용은 유니티 FBX Export 옵션에 대한 아래 설명에서 참조했다. 

http://wiki.maayalee.com/mediawiki/index.php?title=Unity3D_FBX_Export


이래도 저래도 어쨌든 제대로 보이는 디자이너와, 실질적인 축의 방향을 고려해야하는 프로그래머와의 작업방식의 차이가 있을 수 있기 때문에 각 파트에서 특별히 요청이 있을 때 고려해도 될 듯 하다. 


아래는 맥스와 축이 다른 엔진때문에 고민하는 프로그래머들의 질의 문답. 

http://devkorea.co.kr/bbs/board.php?bo_table=m03_qna&wr_id=40302 







Posted by sunnysmileHJ
,

원문 경로 http://blog.naver.com/anijunkie/220201141890


skinLink_onetouch_001.ms




올 초 작업 때 개고생을 하며 스킨을 했었는데.. 

안타깝게도 작업 완전 끝 무렵에 발견해서ㅠㅠ 엄청 기뻤지만 정작 쓰지 못한 스크립트. 스킨이 꽤 잘 되어서 정말 좋았다. 이런 스크립트를 직접 만드는 분들은 정말 대단하다. 


물리 적용 된 조각들의 Key를 Bake시킨 후 스크립트 실행.->Skin버튼을 누르면 

자동으로 스킨작업을 해 준다. 




아래는 원작자 님의 사용 설명. 

 

- 예전에 skinlink라고 각 오브젝트들에 위치한 더미에 각각 스킨을 만들어주는 스크립트를 만들었었는데

더미를 만들고, 위치하고, 에니메이션 똑같이 이전 시키고, 스킨해주고 ....해줄것들이 너무 많아서

그냥 한번에 몽땅 해주는 스크립트를 만들었습니다.

 

- 사용법은 위의 동영상 처럼 massFX로 에니메이션 해주고, 몽땅 잡아서 스크립트 실행후

skin 버튼을 눌러주면 끝입니다.

 

- 각 더미(Point 더미임)는 root 더미에 모두 링크되어있으므로 FBX로 익스포트하기 편리합니다.

 

- 키프레임을 편집하고자 한다면 [bake controller]를 눌러주고 편집해야 합니다.

왜냐하면 massFX 에니메이션은 massFX cnotroller라는 controller로 되어있어 키프레임 편집이 안됩니다.

 [bake controller]은 massFX cnotroller를 일반 controller로 변환해 주는 역할을 합니다.

 

- 게임에서 물리로 무너지는 것들을 아주 손쉽게 만들수 있는 스크립트로.. 유용할 것으로 생각됩니다. 


-massFX 작업 하기전에 먼저 리셋엑스폼을 해주시면 제대로 안될 확률이 적은거 같습니다..

그리고 이 스크립트 적용할때는 반드시 0프레임에서 해주셔야 합니다.



Posted by sunnysmileHJ
,

Spring magic Script

3ds MAX/Script 2015. 8. 24. 11:20

출처 :http://www.scriptspot.com/3ds-max/scripts/spring-magic

움직임이 부드럽게 잘 나오고, cycle이 잘 나오는 편인듯. 


*수정 업데이트 최신버전 [v1.1]
1.remove spline bake key
2.add scale motion option



 

Spring Magic


165votes
Version: 
 0.9
Date Updated: 
 10/13/2014
Author Name: 
 ysc

Spring Magic is a script for adding quick secondary animation to splines,bones and biped.
Current version not supported with CAT (Character Animation Toolkit). Might support CAT in the future version. 
SpringMagic is available for Max 9 and above.

 Image Hosted by ImageShack.us

Additional Info: 

[v.0.7] initial version
Start your max, go to maxscript/run sccript, select the springmagic_07.msc and have fun =)

[v.0.8]
‧The bone chain twist motion is now available .
( twist motion is about rotation around each bone's local X axis )
‧press ESC to cancel simulation
‧Some bugs fixed.

[v.0.9]
1.support C.A.T
2.set bones number to calculation
3.support linked object(the object must align x axis)

Version Requirement: 
 3ds Max9, 2010
Video URL: 





AttachmentSize
springmagic_07.mse15.15 KB
springmagic_0.8.mse17.38 KB
springmagic_0.9.mse15.95 KB







Posted by sunnysmileHJ
,

자세한건 차 후 추가 업로드



원문 출처:  http://xischrist.blog.me/110187051351


* Spring(스프링) 컨트롤러

 

스프링 컨트롤러란?

스프링에 매달린듯 탄력 애니메이션을 주는 컨트롤러다.

보이지 않는 고무줄에 매달려 있는 것 처럼 탄력적으로 흔들어 주는 특성이다.

 

일반 애니메이션 키로는 표현하기 까다로운 흔들림 표현에 아주 적합하다.

보통은 세컨들리 애니메이션 표현(캐릭터의 몸에 부착된 여러가지 애니메이션)에 많이 사용된다.

 

스프링 컨트롤러를 지정하게 되면 원래의 포지션 컨트롤러 위에 스프링 컨트롤러가 추가된다.

키 애니메이션 움직임 위에 스프링 기능을 더해주는 것.

 

 

예를들어 오브젝트를 하나 생성하고 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)

결과를 확인해보자.

 

 

* 예제에 사용된 스크립트는 파일로 첨부했습니다. (출처는 스크립트스팟)

Posted by sunnysmileHJ
,

출처: http://cafe.naver.com/pinksox/1738


출처블로그>Ghost_Max | 박군

원문http://blog.naver.com/bf109g6/40047903254

첨부화일은 RealtimeSpring1[1].4gMax8.ms 스프링 애니를 위한 스크립트이며 확장자가 ms이다.

스크립트 중에 mcr로 된 녀석들은 지금부터 소개할 Tip에서는 적용이 되지않은다.

 

당연히 ms 확장자의 스크립트는 독립적으로 실행이 되므로 툴바에 등록하여 사용할수 있다.

맥스작업중 여기저기 폴더를 돌아다니다 맥스 스크립트 폴더의 스크립트를 실행하기 위해서는

맥스폴더로 와서 스크립트 폴더까지오구 다시금 해당 스크립트를 선택해야 하는데..너무 귀찮다 ㅡ.ㅡ

이런경우 간단히 툴바에 등록해서 아이콘만 클릭해서 스크립트를 실행한다면 어떨까?? 하는 생각에 찾은 방법..

어쩜 이미 널리 유통? 되고 있는 방법일지 모르나 일단 소개하기로 한다.

 

 



 

1.MAXScript>Open Script 원하는 스크립트를 오픈 한다.

 



 

2.스크립트 전체 문구를 선택 마우스 드레그로 맥스 툴바상의 빈공간에 갖다 놓는다.

3.아이콘이 생성된다.

이상태에서 그냥 사용해도 되나.. 이왕이면 알록 달록한 아이콘으로 바꿔 사용하는게 좋기에 다음으로 계속 진행...

4.해당 아이콘을 오른쪽 마우스 클릭하여 나오는 메뉴에서  Edit Button Appearence... 선택

 



 

5.Edit Marco Button 대화 상자에서 툴팁으로 보일 이름설정, 아이콘을 적당히 선택한다.

  이제 여기저기 폴더 돌아다녀도 안심하고 빠른 스크립트 실행을 할수있게 됬다.


'3ds MAX > Script' 카테고리의 다른 글

물리적용된 조각들을 빠르게 Skin작업 해주는 스크립트.  (0) 2015.08.27
Spring magic Script  (0) 2015.08.24
Spring에 대해서.  (0) 2015.05.29
Normalize Spline script  (0) 2015.05.11
Animation Range 쉽게 조절하기  (0) 2015.03.24
Posted by sunnysmileHJ
,

 선택된 선에 원하는 갯수만큼의 vertex를 일정한 간격으로 추가해주는 스크립트. 

*다른 방식의 스플라인 사용법은 모델링 탭에 소개되어있다. 



normalizespline_v1.7.1.ms

출처:http://www.scriptspot.com/3ds-max/scripts/normalize-spline



Posted by sunnysmileHJ
,

설정해 놓은 프레임으로 버튼 한번에 연결 되는 건 아닌 

안에 있는 Time Configure 창을 밖으로 끌어내 놓은 스크립트. 


 보통 Ctrl+Alt누르고 마우스 오른쪽 왼쪽을 누르면, Animation Range를 조절할 수 있는데 

그 것에 따라서 아래 스크립트의 start time과 End Time도 같이 바뀌어서 생각보단 쓰기 불편.. 설정해 놓은 프레임이 고정되어서 한번클릭으로 타임라인에 fit 된다면 훨씬 편할 듯.  




TimeConfig.ms



출처:http://cafe.naver.com/pinksox/5637

'3ds MAX > Script' 카테고리의 다른 글

물리적용된 조각들을 빠르게 Skin작업 해주는 스크립트.  (0) 2015.08.27
Spring magic Script  (0) 2015.08.24
Spring에 대해서.  (0) 2015.05.29
script의 빠른 실행을 위한 팁.  (0) 2015.05.19
Normalize Spline script  (0) 2015.05.11
Posted by sunnysmileHJ
,