[KOR][30]Embark-Asset-Processor---Erik-Hallberg--

https://m.youtube.com/watch?v=HZd4hQJ2MfA&pp=ygUOZW1iYXJrIGhvdWRpbmk%3D

Frame at 12.12s

안녕하십니까. 본 발표에 오신 것을 환영합니다. 이번 발표는 두 부분으로 구성됩니다. 저는 먼저 asset processor에 대해 설명드리고, 이후 Embark의 Darko가 landscape tools에 대해 발표할 예정입니다.

저희 소개를 먼저 드리겠습니다. 저는 Embark의 Lead 3D Artist이며, Darko는 Lead Environment Artist입니다. Embark Studios는 2018년 게임 개발 및 플레이 방식에 혁신을 일으키고자 설립되었습니다. 현재 세 개의 free-to-play 프로젝트를 진행 중입니다.

Frame at 59.04s

방금 어제 베타 테스트가 종료된, 빠른 템포의 FPS 게임을 선보입니다. 이 게임은 뛰어난 파괴 효과를 자랑합니다. 또한, 'Arc Creators'는 3인칭 PvPV-E 슈터로 개발 중입니다. 더불어 창의적인 플레이를 위한 플랫폼도 개발하고 있습니다. 먼저 살펴보겠습니다...

Frame at 82.08s

저는 그저 맹금류일 뿐입니다. 아주 빠르게 달려들지요.

Frame at 87.82s

쇼타임.

Frame at 91.04s

두 명의 동료가 급하게 도착합니다.

Frame at 93.37s

이제 시작입니다.

Frame at 103.76s

네, 시작합시다.

Frame at 105.06s

시작합시다. 자, 시작합시다.

Frame at 111.54s

잠시만요, 잠시만요.

Frame at 112.54s

잠시만요. 그는 쓰러지지 않았습니다.

Frame at 114.54s

'Go! dancing on my own'

Frame at 141.54s

어제 daco가 언급했듯이, 2022년 출시는 현재 예정되어 있지 않습니다. 이 업데이트는 크리에이터를 위한 내용이며, 다음으로 The Finals 트레일러를 살펴보겠습니다.

Frame at 176.02s

'út severa'

Frame at 201.39s

'리얼-'

Frame at 203.46s

아, 이런!

Frame at 205.06s

"이동!"

Frame at 207.11s

그리고 그는 백스탭에 성공합니다!

Frame at 208.81s

정말 싸게 샀군요!

Frame at 228.51s

출발합시다!

Frame at 230.06s

'오'

Frame at 265.06s

예고편을 보시면 아시겠지만, 이 게임들을 만드는 데는 Houdini 관련 작업이 많이 포함되어 있습니다.

Frame at 280.06s

오늘 발표에서는 3D 에셋 제작을 위한 Asset Processor를 소개하고, 이어서 Darko가 Landscape에 대해 설명할 예정입니다.

Frame at 289.56s

이번 발표는 Asset Processor에 관한 것입니다. 플레이어의 기대를 충족하는 고품질 콘텐츠를 제작하는 데 따르는 어려움과, 빠르게 변화하는 플레이어들의 콘텐츠 소비 속도에 맞춰 더욱 신속하게 작업해야 하는 현실적인 문제점을 다룰 것입니다.

이에 대한 해결책으로, 저희가 자체 개발한 Asset Processor를 소개하고, 특히 Hard Surface Process에 초점을 맞추어 설명드리겠습니다. 이 툴은 2021년 넥슨 개발자 컨퍼런스에서 초기 버전을 발표했지만, 당시에는 철학적 측면에 집중하고 사용자 경험에 대한 부분은 깊이 다루지 못했습니다.

이번 발표에서는 그 당시에는 상상도 못 했던 새로운 기능들을 시연하고, 툴이 어떤 입력을 받아 어떤 결과를 출력하는지 구체적으로 살펴보겠습니다. 또한, Asset Processor에서 수행하는 다른 프로세스들에 대해서도 간략히 소개할 예정입니다.

마지막으로, Asset Processor 개발 과정에서 겪었던 도전 과제, 얻은 교훈, 그리고 앞으로의 발전 방향에 대해 이야기하며 발표를 마무리하겠습니다.

Frame at 370.79s

저희가 직면한 과제, 즉 asset creation에 필요한 요구사항에 대해 간략히 살펴보겠습니다. 저희는 free-to-play 게임을 개발하므로, 플레이어들에게 지속적으로 어필할 수 있는 content drop을 만들어내야 합니다. 플레이어들의 콘텐츠 양에 대한 기대치가 계속 높아지고 있기에 이는 더욱 중요합니다.

또한, 플레이어들의 취향은 물론 미래의 취향까지 완벽하게 예측하는 것은 불가능하기에, 저희가 제작하는 콘텐츠의 유형을 유연하게 전환할 수 있는 폭넓은 여지가 필요합니다. 이와는 다른 종류의 유연성 또한 매우 중요합니다.

저희는 비교적 작은 규모의 content team을 유지할 계획이므로, 팀원들이 다양한 업무를 쉽게 수행할 수 있도록 해야 합니다. 더불어, 서로의 work file을 쉽게 파악할 수 있어야 합니다. 플레이어들에게 지속적으로 매력적인 경험을 제공하기 위해 모든 콘텐츠에 대한 높은 quality bar를 설정하고 유지해야 하며, 이는 저희 아티스트들이 추구하는 바입니다.

Frame at 448.20s

왼쪽에는 지옥과 같은 모습, 그리고 우리가 지향하는 천국과 같은 세상을 그려보고자 합니다. 수작업에는 여러 문제가 따르는데, 인간의 노동력은 한정되어 있으며 그 시간을 가치 있는 일에 할애하는 것이 중요합니다. 팀 규모가 커질수록 관료주의가 심화되어 프로젝트 유지에 어려움이 발생합니다. 이러한 구조적 경직성은 창의성을 저해하고 빠른 변화에 적응하기 어렵게 만듭니다. 따라서 팀 규모를 작게 유지해야 합니다. 이는 곧 다가올 위협에 대한 경각심으로 이어지며, 좌절과 고통을 동반할 수 있습니다.

오른쪽, 즉 우리가 지향하는 세상은 창의적인 꿈을 실현하는 것이 어렵지 않고, 새로운 시도를 두려워하지 않으며, 어떤 도전도 극복할 수 있다는 확신을 가지고 빠르게 나아갈 수 있는 곳입니다.

Frame at 530.09s

앞으로 예상되는 부분이며, 이처럼 되는 것이 이상적일 것입니다. 이를 지켜볼 것입니다.

Frame at 536.75s

