베개발

작업 공정 최적화하기 본문

3D/공부 메모

작업 공정 최적화하기

rusal0204 2024. 11. 30. 17:48

나의 경우 작업중에 지나치게 생각을 많이 하는 습관이 있어서인지, 각 단계에서 시간이 필요이상으로 지체되는 경우가 많았다. 습관을 고치는것도 중요하지만 그 전에 시스템적으로 시간을 줄일 수 있는 방법이 있을지 고민해봤다.

 

1. 언리얼 익스포트 / 임포트 시간 줄이기

은근히 맥스에서 익스포트 눌러서 오브젝트 저장하고 언리얼에서 리임포트 시키는 게 시간이 많이 걸린다.

한두번이야 괜찮겠지만 계속 엔진에 올리면서 확인해야 하는 경우는 은근히 노가다성이 짙다.

언리얼 에디터 설정에서 auto reimport를 검색하면 자동으로 컴퓨터 안의 폴더와 엔진 내 컨텐츠 폴더를 동기화 비스무리하게 해주는 설정이 있다. 이 폴더를 우선 설정해주면, 로컬 파일 (익스포트 했던 경로)에 변경사항이 생길 시 언리얼에서 자동으로 리임포트를 해주고, 신규파일이 생겼을 경우 임포트 창이 뜨면서 임포트할지 물어봄.

 

2. 익스포트용 커스텀 맥스스크립트 만들기

목표는 '익스포트 창 생략하기' 였다. 엔터 몇번 누르는것 정도는 괜찮지 않나 싶었는데 이것도 하다보니까 슬슬 번거롭다 (특히 버텍스 몇개 옮기고 다시 엔진에 넣어봐야 할 경우 등)

기존에 export selected 단축키를 ctrl e로 해뒀었는데, 해당 단축키에 넣을 새 스크립트를 만들었다.

스크립트 내용은 간단하다. 기본으로 파일이 익스포트될 경로를 미리 지정해주고, 선택된 오브젝트에 한해 그 폴더로 익스포트 시켜주는 식이다. 익스포트 될 파일명은 맥스 내의 오브젝트 이름으로 되도록 해뒀더니, 맥스 씬 파일 안에서 관리하는 것도 편해졌다.

조금 더 기능을 확장해서 익스포트 전 resetXform을 한번 해주는 기능도 추가했다.

앞에 UCX 접두사 (언리얼 커스텀 콜리전)가 붙을경우 부모오브젝트와 같이 붙여서 익스포트 해주는 기능도 추가하고, 맥스에서 익스포트를 할때 피봇이 월드좌표 (0,0,0) 기준으로 붙어서 나가기 때문에 오브젝트 자체와 로컬피봇을 0,0,0으로 옮긴다음 익스포트 했다가 원래 자리에 돌려놓도록 만들어뒀다. (맥스 기본 익스포트 세팅에서 피봇 기준을 뭘로 할지 고를 수 있게 되어있을 것 같은데, 아직 못 찾았다 ㅠㅠ)

아무튼 그래서 여러 오브젝트를 선택한 뒤 익스포트하게 만들면 순서대로 하나씩 내보내주는데, 그때 오브젝트들이 (0,0,0)으로 한번씩 깜빡깜빡 거리면서 옮겨진다. 보고있으면 열일하는거 같아서 뭔가 귀엽다.

 

3. 위 1번 + 2번 합치기

위처럼 세팅한 뒤 맥스 스크립트의 기본 익스포트 폴더를 언리얼 오토 리임포트 경로로 세팅해주면,

익스포트 단축키 하나만 누르면 자동으로 파일이 언리얼 안에 적용된다.

혹시 몰라서 ctrl + shift + e는 기존의 export selected로 설정해놓고, 특별히 다른 폴더로 익스포트 해야되거나 할때만 활용하고 있다.

참고로 파일 경로에 한글이 들어있으면 무조건 에러가 나기때문에 조심하는게 좋다. 컴퓨터를 원드라이브랑 동기화시켜놨더니, 바탕화면 하위경로에 전부 '원드라이브' 라는 한글이름(!)이 포함되게 돼서, 기본 익스포트 경로는 일단 D드라이브로 해놨는데... 어떻게 끄지 저거

 

4. 다른 커스텀 맥스스크립트 마련하기

알고보니 맥스에 있는 거의 모든 기능들은 각각의 맥스 스크립트로써 돌아가고 있던 거였다.

Hotkey 세팅 들어가서, 기능 하나 잡고 우클릭해보면 Edit Maxscript 라는게 뜬다.

