본문 바로가기

Max

캐릭터 셋업 책 정독 및 정리 - 2차 스크립트와 함수(Script & Function) 제2강 - Expression 과 Script *Expression 1. Expression란? - 수학적 표현을 통해서 오브젝트의 파라미터나 애니메이션을 컨트롤하는 방법이다. - 수학을 써야 한다니 겁을 먹을수도 있지만, 일반적인 수준에서의 캐릭터 셋업은 상식적 산수만 알아도 Expression Controller의 강력한 기능을 사용하는 데에는 큰 문제 없다. - Scrpit Controller와 상대적으로 비슷하지만, 기능은 더 적다. 하지만, 속도가 빠르다는 장점때문에 많이 이용된다. 2. 변수와 상수 - 예약 변수 1) T : ticks, 맥스에서 시간은 1초에 4800틱의 해상도를 가지고 있다. 즉, 초당 1/4800 만큼의 정밀도로 시간이 계산된다. 1초가 30프레임으로 되어 있는데 1프레임.. 더보기
모델링 라이브러리(Modeling Library) 회사 모델러들의 요청으로 모델링 관리를 펴하게 해주는 툴을 제작해 봤습니다. 이 툴에서 사용할 수 있는 기능들 간단 요약 1. 파일 서치 기능 2. 맥스파일을 열어보지 않고 고퀄의 프리뷰와 다양한 파일 정보(갯수, 크기, 버텍수등..) 로 미리 확인 가능 3. 다중 파일을 지정된 폴더에 동시 익스포트 가능 4. 다중 선택 파일을 지정한 폴더에 자동으로 익스포트 가능 5. FBX를 맥스로 맥스를 FBX로 변환이 매우 간단함(여러파일 동시에도 가능) 6. 대규모 파일관리와 여러 프로젝트를 동시에 관리하게 용이함 * 간단한 기능 설명 제일 먼저 대표로 사용될 폴더를 지정해 줍니다. 모델링 라이브러리 SVN 폴더를 지정하시면 됩니다. (1) 간단한 익스포트 -단일 파일 익스포트 방식 익스포트 폴더를 지정하시고 .. 더보기
Max Script 에서 Json 데이터 파싱하기 1. 먼저 Newtonsoft.dll 파일을 구해서 원하는 폴더에 넣어 놓습니다. Dll 이 있어야 편하게 파싱이 가능합니다. - 처음에 DLL이 없다보니까 텍스트의 라인과 위치까지 세면서 코드를 짜느라 굉장히 애먹었는데, DLL로 파싱하니 굉장히 간단하게 코드가 마무리되었습니다. 구글에 치시면 금방 찾으실 수 있습니다. 2. 사용될 스크립트 코드에 DLL 을 로드 하는 구문을 넣어 줍니다. 위 경로에 DLL을 넣고 아래 코드를 넣어주면 DLL을 로드해 옵니다. 3. JSON이 사용될 부분에서 파싱한다는 코드를 넣어줍니다. local data ="" if filePath == undefined then return 0 fs=openFile filePath mode:"r" while not eof fs d.. 더보기
맥스에서 엔진 버텍스 보여주는 스크립트(Engine Vertex Viewer) 회사 모델러들이 맥스에서 엔진 버텍스를 바로 보고 싶다는 의견이 있어 혼자서 고민하며 만들어봤습니다. 여러가지 이유로 엔진과 동일한 수는 얻어 올 수 있지만, 아래와 같은 방법으로 비슷한 수치는 얻어 올 수 있었습니다. 첨부파일을 받으시면 사용하실 수 있습니다. 1. 모델링 버텍스가 아닌 언렙 버텍스를 계산하라! 언렙을 사용하면 한 버텍스에 두개의 UV정보를 가지게 되는 경우가 생기므로 이 때 버텍스가 증가하게 됩니다. 따라서 6200개의 버텍스의 모델링이 언렙된 버텍스의 수를 계산하면 8500여개가 됩니다. 따라서 언렙전과 언렙후에 엔진에서는 버텍스수가 달라지게 됩니다. 스크립트를 사용할 때도 반드시 언렙후에 사용해야 좀더 정확한 수치를 알게 됩니다. 2. 연속성이 떨어지는 메쉬를 재 연산하라. 엔진에.. 더보기
매인 메뉴에 스크립트 등록하기 제작한 스크립트를 메뉴에 등록하지 않으면 실 작업자들이 실제로 사용하는데 많은 제약이 따릅니다. 그런 문제가 없기 위해 제작한 스크립트는 반드시 메뉴에 등록을 해줘야하는데, 그 방법에 대한 가이드입니다. 맥스 스크립트 메뉴 등록 가이드 1. 맥스 스크립트 상단메뉴에 들어가려면 반드시 메크로 스크립트로 등록된 스크립트만 사용이 가능 합니다. 현재 사내 매크로 스크립트는 맥스 설치폴더\\MacroSciprs\\Nlabs 폴더에 모여 있습니다. 스크립트는 MacroScript 폴더에 모여있는 매크로 스크립트와 Script 폴더에 모여있는 보통 스크립트로 나뉘어 집니다.. 두 개의 차이점 : (1) 매크로는 간단하게 실행가능한 원클릭 스크립트에 대부분 사용된다. 매크로는 맥스가 실행될께 함께 실행 되기 때문에 .. 더보기
MaxScript에서 Svn 접근하기 회사에서 맥스 스크립트를 많이 쓰게 되면서 스크립트 관리포인트가 상당히 많이 생겼습니다. 그러다보니 여기저기 버그도 발생하고, 누가 쓰고 있는지 알기도 힘들고, 업데이트 마다 mzp 파일 배포하는 것도 피곤하고.. 그래서 SVN이 도입되어 사용되어 왔습니다. 제 선임이 멋지게 구축해 놓은걸 저는 인계받아 쓰고 있는데요 맥스 스크립트에서 SVN에 접근하는 방식에 대한 내용 정리입니다. 출처 - http://hwanggoon.tistory.com/109 1. SVN Command Line 설치하기 다운로드 경로 : http://tortoisesvn.net/downloads.html SVN 설치시에는 반드시 Comand 라인을 설치해 줘야만 맥스 설치폴더에서 접근할 수 있게 됩니다. Command Line 이.. 더보기
Max 스크립트(Script)에서 사용되는 바이패드 고유 노드 넘버 스크립트를 만들때 이름으로 서치하는 것은 매우 안좋은 습관이다. 하지만, 바이패드는 이름으로 서치하지 않으면 해당 오브젝트를 찾기 힘들다. 그래서 Script 헬프를 뒤져보니 바이패드의 고유 Node 넘버가 있는것을 확인했다. biped.getNode $ #lArm link:4 라고 실행하면 아래 표에 따라 L Hand가 호출된다. Index Limb Name Link Nodes in Link Index Order 1 #larm L Clavicle L UpperArm L Forearm L Hand 2 #rarm R Clavicle R UpperArm R Forearm R Hand 3 #lfingers L Finger0 L Finger01 L Finger02 L Finger1 L Finger11 L Fin.. 더보기
캐릭터 셋업 서포트툴(Setup Support Tool)) 제작 최근 다관절 셋팅을 하면서 컨트롤러 셋팅을 많이 하게 되는데, 맥스의 컨트롤러 뷰어는 불편한 점이 많아서 서포트 툴을 하나 제작하게 됐습니다. 특히 LookAtConstraint나 Orientation Controller같이 다른 헬퍼 본과 연계되서 사용할 경우 연계된 본이 어떤건지 구분하기도 힘들고 선택하기도 힘들어 자주쓰는 노드들과 연계하기 편하도록 제작해 봤습니다. 이번 툴을 제작하면서 공부한 내용 1. Struct로 따로 분리하여 기능 별로 함수 관리하기. - 닷넷에 사용하는 트리뷰와 리스트뷰기능만을 구조체로 따로 뺀뒤 기능 함수를 호출해서 사용하는 방식에 대해서 공부하고 숙지했습니다. 기능 구현에만 집중해서 코딩하다 보면 나중에 손댈 수 없는 지저분한 코딩이 될 수 있어 미리미리 코드 정리하는 .. 더보기
FBX임포트 데이터를 맥스 파일로 자동 저장해주는 스크립트 최근 회사에서 언리얼 마켓 플레이스에서 구매해 사용하는 데이터들이 점점 많아지다 보니 관리가 힘들어져 만든 스크립트입니다. 애니메이션 팩 같은 경우는 한번 사면 60개는 기본으로 들어 있더라구요. 이 데이터를 그대로는 못쓰기 때문에 맥스에서 불러온뒤 본 네이밍등을 변경해서 다시 저장해주는 스크립트입니다. 중간에 본 네이밍을 바꿔주는 내용은 저희 회사 규약에 맞춰져 있어서 빼고 사용하시면 됩니다. 1. 대상 FBX 파일들을 불러옴 2. 맥스에서 FBX를 임포트하여 MAX 파일로 변환 후 저장 3. 완료된 MAX 파일들 다시 일괄적으로 익스포트 1번을 통해 일괄 변환할 FBX 파일들을 선택하여 부르면 2번에 리스트가 나옵니다. 3번을 눌러 맥스파일을 저장할 경로를 선택하고, 4번을 누르면 일괄적으로 본 네임.. 더보기
은면 제거 스크립트 이 스크립트는 최적화를 위한 툴로서 카메라에 보이지 않는 면들을 제거하여 카메라렌더링에 대한 연산을 최소화 시키지 위한 툴입니다. 이번 과제를 해결하기 위해서는 삼각함수의 기본 원리와 벡터의 내적을 구하는 공식에 대한 이해가 필요했습니다. 카메라와 오브젝트간 벡터의 내적이 0보다 큰 수의 면만 선택하여 삭제하는 공식을 이해하는데 많은 시간이 필요했습니다. 카메라가 A이고 오브젝트의 한 단면이 B 이고 살리고 싶은 면이 C일때 C = a b cos@를 이용한 벡터의 내적을 이용하여 cos@가 0보다 큰면은 카메라가 바라보는 방향과 같은 방향을 바라보기 때문에 카메라가 잡히지 않는 구간입니다. 따라서 0보다 작은 마이너스 구간을 살리고 0보다 큰 플러스 구간은 삭제하면 됩니다. 이 공식을 이용하여 스크립트를.. 더보기