현실적인 3D 에셋 제작 워크플로우의 현재 제약 사항 및 어려움에 대해 살펴보겠습니다. 현재 업계의 워크플로우는 느리고 숙달하기 어렵습니다. 여러 DCC(Digital Content Creation) 툴을 오가며 아티스트들이 별도의 에셋을 관리해야 하는, 서로 유기적으로 연결되지 않은 독립적인 단계가 많습니다. 또한, 이러한 프로그램 간 데이터를 수동으로 주고받는 과정이 반복되어 게임 콘텐츠 제작의 진입 장벽을 높입니다.

이러한 방식은 반복 작업(iteration)을 번거롭게 만들며, 품질은 반복 작업에서 나온다는 점을 모두 경험했을 것입니다. 처음부터 완벽하게 작업하는 경우는 드물기 때문입니다. 하지만 이 워크플로우에서는 초기 단계의 무언가를 조정하려면 이후 모든 단계를 다시 거쳐야 합니다.

또한, 이미 완료된 작업을 다시 검토하는 것을 망설이게 되어, 나중에 다시 작업해야 할까 봐 두려움 때문에 의도적으로 작업을 늦추고 철저히 분석하게 됩니다. 결과적으로 계속해서 에셋만 바라보며 만족스러운지 의문을 품게 되는데, 이는 즐거운 작업 방식이라고 보기 어렵습니다.

Frame at 626.47s

또한, 이러한 임박한 **doom(파멸)**의 느낌이 다시금 느껴집니다.

Frame at 635.02s

각 단계마다 접근 방식에 관계없이 고유한 도전 과제가 존재합니다. 애셋 제작 워크플로우에서 가장 첫 번째이자 가장 어렵고 시간 소모적인 단계인 High Poly Creation을 예로 들면, 현재 가장 일반적으로 사용되는 방법들이 여러 측면에서 부족함을 발견할 수 있습니다.

Subdivision modeling은 오랜 역사를 가지고 있으며 여전히 널리 사용되지만, 숙련하기 어렵고 수정하기 어렵다는 문제가 있습니다. topology에 대한 깊은 이해가 필요하며, 모양을 변경하려면 애셋의 topology를 재구축해야 합니다.

Creases의 도입은 sliding edge issues와 support edge loops를 줄여주어 환영받았습니다. 그러나 creases를 사용하더라도 워크플로우는 여전히 mesh의 topological structure에 의존합니다. 따라서 속도, 유연성, 문제점들이 그대로 남아있습니다.

저 또한 오래된 모델을 통해 이 주제의 어려움과 고통을 깊이 이해하고 있습니다. ZBrush의 Dynameshing은 subdivision modeling의 어려움과 비유연성을 어느 정도 해소했지만, ZBrush를 다루는 것이 어렵다는 점은 여전히 단점으로 작용합니다. 특히 ZBrush를 모르는 경우, 애셋의 둥근 모서리를 만들기 위해 ZBrush를 배우는 것은 번거롭습니다.

또한, 워크플로우가 destructive하여 느리고 유연하지 못합니다. 무언가를 변경하려면 다시 처음부터 시작해야 하는 고통이 따릅니다.

많은 hard surface 아티스트들이 CAD modeling을 채택하고 있는데, 이는 매우 훌륭한 결과물을 제공하지만 대부분의 게임에서 요구하는 수준을 넘어섭니다. 다소 과하다고 볼 수 있습니다. 또한, 파이프라인에 통합하기 위해 새로 배워야 하는 소프트웨어라는 점은 동일합니다. 이러한 방법들과 비교했을 때, low poly creation의 시작점으로는 가장 거리가 멀다고 할 수 있습니다.

이 모든 방법들은 근본적으로 동일한 문제점을 안고 있습니다. 숙련하기 어렵고, destructive하며, 별도의 low poly 모델을 만들어야 합니다.

Frame at 782.67s

자체 UVs를 가지고 있으며, 필요한 정보를 baking down하기 위한 setup이 갖춰져 있습니다.

Frame at 791.22s

게임 에셋 제작 경험이 있는 분이라면 누구나 창의적인 탐색에 할애되는 시간은 극히 일부에 불과하다는 점을 인지하셨을 것입니다. 우리는 필수적인 단계를 거치지만, 그 자체만으로는 의미 있는 표현의 여지를 허용하지 않습니다. 물론, 숙련도를 높일 여지는 있습니다. UV는 더 낫거나 나쁠 수 있으며, 하이폴리 모델링과 같은 덜 기술적인 부분에서도 마찬가지입니다. 하지만 정밀한 실행 능력에 있어서는 인간이 컴퓨터와 경쟁할 수 없습니다. 베이킹 설정과 같이 완벽하게 만든 것은 누구나 즉시 접근할 수 있도록 영구적으로 고정하고 싶어지며, 가능하다면 사용자가 인지하지 못하는 방식으로 제공하고 싶습니다. 'X를 하는 데는 많은 요소가 필요하고, 우리는 많은 요소를 다룰 수 있다'는 생각에 빠지기 쉽습니다. 단순히 해결하는 데 시간이 더 걸릴 뿐입니다.

Frame at 853.99s

저희가 추구하는 것은 사용하기 쉽고, 빠른 결과물을 제공하며,

Frame at 864.11s

세계적 수준의 asset들을 활용하여 실험적인 시도를 할 수 있는 환경을 조성합니다. 이는 기술적인 어려움에 매몰되지 않고 진정한 창의성을 발휘하며 우리의 작업을 재정의할 수 있도록 합니다. 복잡한 과정 없이 간단한 입력만으로도 출시 가능한 게임 asset이라는 최종 결과물로 자동 변환되기를 바랍니다.

Frame at 885.30s

이 문제를 해결하기 위해 내부적으로 구축된 asset processor를 활용합니다.

Frame at 891.98s

보시는 바와 같이, 필요한 최소한의 입력만으로 단일 입력 지점을 확보하여 기존의 여러 단계를 제거합니다. Blender에서 입력 설정을 시작하면, 그 이후의 모든 Houdini 내부 작업은 자동으로 처리됩니다. Houdini 프로세스의 'gears' 단계에는 Houdini 로고가 없는 이유가 바로 이 때문입니다. 사용자 입장에서는 이 과정을 전혀 인지하지 못하며, 알 필요도 없습니다. 텍스처링 준비가 완료된 에셋이 UVs, bakes, rig와 함께 생성되어 게임에 바로 제출할 수 있는 상태가 됩니다.

Frame at 936.14s

신성한 것을 만지는 행위입니다.

Frame at 941.44s

이는 에셋(assets) 제작 시간을 수 주에서 수 일로, 반복(iteration) 시간을 수 일에서 단 몇 분으로 단축하는 데 기여합니다.

Frame at 953.81s

저희의 현재 접근 방식이 어떻게 발전해왔는지 간략하게 설명드리겠습니다. 이 과정은 매우 유기적으로 성장해왔습니다. 초기에는 특정 hard surface assets를 자동화하는 것이 가능할 것이라는 생각에서 시작되었습니다. 여러분께서도 보시다시피, 이 과정의 상당 부분은 ZBrush workflow 자동화와 유사한 형태를 띱니다.