아무튼 그만큼 맥스스크립트로 할 수 있는게 꽤 많아보인다. 나같은 경우는 오브젝트를 월드좌표 (0,0,0) 으로 옮겨주는 스크립트, 피봇을 월드좌표 (0,0,0)으로 옮겨주는 스크립트, 오브젝트를 x축으로 딱붙여서 복사해주는 스크립트 등을 만들었는데 은근히 자주 쓰일데가 있었다. 작업하면서 필요한 기능이 또 생기면 만들어볼 것 같다.

 

5. ChatGPT 이용하기

사실 나도 맥스스크립트는 진짜 기초중의 기초만 알고있고 거의 쓸 줄은 모른다. 하지만 요즘에 ChatGPT가 맥스스크립트 데이터도 학습이 되어있는지 물어보면 대답을 잘 해주길래, AI랑 대화하면서 스크립트를 세팅하는 중이다.

물론 파이썬같은 언어들처럼 메이저하지는 않아서 환각이 자주 생기는데, 그때는 질문법을 적당히 바꾸거나 재응답을 돌리면 해결이 될 때가 있다. 정 안풀리면 직접 검색해본 뒤 AI한테 '이러이러한 게 있는데 혹시 이거 기반으로 뭔가를 만들어줄 수 있음?' 하고 물어보면 좋다. 이런 LLM(언어 AI)들은 한글보다 영어 이해도가 압도적으로! 높기 때문에 꼭 영어로 질문해야 한다. 그래야 전체적으로 AI 성능을 최대로 활용할 수 있다. 영어공부 한게 이렇게 쓰일줄이야

 

6. 다른 사람들의 스크립트 적극 활용하기

간단한 건 직접 만드는 게 편하지만, 좀 복잡한 스크립트나 '이런 게 혹시 되나?' 싶은 게 있다면 검색해봐야한다. ScriptSpot이라고 구글에 맥스스크립트 검색하면 제일 많이나오는 스크립트 커뮤니티가 있는데, 웬만한 건 거기 다 올라와있다. 나는 커스텀으로 세팅하면서 DIY의 즐거움 + 스크립트 공부 + 뿌듯함 을 챙기기 위해 수제작을 선택했지만, 빠르게 세팅만 마치고 싶다 하면 검색해보는 게 쉽고 편한 길일수도 있다...

 

7. 언리얼 플러그인, 블루프린트, scripted asset action 등 활용하기

이건 나도 아직 많이 활용해보진 못했지만, 언리얼 안에서만 해도 반복작업이 꽤 많기 때문에 어떻게 쓸 수 있을지 고민중이다. 프로그래머 친구와 '스태틱 메쉬 이름 기반으로 머테리얼 인스턴스를 자동으로 만들어주는 스크립트' 를 만들어보기도 했고, pcg와 비슷한 블루프린트를 만들어서 써보기도 했다. 활용도가 높을 것 같아서 계속 이것저것 생각날때마다 해볼 예정이다. 특히 스플라인 기반으로 오브젝트 배치해주는 블루프린트는 요즘에도 잘 쓰고 있는데, 좀 찾아보니 이것도 무료로 뿌리는 게 있긴했었다... 하지만 직접 만들어보는게 역시 이해도 면에서는 압도적으로 좋은듯하다.

 

8. 그 외

맥스 쓰다가 이 기능 좀 자주 쓰이는데? 싶으면 바로 단축키 세팅에 등록해야한다. 하고, 안 하고의 차이가 체감이 굉장히 크다.

요즘엔 개인 라이브러리도 만들어보는 중인데, 'fbx 프리뷰' 까지 지원되는 파일 관리 프로그램 없나 하고 찾아보다가 Eagle이라는 프로그램을 발견해서 무료체험판 써보는 중이다. 은근 괜찮은듯 하다.

대충 이런 식으로 보인다. 저 상태에서 맥스나 언리얼로 드래그하면 그냥 임포트가 된다.

커스텀 디테일 텍스쳐같은 것들도 저장해두고 있는데, 미리보기가 너무 편하고 태그 붙이기나 폴더분류도 너무 편하다. 체험기간 종료되면 결제의향 100퍼센트

일단은 베이스메쉬 모아놓는 용도로도 잘 쓸 것 같고, 섭페 스마트머테리얼이나 섭디 커스텀노드 같은것들도 저기 모아두면 나중에도 유용하게 쓸것같다. 미리 정리해놓으면 컴퓨터 바꾸거나 할때 등 여러상황에서 좋을듯하다.

 

불편한걸 계속 개선하려고 하다보니까, 전체적인 워크플로우가 많이 빨라진 것 같다. 특히 노가다성 작업인 경우 손보다 머리를 더 쓰려고 해보는 중이다. 좋은 습관이 생긴 것 같다.