2014년 6월 28일 토요일
여주인공
MDA girl from Nlbo75 on Vimeo.
한달쯤 전에 지인으로 부터 부탁받은 작업이다.
작업량도 많지는 않아서, 리깅에서 이것 저것 테스트를 해본 작업이다.
기존보다는 면수가 많아서 조금더 애니메이션 할맛이 났다.
2014년 6월 27일 금요일
자주 이용되는 맥스 스크립트 사용
in coordsys local rotate MountLEar
(EulerAngles 180 0 90)
-로컬축으로 회전하기
$'Bip01_Breast'.rotation.controller.value =
-회전시킬 때 포지션 값이 변동되지 않게
setUserPropBuffer $
("\r\nNiOptimizeKeep\n")
-유저디파인에 문자남기기
MountLUpperArm.rotation = (inverse
(biped.getTransform $'Bip01 L Clavicle' #rotation))
-쇠골뼈같은경우 축맞추기(이렇게
하지 않으면 이상하게 틀어짐)
$.pos.controller=Position_XYZ()
-해당 오브젝트의 콘트롤러 변경
$.transform.controller.Biped_SubAnim.controller.BipScaleList.controller.Available.controller
= bezier_Scale ()
- 해당 오브젝트의 콘트롤러 변경
(바이패드오브젝트는 요렇게 바꾸고 추가를 함)
if(matchPattern (((getNoteTrack $'bip01'
1).keys)[i].value) pattern:"start -*" == true) do
-문자열검색
firePointName = filterstring KeysValue[j]
":"
-문자열 분리 하여 저장
$bip01.controller.enableSubAnims = true
-망할 썹애니 플래그
a = selection as array
- 선택한 오브젝트를 변수에 넣기
aPos = nodeGetBoundingBox $ $.transform
bipLength = aPos[2].x
bipLength = aPos[2].x
-해당축으로의 오브젝트길이 구하기(바이패드길이
구할 때 용이)
selObj = selection as array
- 선택한 모든오브젝트를 변수에 저장
selObj = $* as array
- 존재하는 모든 오브젝트를 변수에 저장
exptFileName = getFilenameFile maxFileName
- 'maxFileName' 명령의 경우 확장자명까지 받아 오는데 'getFilenameFile'로 한번더 걸러주면 정확히 파일명만을 얻는다.(replace maxFileName (maxFileName.count - 3) 4 ""와 같이 어렵게 하지 않아도 된다 ㅠ,.ㅠ)
biped.setTransform $ #pos [0,-6.3386,97.4567] off
- 바이패드의 위치값 수정 off는 애니메이션 키생성 옵션(on이면 키생성)
degToRad -74.145
- 선택한 모든오브젝트를 변수에 저장
selObj = $* as array
- 존재하는 모든 오브젝트를 변수에 저장
exptFileName = getFilenameFile maxFileName
- 'maxFileName' 명령의 경우 확장자명까지 받아 오는데 'getFilenameFile'로 한번더 걸러주면 정확히 파일명만을 얻는다.(replace maxFileName (maxFileName.count - 3) 4 ""와 같이 어렵게 하지 않아도 된다 ㅠ,.ㅠ)
biped.setTransform $ #pos [0,-6.3386,97.4567] off
- 바이패드의 위치값 수정 off는 애니메이션 키생성 옵션(on이면 키생성)
degToRad -74.145
- 와이어파라메타 같은 것을 사용할 때 회전값을 라디안 단위로 변환
2014년 6월 19일 목요일
게임샐러드팁2
액터간의 부모자식 만들기
게임샐러드는 링크(마운트,어테치,그룹 등등)의 개념이 없다.
그래서 작업자가 비슷한 것을 직접 만들어 주어야 한다.
방법은 다음과 같다.
-------------------------------------
Constrain Attribute를 이용해
'자신의 위치 X축' to '자식과의 거리 * cos(부모의 회전값+ 부모의 정면을 기준으로 위치각)
Constrain Attribute를 이용해
'자신의 위치 Y축' to '자식과의 거리 * sin(부모의 회전값+ 부모의 정면을 기준으로 위치각)
Constrain Attribute를 이용해
'자신의 회전각 to 부모의 회전각'
-------------------------------------
여기서 '부모의 정면을 기준으로 위치각'이란것은 자식이 항상 부모의 정면쪽에 붙어있는 경우는 없다.
비행기의 날개의 경우도 몸통의 좌우(90/270의 각도)에 부터있다.
이것의 각도를 뜻하는 것이다.
게임샐러드는 링크(마운트,어테치,그룹 등등)의 개념이 없다.
그래서 작업자가 비슷한 것을 직접 만들어 주어야 한다.
방법은 다음과 같다.
-------------------------------------
Constrain Attribute를 이용해
'자신의 위치 X축' to '자식과의 거리 * cos(부모의 회전값+ 부모의 정면을 기준으로 위치각)
Constrain Attribute를 이용해
'자신의 위치 Y축' to '자식과의 거리 * sin(부모의 회전값+ 부모의 정면을 기준으로 위치각)
Constrain Attribute를 이용해
'자신의 회전각 to 부모의 회전각'
-------------------------------------
여기서 '부모의 정면을 기준으로 위치각'이란것은 자식이 항상 부모의 정면쪽에 붙어있는 경우는 없다.
비행기의 날개의 경우도 몸통의 좌우(90/270의 각도)에 부터있다.
이것의 각도를 뜻하는 것이다.
게임샐러드 팁1
멈추지 못하고 떨릴때.
액터의 Physics내의 Drag항목은 저항값을 의미한다.
문제는 Accelerate Behavior를 사용하거나 액터의 Linear Velocity항목에 값을 입력하여 움직였을때 Drag에 의해 Linear Velocity값이 0이 되야 하는데
4~-4값정도(확실하지는 않다) 왔다갔다하며 조금씩 움직인다.
이때 해결방법은
Linear Velocity의 X축 Y축의 값이 모두 5~-5가되면
Drag를 Change Attribute Hehavior를 사용해 0으로 변경하고
Linear Velocity의 X축 Y축의 값을 Constrain Attribute를 사용해 0으로 변경한다.
방향키를 이용해 이동할때.
방향 Key값을 이용하여 오브젝트를 움직일때 가끔 움직임이 멈출경우가 있다.
Boolean으로 키입력의 참거짓을 정의하고, 그값을 이용하여 움직이게 한다.
그리고 회전의 경우는 Rotate Behavior를 사용하면 빠른 키전환시 멈추는경우가 있는데, 이는 액터의 Rotation값을 Constrain Attribute를 사용해 직접 변경하면 된다.
액터의 Physics내의 Drag항목은 저항값을 의미한다.
문제는 Accelerate Behavior를 사용하거나 액터의 Linear Velocity항목에 값을 입력하여 움직였을때 Drag에 의해 Linear Velocity값이 0이 되야 하는데
4~-4값정도(확실하지는 않다) 왔다갔다하며 조금씩 움직인다.
이때 해결방법은
Linear Velocity의 X축 Y축의 값이 모두 5~-5가되면
Drag를 Change Attribute Hehavior를 사용해 0으로 변경하고
Linear Velocity의 X축 Y축의 값을 Constrain Attribute를 사용해 0으로 변경한다.
방향키를 이용해 이동할때.
방향 Key값을 이용하여 오브젝트를 움직일때 가끔 움직임이 멈출경우가 있다.
Boolean으로 키입력의 참거짓을 정의하고, 그값을 이용하여 움직이게 한다.
그리고 회전의 경우는 Rotate Behavior를 사용하면 빠른 키전환시 멈추는경우가 있는데, 이는 액터의 Rotation값을 Constrain Attribute를 사용해 직접 변경하면 된다.
피드 구독하기:
글 (Atom)