이후, 특정 hard surface UVs 역시 자동화가 가능할 것이라는 생각으로 발전했습니다. 특히, 많은 분들이 이미 사용하고 계신 basic cutting of hard edges와 automatic layout 기능이 주를 이뤘습니다.

그렇다면 baking 또한 자동화할 수 있지 않을까요? high poly object를 해당 low poly mesh와 매칭하는 작업이 더 이상 이름 기반의 수동 작업이 되지 않아야 합니다. 이는 overlapping volumes와 cage meshes의 문제이며, normalized size만 갖춘다면 bake settings는 asset 전반에 걸쳐 동일하게 적용될 수 있어야 합니다.

이 모든 단계를 하나로 연결하는 것에서 진정한 힘이 나온다는 점이 명확해지기까지는 상당한 시간이 걸렸습니다. 일단 이러한 setup이 존재한다면, 우리는 이 framework 위에 어떤 추가 기능이든 덧붙일 수 있게 됩니다.

이에 따라, artists들이 input을 쉽게 설정할 수 있도록 purpose built Houdini engine이 필요했습니다. 처음에는 이러한 setup이 어떤 process든 실행할 수 있을지 명확하지 않았기에, asset processor는 원래 hard surface processor라 불렸습니다. 이제 간단한 asset을 사용하여 실제 작업 모습을 살펴보겠습니다.

Frame at 1046.97s

더 깊이 들어가기 전에, 게임에서 재현하고자 하는 대상을 위한 reference를 찾는 것부터 시작합니다. 이번 경우에는 fast food restaurant table입니다.

Frame at 1063.22s

먼저 게임에서 보게 될 로우 폴리(low poly) 모델을 제작합니다. 에셋 프로세서(asset processor)를 실행하면 이미 UV, 하이 폴리(high poly), 그리고 블렌더(Blender)에서 확인할 수 있는 베이킹(bakes)이 생성된 것을 볼 수 있습니다.

참조 이미지에서 중요한 요소들이 누락되었으므로, 이제 해당 부분을 보완하겠습니다. 나무 재질의 테이블 상판과 좌석 부분을 분리하기 위해 인터섹션 오브젝트(intersection objects)를 생성합니다.

다시 프로세싱하고 결과를 검토하면, 에셋의 해당 부분들이 하이 폴리에서 분리되었고 이 정보가 로우 폴리로 전달된 것을 확인할 수 있습니다. 변경된 부분을 명확히 보여주는 화살표를 통해 이를 확인할 수 있습니다. 각 단계별 프로세싱은 이해를 돕기 위한 것이며, 실제 작업 시 반드시 필요하지는 않습니다.

다음으로, 나무 조각들을 개별 판재로 분리하기 위해 슬라이스 플레인(slice planes)을 추가합니다. 다시 프로세싱하면 의도한 대로 분리가 완료된 것을 확인할 수 있습니다. 변경 사항을 나타내는 화살표가 다시 표시됩니다.

이제 테이블 가장자리의 볼트(bolts)와 금속 부품이 연결된 부분의 용접(welds)과 같은 작은 디테일을 추가합니다. 간단한 실린더(cylinders)와 박스(boxes)를 추가하여 이를 구현합니다. 다시 프로세싱하여 결과를 확인합니다.

볼트와 작은 용접 부분이 추가된 것을 확인할 수 있습니다. 이제 에셋에 만족하며, 제작 과정을 잠시 감상할 수 있습니다. 이는 하드 서페이스(hard surface) 프로세스의 기본적인 기능들을 보여줍니다.

Frame at 1169.34s

물론 이것이 테이블만을 생성하는 것은 아님을 인지하는 것이 중요합니다. 저희는 실제로

Frame at 1177.65s

모든 종류의 assets, weapons, vehicles, 작고 귀여운 weapon charms부터 우주에서 온 거대한 killer robots, 그리고 그 사이의 모든 것들에 동일하게 적용되는 process입니다. 다음으로, asset processor가 weapons asset에 어떻게 사용되는지 좀 더 자세히 살펴보겠습니다. 전통적으로 weapons asset은 제작이 가장 어렵고 시간이 오래 걸리는 asset 중 하나였기 때문입니다. 내부 모습은 다음과 같습니다.

Frame at 1201.48s

Blender에서 asset processor UI를 열어둔 상태입니다. 여기서 잠시 멈추겠습니다. 왜냐하면 UI가 사용자에게 얼마나 큰 두려움을 줄 수 있는지에 대해 내부적으로 논의해왔기 때문입니다. 이 섹션별로 무엇을 하는지 설명드리겠습니다.

Frame at 1219.87s

잠시 UI에 대한 이야기를 덧붙이고자 합니다. UI는 크게 두 가지 유형으로 나눌 수 있다고 생각합니다. 첫 번째는 초보 사용자를 위한 UI입니다. 이 UI는 즉각적으로 이해 가능하고 부담스럽지 않아야 하며, 깊이 있는 기능으로 접근하는 데 시간이 걸리더라도 사용자가 자연스럽게 익숙해지도록 설계되어야 합니다.

다른 한 유형은 전문가 사용자를 위한 UI입니다. 이 UI에서는 하위 메뉴를 여러 단계 거치지 않고도 기능에 즉시 접근하는 것이 가장 중요합니다. 사용자가 원하는 것을 찾는 데 불필요한 시간을 들이지 않는 것이 핵심입니다.

Frame at 1252.16s

이 점을 보여드리기 위해 일반적인 키보드를 예로 들어 보겠습니다. 처음 혹은 두 번 정도 보았을 때는 명확한 구분이 거의 없는 수많은 버튼들이 있습니다. 하지만 우리 모두 능숙한 키보드 사용자이기에, 우리는 알파벳, 숫자, 넘패드, F 키, 특수 문자, 특수 버튼, 그리고 다른 특수 버튼들과 화살표, 그리고 아마도 가장 중요한 스페이스 바가 있다는 것을 배웠을 것입니다. 이것은 사람들이 두려워해야 하지만 그렇지 않다는 것을 보여주기 위한 것입니다. 왜냐하면 이것이 바로 전문가 사용자에게 필요한 기능의 종류이기 때문입니다.

Frame at 1295.35s

Maya의 Nightshade UV Editor는 모든 것을 즉시 제공하여 수동 UV 작업 시 매우 유용했습니다. Autodesk가 이를 Maya에 통합하면서 일부 기능이 숨겨져 UV 작업이 다시 어려워졌습니다. 이는 초보 사용자가 압도당하지 않도록 하기 위한 의도로 보입니다.

Asset Processor UI를 살펴보겠습니다. 프레젠테이션 후 직접 사용하지 않더라도 이해하는 것이 좋습니다. 상단에는 입출력을 분리하여 작업 편의성을 높이는 Scene이 있습니다.

`Process` 버튼은 프로세스를 실행하며, 모든 에셋 또는 특정 에셋만 처리하여 반복 시간을 단축하는 설정을 할 수 있습니다. `Log`는 나중에 다시 다룰 것입니다.

`Asset Settings`에서는 에셋 이름, 유형, 태그 등을 설정합니다. `Component`는 에셋을 구성하는 부분이며, `Sub Component Setting`은 하위 구성 요소를 구성합니다. `Object Settings`에서는 입력 객체의 유형을 지정합니다. 이 모든 것은 에셋 내 계층 구조로 작동합니다.

하단에는 Substance Painter로 자동 설정된 프로젝트를 열고 리소스를 다시 로드하는 기능이 있습니다. UI에는 객체 유형에 따라 재질 설정 등이 달라지는 `Object Specific Settings`가 있습니다.

Hard Surface Process는 출력 베이크 ID 색상 설정과 날카로움, 더 날카로움, 더더더 날카로움 같은 프리셋으로 자동 생성된 High Poly의 라운드 레벨을 설정합니다. `Object Tags`는 Unreal Engine 재질 슬롯 유형을 지정하는 등 필수적입니다. 자동화되지 않은 부분은 추후 개선될 예정입니다.

추가 Edge Tag도 있으며, 자동으로 대부분의 것을 매칭하지만 실패 시 수동으로 재설정할 수 있습니다. 여러 객체에 하나의 객체를 매칭하려면 수동 설정이 필요하지만, 간단한 클릭으로 가능합니다. `Melt Set`에 대한 설명도 있습니다.

`Log`는 입력 설정 오류나 프로세스 중 발생한 문제를 아티스트에게 알리는 창입니다. 과거 로그는 현재보다 더 많은 오류를 발견할 수 있게 되었음을 보여줍니다. 로그는 프로세스 시간, 오류, 경고, 정보를 전달하며, 문제 객체 선택이나 자동 정리 기능을 제공하기도 합니다. Houdini의 SOP, TOP HDAs에서 출력되어 추가가 용이합니다.

이제 Blender에서 실제 에셋의 프로세스 실행을 살펴보겠습니다.

Frame at 1617.47s

이는 테이블 에셋이 아닌, 데모용 오브젝트입니다. 동일한 low poly 입력에 다른 오브젝트 유형을 추가하여 살펴보겠습니다. 플라스틱 주조된 봉제선을 만들기 위한 cast plane이 있습니다.

전면 그립에 디테일을 추가하기 위한 add booleans과, 말 그대로 빼는 subtract booleans이 포함됩니다. 또한 후면 쉘 케이스에는 intersection booleans을 사용하여 추가 디테일을 얻을 수 있습니다. 이제 process를 실행할 시간입니다.

처리 시간을 단축하여 보여드리겠습니다. 진행 표시줄이 과정을 안내하며, 에셋을 처리하는 동안에도 다른 작업을 계속할 수 있음을 보여줍니다. 생산적인 작업은 아니지만, 기능 시연을 위해 low poly 메시를 수정하겠습니다.

이 그립을 좀 더 길게 만들고, 주조된 봉제선을 연장하여 일치하는지 확인합니다. 그리고 다시 과정이 완료되기를 기다립니다.

painter가 열리면서 베이킹 작업을 진행합니다. export scene으로 이동하면 high poly, UVs, bakes가 생성되었고, painter 설정으로 출력된 것을 Blender에서 확인할 수 있습니다.

앞서 수행한 수정 사항은 이전 처리 과정에 반영되지 않았으므로, 반복 과정을 보여드리기 위해 다시 process를 실행합니다. 물론, 더 유용한 내용, 예를 들어 추가 디테일이나 스코프 추가 등을 보여줄 수도 있었겠지만, 중요한 것은 새로운 high poly, UVs, bakes, 그리고 rig까지 생성되는 과정을 보는 것입니다.

Frame at 1754.76s

이것이 대략적인 내용입니다.

Frame at 1757.99s

Unreal Engine에서 텍스처가 적용된 에셋은 다음과 같습니다.

Frame at 1764.81s

제가 예상했던 것과는 달리, 사실 놀랐습니다.

Frame at 1778.16s

제가 언급했듯이, 저희는 훨씬 더 많은 작업을 해야 할 것입니다.

Frame at 1782.32s

이러한 자동 설정들이 특정 상황에서 작동할 수 있다는 점을 말씀드립니다.

Frame at 1786.33s

원문에서 'maybe half of the cases, but it turns out that I think'라는 구절은 명확한 맥락 없이는 정확한 의미를 파악하기 어렵습니다. 이 문구만으로는 어떤 특정 상황이나 결과를 지칭하는지 알 수 없기에, 번역 및 요약 시에도 구체적인 정보 없이 가능한 포괄적인 표현으로 처리됩니다.

따라서, 해당 구절을 그대로 직역하면 '아마도 절반의 경우겠지만, 알고 보니 그렇다고 생각합니다.'와 같이 됩니다. 하지만 한국 게임업계에서 통용되는 자연스러운 표현을 고려하고, 정보 전달의 명확성을 높이기 위해 좀 더 간결하게 다듬을 필요가 있습니다.

결과적으로, 문맥이 부족한 상황에서는 '절반 정도의 경우에서 나타나지만, 제 생각에는 그렇습니다.'와 같이 표현될 수 있습니다. 이는 불확실성과 주관적인 판단을 포함하는 뉘앙스를 유지하면서도 간결성을 확보한 번역입니다.

Frame at 1789.95s

이 메쉬는 실제 하이폴리(high poly) 입력이 한두 개 정도이고, 나머지는 모두 자동화된 결과입니다.

Frame at 1794.80s

이것들은 사소한 스프링(springs)들이며, 왜 그런지는 곧 설명해 드리겠습니다. 저희가 사용하는 입력(input)에 대해 잠시 이야기해 보겠습니다.

Frame at 1804.77s

주요 입력은 low poly이며, 게임에서 실제로 사용되는 것은 low poly뿐이기 때문입니다. 나머지 요소는 단순한 데이터일 뿐입니다. 또한 low poly는 제작하기 가장 쉬운 형태입니다.

만약 high poly를 먼저 제작하고 나머지 요소를 생성하는 방식으로 접근했다면, 단순히 어려울 뿐만 아니라 high poly 제작 자체가 low poly보다 훨씬 복잡합니다.

앞서 보여드린 것처럼, 일반적인 기본 boolean 연산을 활용합니다. 또한 edge tag를 설정하는 것이 중요한데, sharp edge는 high poly 생성 시 crease로, UV 작업 시 UV split으로 활용됩니다.

또한 automatic rigging of facets 등을 위한 tag도 설정할 수 있습니다.

Automatic UV가 항상 완벽하지 않기 때문에 UV를 직접 입력할 수도 있습니다. 이는 추후 자세히 설명드리겠습니다.

추가적으로 입력 geometry로는 실제 high poly 또는 mid poly를 사용할 수 있습니다. (이에 대한 자세한 설명은 생략하지만, 의미가 있습니다.)

Frame at 1885.23s

입력되는 데이터의 종류에 대해 설명드리겠습니다. Edge Tags는 중요하며 복잡해 보일 수 있지만, 실제로는 그렇지 않습니다. Blender의 기본 Edge Tags를 사용하여 sharp, seam, crease를 표시할 수 있습니다.

Mark Sharp 기능은 creasing과 UV splitting을 동시에 수행합니다. 이 중 하나만 원할 경우 crease나 UV seam을 사용하면 됩니다. Houdini는 이러한 설정을 받아 마법 같은 결과물을 생성합니다.

모든 과정은 PDG Net을 통해 처리됩니다. 겉보기에는 단순하지만, 실제로는 subnet 안에 subnet이 있는 구조입니다. 대부분의 단계는 asset 종류나 처리 과정에 관계없이 동일합니다.

가장 중요한 부분은 import 직후의 dynamic process spawning입니다. 현재 처리 중인 데이터에 따라 필요한 process를 자동으로 생성합니다. 이는 process가 무거워 모든 process를 미리 생성하는 데 시간이 오래 걸리는 문제를 해결하기 위함입니다.

Houdini 19.5 버전에서 파일 로딩 시간을 몇 분 단축하는 업데이트가 있었고, 이는 매우 훌륭한 성과입니다. 최적화에 많은 시간을 투자했는데 Houdini 업데이트만으로도 큰 개선을 얻었을 때의 기쁨은 이루 말할 수 없습니다.

이후 export와 baking 과정이 진행됩니다. Houdini 내부에서 입력 데이터가 어떻게 처리되는지에 대해 더 자세히 설명드리겠습니다.

Frame at 1991.04s

Low poly는 이미 필요한 수준에 가깝기 때문에 많은 변화가 일어나지 않습니다. 다만, Flat edges가 Dissolve되거나 숨겨진 Face가 제거되는 등의 최적화가 이루어집니다. 이는 Face가 실제로 노출되어 있는지 확인하는 과정이며, 노출되지 않은 Face는 제거됩니다. 아티스트 입장에서는 200개의 Face가 자동으로 제거되어 수고를 덜 수 있어 매우 유용한 기능입니다.

Frame at 2017.24s

UV 자동화는 더 까다로운 작업입니다. Houdini와 같이 자동 UV 솔루션이 존재하지만, 게임 개발에 필요한 UV를 제공하지는 못합니다. 따라서 이 부분이 가장 복잡한 설정 단계라고 생각합니다.

Frame at 2044.50s

본 내용은 Houdini를 활용한 UV 언래핑(UV Unwrapping) 과정에 대한 설명입니다. 특수한 기하학적 형태, 즉 토러스(torus), 파이프(pipes), 구(spheres)와 같이 UV에 특별한 요구사항이 있는 오브젝트들을 먼저 처리합니다. 이러한 오브젝트를 Houdini에서 정확하게 감지하고 처리하는 것은 재미있는 도전 과제이며, Embark에서는 이를 해결하는 데 즐거움을 느낍니다.

자동 UV 언래핑은 어려운 엣지(hard edges)를 분할하고, 쉘(shell)별 왜곡(distortion) 정도를 파악하여 최적의 심(seam) 위치를 결정합니다. 이후 성공 여부를 판단하고, 쉘들이 올바르게 정렬되도록 합니다. 쉘의 경계 각도와 평행/수직 엣지 길이를 분석하여 정렬하며, 이를 통해 픽셀이 쉘 경계와 일치하도록 합니다.

아직 구현되지 않았지만, 쉘의 면적, 점 개수, AO(Ambient Occlusion) 요구사항, 디테일 유무, 시야 각도 등을 고려하여 겹칠 수 있는 쉘을 결정하는 기능이 개발 중입니다. 이는 수동으로 UV를 겹치는 작업이 번거롭고 오류 발생 가능성이 높기 때문에 자동화가 필수적입니다.

이어서 Houdini의 기본 UV 레이아웃 노드를 사용하여 정사각형 또는 비정사각형 레이아웃, UV 커버리지 최적화, 쉘 간 패딩(padding) 양 결정, 오브젝트 크기 및 텍스처 해상도에 따른 쉘 스케일링 등을 수행합니다. 이러한 복잡한 과정들을 통해 최종적으로 하드 서페이스(hard surface)를 위한 자동 UV가 완성됩니다.

Frame at 2262.20s

UV 기능 중 'closed strips'와 같이 왜곡되지 않지만, UV 공간 최적화를 위해 분할하고 직선화해야 하는 경우가 있습니다. 이는 매우 유용한 기법입니다.

완벽한 그리드 토폴로지가 없는 메쉬의 경우, 이러한 작업은 더 어렵습니다. 하지만 메디컬 엑시스 스켈레톤을 생성하고 포인트 디폼 등의 기법을 적용하여 진행할 수 있습니다.

많은 경우, 시도 후 결과를 평가하고 이전 단계로 돌아가는 반복적인 과정을 거칩니다. 모든 경우에 성공하지는 않지만, 때로는 효과적인 방법입니다.

Frame at 2310.54s

이 기능은 자동 UV 생성 시 많은 사용자들이 결과를 그대로 받아들이는 경향이 있지만, 이는 바람직하지 않으며 검토가 필요합니다. 특히 길이가 긴 Shell의 경우, 전체 UV 레이아웃이 해당 Shell의 크기에 제약을 받게 됩니다.

이러한 문제를 해결하기 위해, 기능은 긴 Shell을 감지하고 렌더링 품질 저하를 방지하고자 자동으로 분할합니다. 이를 통해 훨씬 더 나은 UV Coverage를 확보할 수 있습니다.

또한, 입력 로케이터(Locator)나 Blender의 Empty 오브젝트를 사용하여 스케일링 기능을 제공합니다. 예를 들어, 무기의 카메라 위치를 지정하고 UV의 스케일 업/다운을 조절하는 데 활용할 수 있습니다.

Frame at 2362.16s

무기, 가젯 및 스킨이 필요한 모든 것에 대해 타일링 가능한 UV 세트를 포함하는 세컨더리 UV 셋을 얻습니다. 처음에는 보기 흉하지만, 이 기술을 이해한다면 당연한 결과입니다. 작업하기는 어렵지만, 일단 방법을 파악하면 컴퓨터가 능숙하게 처리합니다. 쉘에서 시작하여 다른 쉘을 정렬하고 일치시키면 에셋 전반에 걸쳐 자연스럽게 이어지는 패턴을 얻을 수 있습니다. 이 UV 셋 작업에만 에셋당 며칠이 소요될 수 있으며, 이는 반복 작업 시간과 관련하여 번거로움을 야기합니다. 그러나 이제는 자동화되어 이러한 UV 관련 어려움을 겪을 필요가 없습니다.

Frame at 2420.47s

입력 UV를 유지하는 기능이 필요합니다. 자동 UV 생성으로 처리하기 어려운 부분이 있을 수 있기 때문입니다. 현재로서는 이 부분이 유일하게 Face 단위로 설정되는 입력 방식입니다.

복잡한 Mesh에서 특정 영역의 UV 생성이 실패할 경우, 해당 부분만 수동으로 처리하고 나머지는 자동으로 생성하려는 요구사항이 있습니다. 이를 위해서는 해당 UV를 UVs에 포함시켜야만 합니다.

이를 위해 Input에 여러 UV Channels를 설정하여 각각 다른 기능을 수행하도록 합니다. UV Shell의 위치에 따라 기존 UV를 유지하거나, 자동으로 생성하거나, 혹은 UV를 사용하지 않도록 설정할 수 있습니다.

이 기능은 매우 유용하게 사용되고 있습니다. 예상과는 달리 Unwrap이 어려운 경우보다, Decal을 위한 Secondary UV set을 만드는 데 주로 활용되고 있습니다. 특정 Face를 Secondary UV space의 0 to 1 영역에 매핑해야 하는데, 이는 자동 생성이 어렵기 때문입니다.

Frame at 2516.79s

다음으로 high poly 단계에서는 volume이 중요합니다.

Frame at 2521.40s

메시(mesh)를 볼륨(volume)으로 변환하기 위해 모든 메시는 반드시 캡(cap) 처리되어야 합니다. 캡 처리 과정은 자동화 시도를 하지만, 때로는 어려움이 있어 블렌더(Blender) 내에서 직접 캡 처리 후, 해당 면에 'delete material'을 추가합니다. 이는 로우 폴리(low poly) 생성 시에는 해당 면을 제거하고, 하이 폴리(high poly) 및 볼륨 변환 시에는 유지하도록 지시하는 역할을 합니다.

이후 오브젝트 매칭(object matching) 과정이 진행됩니다. 매칭 가능한 오브젝트는 포인트 클라우드(point cloud)로 변환되며, 매칭이 필요한 오브젝트들은 볼륨별로 포인트를 그룹화하여 어느 볼륨에 속하는지, 어떤 포인트와 매칭될 수 있는지 등을 결정합니다. 오브젝트 유형과 매칭 방법이 다양할 경우 이 과정이 다소 복잡해질 수 있습니다.

메시의 서브디비전(subdivision)이 이루어집니다. 하드 엣지(hard edge)와 크리스(crease)는 최대치로 크리스 처리된 후 서브디비전됩니다. 둥근 형태의 메시에서 서브디비전 시 문제가 발생할 수 있으나, 후처리로 BDB(Bake Data Base) 변환 및 폴리싱(polishing) 과정을 거치며 핀칭(pinching) 현상 등이 완화되어 대부분 잘 작동합니다. 문제가 발생 시 추가적인 루프(loop)를 넣어 해결할 수 있습니다.

디테일(detail) 추가 단계에서는 용접(weld) 설정 등을 위한 박스(box)와 같은 요소들이 처리됩니다. 스플라인(spline) 생성 및 요소 추가는 간단하며, 볼트(bolt)와 캐스트 심(cast seam) 등도 추가됩니다. 이후 모든 요소는 VDB(Volume Data Base)로 변환되고 불리언(Boolean) 연산이 적용됩니다.

이전에는 지오메트리(geometry) 상에서 불리언 연산을 수행했으나, 모든 것을 볼륨으로 변환하는 과정에서 불리언 연산 역시 볼륨 상에서 수행하는 것이 훨씬 효율적입니다. 이 방식은 여러 번의 변환을 거치는 것보다 훨씬 빠릅니다.

이후 폴리싱 과정을 통해 하이 폴리처럼 보이도록 만듭니다. 자동으로 메시를 리듀스(reduce)하여 파일 입출력 시간을 절약하며, 특히 대형 로봇 같은 복잡한 오브젝트의 경우 볼륨에서 지오메트리로 변환하여 저장하는 과정에서 발생하는 과도한 메모리 사용량을 줄여줍니다. 메시 리덕션에 시간이 걸리더라도 전체적인 시간 절약에 기여합니다.

하이 폴리 생성 과정에서는 볼트(bolt)와 같은 요소들에 대해 절차적(procedural)인 접근 방식을 사용합니다. 사용자 인터페이스(UI)에서 원하는 볼트 유형을 설정하면, 다양한 조합으로 수백 가지의 볼트 유형이 생성됩니다. 블렌더에 입력된 실린더(cylinder)를 기반으로 하이 폴리 볼트가 생성되며, 이는 다른 사람이 만든 메시의 볼트가 보기 좋지 않을 때 이를 수정하고 통일된 품질을 유지하는 데 도움을 줍니다.

Frame at 2789.80s

Cast Seams은 Plane이 Mesh를 가르는 지점에 미세한 디테일을 생성합니다. 플라스틱의 재질감을 표현하는 데 중요한 역할을 합니다. 이전에는 Subdivision 모델에서 수동으로 Split을 추가하여 생성했으나, 볼륨을 해치거나 폭이 너무 넓어지는 문제가 있었습니다.

Welds의 경우, 현재 구현된 모습은 좌측에 보이는 것과 같습니다. 대부분의 상황에서 잘 작동하지만, 개선 및 더욱 보기 좋게 만드는 테스트를 진행하였습니다. 아직 적용되지는 않았지만, 이 또한 Procedural하게 처리될 예정입니다. 이를 통해 모든 사용자가 자동으로 더 나은 품질의 Welds를 영구적으로 만들 수 있게 되어 기술 발전을 이루고자 합니다.

Frame at 2834.52s

VDB를 이용한 자동 하이폴리 생성의 몇 가지 한계점을 말씀드리겠습니다. 원하는 모양이 있더라도, 최적화된 로우폴리 결과물을 위해 3D 아티스트의 노력이 중요합니다. VDB를 직접 처리하면 의도와 다른 결과가 나올 수 있습니다.

이를 해결하기 위해 하이폴리를 입력하는 것이 좋습니다. 이렇게 하면 좋은 베이크(Bake) 결과를 얻을 수 있습니다. 로우폴리를 직접 처리하면 VDB의 특성상 형상이 왜곡될 수 있기 때문입니다.

또 다른 한계점은 매우 정교한 지오메트리(Geometry) 처리에 약하다는 것입니다. 이 경우 복셀(Voxel) 수를 늘려야 하는데, 이는 성능 부담을 야기합니다. 따라서 이럴 때는 하이폴리를 입력하거나 메쉬(Mesh)를 더 두껍게 만드는 것이 좋습니다.

AO(Ambient Occlusion) 베이킹은 복잡한 과정을 거칠 수 있습니다. 에셋의 각 컴포넌트(Component)에 AO 생성 여부나 수신 여부를 제어하는 태그를 적용할 수 있습니다. 이를 통해 주변 컴포넌트에 AO를 생성하지 않거나, 다른 컴포넌트로부터 AO를 받지 않도록 설정할 수 있습니다.

두 태그를 모두 활성화하면 격리된 베이킹(Isolated Bake)이 가능하여 작업이 매우 편리해집니다. 또한, 에셋을 분할했을 때 복제되는 경우, 추가적인 AO 객체를 지정하거나 격리된 베이킹 결과에 특정 영역에만 AO 효과를 적용할 수 있습니다.

Frame at 2969.42s

베이킹 시 자동으로 skew mesh가 생성됩니다. 이는 low poly의 UV를 단순하게 subdivide하는 방식으로 작동하며, 대부분의 경우 놀라울 정도로 잘 작동합니다.

간혹 문제가 발생하는 경우가 있습니다. 예를 들어, low poly로 된 cylinder에서 edge를 따라 baked detail이 있는 경우, 상당한 skewing이 발생할 수 있습니다.

이러한 문제를 해결하기 위해 low poly 오브젝트에 'bevel skew mesh' 기능을 활성화하는 태그를 사용할 수 있습니다. 이 기능은 geometry를 beveling하는 방식으로 작동하며, skewing을 방지합니다.

하지만 이 기능은 geometry 관련 작업이라 복잡하며, 간혹 실패할 수 있어 기본적으로 활성화되어 있지 않습니다. 만약 이 기능으로도 해결되지 않는다면, low poly에 geometry를 추가하고 해당 edge를 dissolve하여 수동으로 처리해야 합니다.

Frame at 3019.85s

모든 베이킹(baking) 작업은 Painter에서 이루어집니다. 저희는 여러 베이킹 소프트웨어를 시도해 보았으나, Painter가 매우 훌륭한 결과물을 제공합니다. Painter에서의 자동화 구현이 어렵기에 처음에는 까다로웠습니다. 하지만 수많은 해킹(hacking) 작업을 거쳐 원하는 결과를 얻었습니다. 최신 업데이트에서는 베이커(baker)가 개선되었고, 최신 버전에 맞추기 위해 다시 많은 해킹이 필요했습니다. 결국 모든 결과물은 Painter로 들어가며, 이는 저희가 필요로 하고 원하는 것을 정확히 제공하고 매우 빠르게 처리합니다. 지금 와서 생각해보면 당연한 선택이었지만, 당연함이 항상 명확하게 작동하는 것은 아닙니다.

Frame at 3063.33s

Rigging 또한 모든 것을 절차적으로(procedural) 처리하여 수분 내에 반복 작업을 완료할 수 있도록 전체 설정을 구축했습니다. 하지만 에셋에 Rigging이 적용되어 있어, 무기 외형 변경과 같은 업데이트 후에는 Tech Animator에게 수동으로 알려야 하는 번거로움이 있었습니다.

이에 Rigging 자동화를 결정했으며, 모든 정보를 활용하여 새로운 Rig를 생성하도록 했습니다. 컴포넌트별 분리와 위치 정보를 바탕으로, 각 부분을 Joint로 인식하고 태그와 설정을 통해 계층 구조를 설정했습니다. 예를 들어, Bipod는 Joint로, Jiggle Joint로서 움직임을 표현하며 Bipod의 자식으로 설정하여 Bipod 자체의 움직임에도 반응하도록 했습니다.

이러한 방식을 Houdini에서 구현한 결과는 매우 만족스러웠습니다. Soft Skinning과 같은 더 복잡한 요구사항도 처리할 수 있다는 것을 확인했습니다. 현재 모든 무기는 3D 아티스트들이 자동화된 Rigging 툴을 사용하여 Rigging하고 있습니다. 아티스트들은 Joint 배치 위치 등에 대한 약간의 학습만으로도 이러한 툴을 효과적으로 사용할 수 있습니다.

Frame at 3165.94s

이것은 언리얼 엔진에서의 Rig 모습을 보여드리는 예시입니다. 여러분 모두 Rig가 어떻게 생겼는지 알고 계시겠지만, 언리얼 엔진에서는 이러한 모습으로 표현됩니다. 이 Rig는 auto rig이며, 제가 controls을 사용하여 조작하는 과정을 보여드리고 있습니다.

Frame at 3181.27s

이러한 설정이 완료되면 언제든지 더 많은 프로세스를 연결할 수 있습니다. 예를 들어, 이펙트 아티스트들이 메쉬에 멋진 홀로그램 효과를 구현하고 싶어했습니다. 이를 위해 와이어프레임용 메쉬 스트립을 생성하고, 이를 깔끔하게 정리하며, 모든 것을 하나의 에셋으로 통합할 수 있는지 문의했습니다. 이전에는 이러한 작업이 번거로웠고, 에셋 업데이트 시 이펙트 메쉬까지 고려해야 하는 반복 작업의 부담이 있었습니다.

하지만 이제는 이펙트 메쉬 태그를 활성화함으로써, 간단하고 명확한 Houdini 작업을 통해 해당 이펙트 메쉬가 자동으로 출력되도록 할 수 있습니다. 이전에는 동일한 Houdini 프로세스를 만들 수는 있었지만, 아티스트들이 직접 Houdini에 들어가 수동으로 실행해야 하는 불편함이 있었습니다.

지금은 단순히 태그를 활성화하는 것만으로도 해당 작업이 자동화되어 모두에게 효율적인 결과가 제공됩니다. 이는 아티스트들의 작업 효율성을 크게 향상시키고, 반복적인 수동 작업을 줄여줍니다.

Frame at 3248.19s

Houdini이기에 무언가를 Scatter해야 합니다. 업무 외 시간에 무기 위에 먼지 입자를 Scatter하는 것을 조사해 보았는데, 이것이 더 높은 수준으로 나아갈 수 있는지 확인하기 위함이었습니다. 오랫동안 Marek Denko의 체스 말 렌더링 작품에 영감을 받았었는데, 머리카락 조각 등이 사실적으로 표현되어 게임에서도 동일하게 구현할 수 있을지 고민했습니다.

이를 위해서는 Alpha Cards 등이 필요할 것입니다. 텍스처뿐만 아니라 Material에 Fibers 등을 포함시키고, Cross Borders와 Mesh Changes를 통해 놀라운 결과물을 얻을 수 있습니다. 조금은 징그러워 보일 수도 있겠지만요.

Frame at 3300.65s

이유는 과도하기 때문입니다. 누군가의 고양이가 이 AK 위에 잠들어 있었습니다. 하지만 이것이 게임 내에서 실제로 보일지 여부는 아직 결정되지 않았지만, 작품의 개성을 판매하는 데 크게 기여합니다. 이제 제가 마무리하기 전에 다른 프로세스들을 간략히 살펴보겠습니다.

Frame at 3319.37s

이 에셋은 asset processor를 통해 처리됩니다. 과거 Concretefy로 불렸던 이 기능은 이제 Edgeware로 명칭이 변경되었습니다. Edgeware는 영상에서 보셨던 콘크리트 구조물의 엣지 데미지(edge damage)와 UV 매핑, 엣지 추가 등의 간단한 절차적(proceduralism) 생성을 수행합니다. 개발에는 시간이 소요되지만, 작동 방식은 명확합니다.

또한, Edgeware는 Blender에서 직접 실행할 수 있다는 장점이 있습니다. 이전에는 Houdini engine tool이나 Houdini와의 live link를 사용했지만, 이제는 Blender에서 일반적인 에셋 설정과 동일하게 준비하고 process를 실행하면 결과물을 얻을 수 있습니다.

Frame at 3364.80s

트림 맵퍼(Trim Mapper)는 기본적인 지오메트리(geometry)로부터 UVs를 생성하는 툴입니다. 이러한 종류의 에셋(asset)에서는 다른 기능들에 비해 비교적 직관적으로 작동합니다. 사전에 정의된 트림 레이아웃(trim layout)에 맞춰 매핑하고, 노멀(normals)을 반전시키기 위해 버텍스 컬러(vertex colors)를 적용합니다. 다양한 기능이 포함되어 있지만, 실제 사용 가능하며 매우 유용합니다.

Frame at 3389.84s

케이블(cable) 처리에 있어 가장 미세한 과정을 다루게 됩니다. 저희는 크리에이터(creator) 작업 시 많은 케이블을 사용한다는 것을 인지했습니다. 이는 유기적인 느낌을 더해주지만, 길고 좁은 삼각형(narrow triangles)이 너무 많이 생성되는 문제를 야기했습니다.

이에 대한 대안으로, 씬 메쉬 스트립(thin mesh strips)을 사용하고 언리얼 엔진(Unreal Engine)에서 스플라인 씬(spline thicken) 셰이더를 활용하는 방식을 채택했습니다. 하지만 씬 메쉬 스트립을 수동으로 제작하고 UV 매핑하는 작업은 그 크기가 작아 시각적으로 확인하기 어렵기에 작업이 까다롭습니다.

따라서 아티스트는 블렌더(Blender)에서 일반적인 튜브(tube) 형태를 입력하고, 후디니(Houdini)가 나머지 작업을 처리하도록 했습니다. 이는 또한 해당 스플라인(spline)이 하드 서페이스(hard surface) 부분의 AO 베이크(AO bake)에도 영향을 줄 수 있어 유용합니다.

Frame at 3449.47s

Asset processor를 거치지 않는 cloth process에 대한 이미지를 보여드리겠습니다. Houdini Engine for Unreal을 통해 결과물이 매우 우수합니다.

향후 계획에 대해 간략히 말씀드리겠습니다. 여전히 많은 작업이 남아 있으며, 현재 저희 아티스트 10명 모두가 이를 사용하고 있습니다. 기술 아티스트들도 만족하며 아트 제작에 활용하고 있습니다.

콘셉트 아티스트들도 사용하고 있다는 점이 고무적입니다. 이들은 기술적인 부분을 신경 쓰지 않고 창작에 집중하고자 합니다. 이제 그럴 필요가 없어졌고, 게임 에셋 제작에 참여하고 있습니다.

매일 이슈가 발생하지만, 사용량이 급증했기 때문입니다. 하지만 이슈의 빈도와 심각성은 줄어들고 있습니다. 초기에는 프로세스 자체가 불가능했지만, 이제는 UV shell의 미세한 문제까지 해결하고 있습니다.

가장 큰 문제는 setup입니다. Houdini, Painter, Blender, GitHub, Perforce 등의 설치 및 버전 관리가 복잡합니다. 문서화된 절차를 따르지 않으면 문제가 발생하지만, 올바르게 설정하면 정상 작동합니다.

아티스트가 툴을 개발할 때 겪는 어려움이며, 단순한 자동 설치로는 해결하기 어렵습니다. 또한, 사용자 기대치가 높아지는 것도 문제입니다. 쉽고 자동화된 과정을 기대하는 이들에게는 완벽한 자동화를 제공하기 어렵습니다.

Frame at 3583.95s

이전에도 말씀드렸듯이, 이로 인해 사람들이 결과물을 항상 제대로 검토하지 않게 됩니다. 물론 로그(log)가 이를 돕는데, 무엇이 잘못되었는지 알려주기 때문입니다. "이것이 작동하지 않았습니다. 조사해 주세요."라고 말입니다. 또한, 이것이 마법이 아니라 단순히 매우 훌륭하다는 것을 알기에 사람들이 더 쉽게 접근할 수 있습니다. 여기에는 여전히 존재하는 한계점에 대한 더 나은 문서화가 필요하며, 이를 통해 기대치를 어느 정도 관리해야 합니다. 기대치가 너무 높아지기 때문입니다. 제 발표 부분은 여기까지입니다. 감사합니다. 질문 시간을 먼저 가질까요, 아니면 Daku의 발표를 먼저 할까요? 죄송합니다, Daku. 시간을 많이 뺏었네요. 괜찮습니다. 나머지 내용은 저희가 진행하겠습니다. 네, 질문이 있다면 몇 개 받고 Daku가 발표를 진행할 수 있습니다. 네? 네? Blender와 Houdini 간의 인터페이스를 사용하고 계신가요, 아니면 Houdini Engine을 사용하시나요, 아니면 여전히 커스텀 방식인가요? 아니요, Houdini Engine입니다. 하지만 Blender에는 Houdini Engine이 존재하지 않습니다. Blender는 모두에게 영구적으로 무료이기 때문입니다. 따라서 모든 것이 자체적으로 내부에서 구축된 커스텀 방식입니다. 좋습니다. 네. 네? 테크니컬 아티스트는 어떻게 운영하시나요? 저희는 테크니컬 아티스트가 상당히 많습니다. 아마 실제 아티스트보다 테크니컬 아티스트가 더 많을 것입니다. 기록을 위해 그들도 실제 아티스트입니다. 하지만 이것은 주로 테크 아티스트의 도움으로 구축되었습니다. 물론 저와 다른 아티스트가 주로 만들었지만, 저희가 어려움을 겪을 때마다 많은 도움을 받았습니다. 저희는 매우 재능 있는 테크 아티스트를 많이 보유하고 있습니다.