TECHARTNOMAD | TECHARTFLOWIO.COM

SUBSTANCE

Substance open-day 2019 상해 발표자료.

jplee 2023. 8. 30. 14:39

한국에서 2015년 봄 까지 알레고리드믹에서 리드 TA 로 근무 한 이후 중국으로 새로운 기회를 찾아 갔었죠.

2019년 뜻하지 않게 좋은 기회를 얻어 한국이 아닌 중국에서 서브스턴스 오픈데이 2019 발표자로 서게 되었습니다.

주로 텍스처 제작쪽이 아닌 워크플로쪽에 대한 인티그레이션이나 환경 개선에 집중 하고 있던 때였고 그와 관련 된 간단한 사례를 발표 했었죠.

 

2019년 다시 여러분들 만나게 되어 영광입니다.

저는 Giant Interactive 에서 테크니컬 아트디렉터로 근무 하고 있는 LIZHENGBIAO 입니다.

20년 정도 컴퓨터 그래픽스와 게임 업계에서 근무 하고 있습니다.

다시 한번 이런 자리를 마련 해 주신 알레고리드믹 어도비 여러분과 Meizi 에게 진심으로 감사 드립니다.

 

이번 강연에서는 크게 두 가지 내용에 대한 발표를 할 것입니다.

하나는 모바일 게임 개발 과정에서 이 제품을 어떻게 사용 했는지 아주 작은 부분이지만 설명 할 것입니다.

또 하나는 이 제품을 사용 하여 아트 리소스를 제작 할 때 이런 식으로 발전 시킬 수도 있구나! 하는 형식의 내용으로서 크게 두 가지를 발표 할 것입니다.

텍스처 아트 분야에 전문적으로 종사 하시는 분 손들어 보세요.

또 테크니컬 아트 분야에 전문적으로 종사 하시는 분도 오늘 오셨나요?

60분 동안의 발표라서 깊은 내용을 다 담지 못했습니다. 이 점 양해 부탁 드립니다.

 

미술팀을 위한 표준화 재질 제작 방안입니다.

 

프로젝트에 적용 중인 표준 재질들을 먼저 보도록 합시다.

내부 프로젝트에서 사용 하기 위한 내부 표준화 이기 때문에 산업표준을 추구 하지는 않았습니다.

참여 한 프로젝트는 고검 이라는 중국 당나라 시대 양식을 참조하고 있는 무협 오픈월드 게임으로 멀티플레폼을 지원하는 게임이었습니다.

 

시대적인 자료를 최대한 참고 하였고 너무 과도 한 표현은 표준 재질에서는 사용 하지 않았습니다.

 

황동 이나 철 역시 우리 게임 내에서 사용 할 정도를 목표로 제작 했습니다.

같은 금속 가테고리에 포함 되더라도 실제 이 금속이 어떤 오브젝트에 주로 사용 되며 당조 시대에 존재 했을 만한 가공 방식을 기준 으로 했습니다.

그 시대에는 현대 시대에서 사용 하는 가공 기술이 없었기 때문에 Grinding 효과는 있으면 안됩니다.

스크레치 효과도 거의 제거 해야 합니다. 모바일 게임은 스크레치 효과를 디자이너 에서 추가 하기 보다는 좀 더 분명하고 목적성 있게 모델링 에서 작업 해 주는 것이 더 좋은 결과에 도달 할 수 있었기 때문 입니다.

 

배경팀은 다양한 나무 목재 지질 요구가 있었습니다.

현재 배경팀의 추가 수요를 확인 하면서 표준 재질을 더 추가 하고 있습니다.

 

포토스켄 텍스처를 일부 활용 하기도 했고 절차적 텍스처도 함께 사용 했다.

다만 어느정도 변함 없이 자주 사용 되는 재질은 절차적 텍스처를 여러 값으로 변환 후 텍스처로 변환 하여 프리셋화 하여 관리 했는데 너무 복잡한 구성 요소를 갖는 절차적 텍스처는 계산 시간등에 영향을 많이 줬기 때문에 미술팀과 협의 하는 과정은 무척 중요 하다.

 

돌 재질이나 벽 재질등은 서브스턴스 소스를 자주 활용 했습니다. 하지만 대부분 원본 SBS 파일을 모두 수정 하고 불필요 한 노드를 모두 제거 하거나 불필요 한 변수들도 모두 제거 하면서 우리 미술팀의 요구사항에 최대한 부합 하는 것을 가장 큰 목표로 했습니다.

 

분명하게 말하자면 이번 강연 트랙은 모바일 게임 개발에 더 초점을 두고 있습니다.

콘솔 게임이나 PC 게임 개발은 이미 4K 화면 그리고 미래에는 8K 화면을 렌더링 할 것입니다.

하지만 당분간 모바일 게임 화면은 대부분 6인치와 12인치를 넘지 않을 것입니다.

이 뜻은 우리가 어떻게 그럴 듯 하게 텍스처 밀도를 타협 할 것인가와 관계가 밀접 합니다.

또한 당분간 메모리 통로 역시 크게 발전 하지는 않을 것이기 때문이죠.

우리 게임은 500 PPI 를 넘지 않는 것을 게임 기본 설정으로 했다.

게임 엔진 API 를 사용 하여 최고 성능 디바이스 에서는 500 PPI 를 넘는 경우도 있다.

 

생각 보다 모바일 게임 화면에서 어떻게 텍스처를 제작 해야 하는지 생각 해야 할 것이 많다.

특히 정교한 묘사도 문제가 많지만 너무 정교한 묘사에 의해 생기는 스팩큘러가 화면상에서 하얀 점으로 보일 때가 많고 특히나 HDR 환경에서 더욱 이런 현상은 심하기 때문에 사용자의 눈을 피로 하지 않는 정도의 묘사 정도를 찾으면서도 좋은 느낌의 텍스처 완성을 이루는 것은 많은 노력이 필요 하다.

 

프로젝트에 적합한 표준 재질 수립을 위해 어떤 생각을 했는지 살펴 보겠습니다.

두 가지 가장 큰 핵심은 아트 디렉터의 미술 방향을 이해 해야 하는 것이고 다른 하나는 함께 일 하는 미술팀의 기본 능력을 잘 파악 해야 하는 것입니다.

 

크게 4가지 단계를 거쳐서 개발 하고 있습니다.

제작 하는 목적을 팀원과 공유 하고 어떤 수준으로 제작 해야 할 지 미술팀과 토론 해야 합니다.

그리고 이해 해야 합니다.

우리 제품의 Platform 이라던가 아트디렉터의 세밀한 요구 사항이나 굳이 불필요 한 표현들에 대한 제거를 하는 방식으로 규격화 해야 합니다.

충분히 위 두 단계를 지나왔다면 초안 문서를 작성 합니다.

저 같은 경우 초안 문서는 미술팀에서 직접 작성 하게 요청 했고 그 문서를 읽어 보면서 미술팀의 이해도를 파악 하였고 잘 못 된 이해도를 교정 하면서 2차 문서를 작성 했습니다.

마지막으로 테스트 단계는 동료 TA 분의 도움으로 미술팀과 좀 더 직접 적인 사용 테스트를 요청 했습니다.

이렇게 테스트 단계에서 수정 해야 하는 사항과 추가 요청 기능 또는 새롭게 더 추가 해야 하는 표준 질감을 제작 하는 방식으로 회사 자체 표준 재질 리스트를 제작 해 나가고 있습니다.

 

미술팀과 협력을 위한 제작 계획을 수립 했습니다.

토론 하고 미술 방향을 이해 한 후에 COLOR ID 는 이후 누가 최종본을 제작 할 것이며 어떤 방식으로 버전을 관리 할 것인지에 대한 여러가지 내용들을 계획에 포함 시켰습니다.

하지만 분명히 첫 번째 재질을 제작 할 때는 많은 수정 사항들이 발견 될 것입니다.

 

계획에 따라 1차 초안 문서를 작성 했다.

현재도 지속적으로 미술팀의 추가 수요를 반영 하여 표준 질감 리스트를 계속 추가 하고 있다.

하지만 애초의 목적을 잊어서는 안된다.

게임의 세계관을 이해 했다면 당나라 시대 또는 중국 대륙 그리고 몽고 지역 이나 인도 등지와 같은 중국과 교역이 있었던 지역 외의 재질을 걸러 내야 한다.

그리고 근대 또는 현대에 존재 했을 것 같은 화학적인 혼합 물질을 걸러 내야 한다.

나무 재질 역시 마찬가지로 미국 대륙에서나 존재 하는 나무 재질도 걸러 내야 하는데 서브스턴스 소스에서 미술팀이 개인취향에 근거 하여 불분명한 재질을 무작위로 다운로드 받아서 사용 하는 것도 올바르지 않기 때문에 재질 관리는 최대한 철저하게 노력 해야 한다.

 

표준 질감을 내부에서 새롭게 정의 해서 사용 하려는 가장 큰 목적은 크게 두 가지에 있다.

하나는 시간대에 따른 가공 기법에 의한 재질 표현 방식과 아트 디렉터의 미술 방향성에 있고

다른 하나는 거의 모든 미술가들의 생각이 대부분 다르기 때문에 재질을 표현 하는 방식이 다르거나 색체가 다르고 녹슨 정도나 스크래치 표현 밀도나 크기도 모든 아티스트가 모두 달랐다.

미술팀 결과물을 매번 제작 할 때마다 컴펌 하고 수정 요청 하는 등의 시간 낭비가 너무 큰 문제 였기 때문에 적당한 중간 지점을 이룰 수 있는 표현 기능 외에 모두 다 제거 하고 다시 통합 해야 한다고 결론을 내렸다.

문서를 보면 아트디렉터의 요청이 있는데 재질 표현에서 고대 유물 처럼 보이는 묘사가 우리 게임에 거의 나오지 않기 때문에 복잡한 Generator 를 여럿 사용 할 필요가 없다는 것을 다시 한번 미술팀에게 알려 주는 역할을 했다.

 

보통은 개발 팀 통합 재질이 없기 때문에 매번 아티스트는 원화를 새로 받으면 적어도 하루 이상 재질을 검색을 하게 됩니다. 저는 이런 모습을 너무 자주 봤는데 제가 참여 했던 게임 개발 프로젝트에 참여 한 미술가들이 SUBSTANCE DESIGNER 를 대부분 사용 할 줄 몰랐기 때문에 새로운 질감을 창작 하기 보다는 서브스턴스 소스의 방대한 자료 또는 다른 재질 제공 회사에 의존 할 수 밖에 없었다.

사실 지금도 표준 재질이 완성 단계가 아니라서 완전히 개선 되지 않았지만 업무 규범을 하나씩 맞춰 나가면서 각 분야에 책임자들을 선정 하고 있다.

현재 우리 개발팀에는 두 사람의 재질 담당자가 있는데 배경 개발팀에서 재질 요청을 받으면 서브스턴스 디자이너를 사용 하여 새롭게 창작 하거나 또는 인터넷에서 재질을 받아서 수정 하고 재편집 하여 우리 게임에 맞게 수정 하는 역할을 한다.

캐릭터 개발팀에는 단독으로 TA 가 한 명 전담 하여 새로운 재질일 필요 할 때 역시 서브스턴스 디자이너로 표준 재질을 제작 하여 등록 한다.

수 많은 미술팀이 매번 검색 하는 시간을 낭비 하는 것 보다 전담 개발자와 함께 어떤 재질을 추가 하고 원화가와 최종 품질에 대한 토론을 더 많이 하는 것이 효과적인 개발 방향이다.

 

먼저 페인터 내부 메트리얼을 모두 제거 하고 스튜디오 전용 Shelf root 을 제작 하였다.

황금 재질 부터 다시 정의 하기 시작했다.

우리 개발팀은 모바일 게임 화면서에서 노말맵효과 만큼 더 중요 하게 생각 하는 것은 Roughness 입니다.

바닥이나 조형감이 뛰어난 부분은 노말맵 효과만으로도 빛이 흐른다는 느낌을 잘 표현 해 줄 수 있었지만 표면 굴곡이 완만한 사물의 경우 노말맵 효과만으로는 빛이 재미있게 흐른다는 느낌을 이룰 수 없었습니다.

표면 재질에 Worn 효과를 적당히 추가 해 주는 것 만으로 카메라의 변화 마다 빛이 표면을 타고 흐른다는 느낌을 좀 더 보강 할 수 있었습니다.

 

구글에서 당조 시대 관련 된 자료를 토대로 은 재질을 다시 정의 했습니다.

 

황동의 albedo colour 는 정의 할 때 사실 애매 했다.

이것은 산업 표준 규격이 있는 것이 아니고 가공 되는 기법에 따라 조금씩 다르기 때문에 아트팀과 상의 하고 정의 했다.

각 재질 정의 문서는 아트디렉터의 의견을 꼭 기재 했다.

UBI 나 북미에서 개발 되는 콘솔 게임 중 대다수가 좀비물 이거나 고대 유적지가 자주 나오는 형편이라 낡은 표현 기법이 자주 사용 되겠지만 중국 엠엠오 알피지는 가능한 정돈 되고 깨끗한 느낌을 중요시 한다.

 

 

낡은 표현 역시 황동 재질이 우리 게임 안에서 어떤 오브젝트에 사용 될 것인지 생각 해 보고 개발 하였다.

예로 들어 사람의 손이 자주 닿는 오브젝트와 그렇지 않은 오브젝트의 낡은 효과는 분명히 다를 것이다.

 

주철의 경우 이 금속이 어디에 주로 사용 되야 하는지 미술가들에게 숙지 시켜야 했다.

가끔 주철을 갑옷에 사용 하는 경우도 종종 있기 때문이다.

 

재질을 분류 할 때 어디에 사용 하는 것인지 정의 하는 것도 중요 한 일이다.

재질의 근본 특성을 이해 하면 나중에 오브젝트의 재질 적용 할 때 결정 하기가 쉽다.

 

가죽 효과는 게임 내에서 다른 옷 재질에 비해 고급스러운 느낌을 줄 수 있는 재질 중의 하나다.

우리는 좀 더 분명하게 4가지로 분류 했고 미술가들이 4가지 재질의 Roughness 에 대한 일반적인 이해 하길 바랬다.

 

표준 재질을 만들면서 의복의 경우 원단에 대한 자료를 많이 찾아 보게 되었고 그 내용을 미술팀이 잘 이해 하도록 자료화 해야 한다.

 

보통 부드럽고 가벼우며 얇은 가죽 소재는 주로 양가죽을 많이 사용 한다.

가죽과 실크 두 가지 재질은 소재의 특성에 따라 의복 주름 모델링 부터 완전히 달라 지기 때문에 재질 분류 할 때 중요 한 부분이다.

금속 소재와는 달리 훨씬 복잡한데 크게 세 가지 특성을 항상 염두 해야 한다.

문서에서도 언급 했지만 양가죽과 소가죽 의복의 옷주름이 완전히 다른데 이것을 모델러가 잘 알고 있어야 한다.

첫 번째로 원단 소재의 특성.

두 번째로 소재 특성에 따른 주름 현상을 잘 구분 해야 하고 마지막으로 표면의 거칠기와 광택이다.

이 세 가지가 완벽하게 서로 일치 해야만 게임 내에서 좋은 최종 품질을 이룰 수 있다.

 

양가죽과 소가죽 모두 한번 더 세분화 했는데 고광택과 저광택 으로 분류 했다.

 

프리셋 형태로 크게 구분 해 주는 것이 좋다.

 

장면 팀이나 캐릭터 팀에서 자주 사용 하는 옥에 대한 재질 구분도 좀 더 분명해져야 했다.

중국에서는 옥 장식이 많은데 어떤 원석이 어떤 식으로 장식에 사용 되는지 큰 구분이 필요 했다.

 

연옥과 경옥에 대한 큰 구분을 사용 했다.

최대한 당조 시대에 유통 되었던 옥의 종류에 근거 하고 싶었습니다.

서양에서 정의 하고 있는 옥과 동양에서 정의 하는 옥이 다르고 시대적으로도 조금씩 그 색상이나 질감이 다르다.

한때 중국에서 유행 하던 옥은 한국 어느 지방에서 수입 된 것이었다.

당조 시대에도 역시 여러 지역의 옥이 사용 되었는데 자료를 조사 하면서 재질을 구분 해야 한다.

 

도자기의 경우 도기와 자기로 구분 해야 한다.

그리고 미술가에게 도기와 자기의 특색을 설명 해 주는 것이 좋다.

특히 신입미술가에게는 더욱 필요 한 부분이다.

 

순수한 토기 재료를 제작 할 때 실제 토기 제작 방법을 관찰 하면서 절차적 텍스처를 사용 하여 손으로 빚어 올린 느낌을 추가 했다.

 

우리 게임의 경우 당황조 시대를 배경으로 하고 있기 때문에 그 당시 유행 했던 자기의 특성을 조사 하고 구분 하였다.

 

섬유 재질 구분도 무척 난해한 부분이다.

원단의 특성에 따라 직조 방식이 같아도 Roughness 가 완전히 다를 수 있고 미세한 섬유실 때문에 FUZZ 세이더에서 구현 해 주지 않으면 실제 의도한 옷 재질 느낌이 완성 되지 않는다.

예로 들어 실크 역시 실제 게임 내에서 실크 세이더가 없을 경우 표준재질 구분을 해도 실크 옷인지 알 수 없을 정도로 세이더 의존도가 높다.

 

천 의복 재질은 간단한 파라메터만 제공 하는데 색상이나 오래 된 정도를 나타내는 Worn effect 면 충분하다.

 

건축 재료 또한 크게 두 가지로 세 분화 하여 제공 했다.

페인터에서 별도의 Generator Layer 에 추가 하지 않고 표준 재질이 적용 되야 하기 때문에 모두 Designer 에서 다시 정리 하고 파라메터를 노출 시켰다.

 

재질 관리를 위해 디렉토리를 생성 해 볼 것이다.

간략한 과정을 비디오 파일로 만들어 왔다.

함께 봅시다.

 

동영상으로 직접 Shelf 구성을 하는 것을 살펴 봅시다.

 

서브스턴스 소스를 자주 사용 하는 경우 테크니컬 아티스트는 주변의 아티스트와 소통을 나누고 내부 표준 재질을 정의 할 때 최대한 간소하지만 분명한 파라메터 이름을 사용 하여 재질을 정리 해 주는 것이 좋습니다.

이것은 조금 개인적인 견해 이지만 중국 게임회사에서 근무 하면서 느낀 점은 너무 많은 설정 값을 열어 주는 것이 결과적으로 불필요 한 경우가 대부분 이었고 미술가 역시 애용 하는 몇 가지 기능만을 사용 했습니다.

게임 개발사 내부 표준 재질은 일반적인 미들웨어 제작사가 범용 재질로 배포 하는 방식과는 다른 측면으로 개발 되야 합니다.

예로 들어 함께 근무 하는 미술가의 성향도 파악 하고 있어야 합니다.

표준 재질을 정의 한다고 해서 모든 재질에 똑같은 파라메터 표현식을 사용 해야 하는 것은 아닙니다.

실제로 재질을 처음 만든 사람이 아니라면 수많은 파라메터 관계를 이해 하고 있지 않기 때문에 표준 재질을 조금 수정 해서 사용 하려고 해도 많은 옵션들을 만져 봐야 하는데 이 결과가 모든 아티스트가 다 다르다는 점이 단점으로 작용 합니다.

테크니컬 아티스트는 아트디렉터와 상의 해 가면서 굳이 표현 하지 않아도 될 것들에 대한 이해도를 축적 하면서 같은 프로젝트에 참여 하는 미술가들이 모두 비슷한 결과값을 이룰 수 있도록 유도 해야 합니다.

팀 작업은 개인의 미술적 견해도 중요 하지만 먼저 한 사람이 작업 한 듯 한 일관성을 유지 해야 하는 것이 더 중요 합니다.

 

표준 재질을 정의 할 때 프로젝트 특성상 표면에 약간의 손때가 묻은 효과가 들어 가 있습니다.

너무 깨끗해서 공장에서 막 생산 된 듯한 느낌은 피하고자 했습니다.

 

표면의 낡은 효과를 간단하게 구현 해 봅시다.

 

 

 

기타 성능 최적화와 세이더 개발에 대한 추가 발표입니다.

페인터와 디자이너를 깊게 파고 들어 효과적으로 사용 하는 방법을 여러 측면에서 구상 해 봅시다.

 

적절한 수준의 해상도만 사용 권장.

모바일 게임 개발 스튜디오는 이점이 있음.

어차피 고화질 텍스처 사용 불가 하고 렌더링 화면에서 잘 보이지도 않습니다.

그리고 불필요 한 노드를 정리 하는 좋은 습관을 갖도록 노력 해 봅시다.

 

표면의 낡은 효과에 관련 된 부분 입니다.

전체 노드를 최적화 했을 때 그 차이가 분명 할 것입니다.

시각적으로 차이를 보면서 납득 할 만한 수준을 찾아 가면 됩니다.

 

조금 실험적인 부분입니다.

페인터를 사용 할 때 절차적 텍스처 또는 레이어를 수정 하기 위한 여러가지 기능을 사용 할 때 컴퓨터가 급격 하게 느려 지는 상황을 회피 하고 싶었습니다.

Root Canvas 를 직접 제어 하고 인풋 정보를 직접 제어 해 가면서 나중에 페인터에서 작업 할 때 속도 향상을 이룰 수 있을 것입니다.

페인터에서 Texture Set 크기를 4096 으로 변경 했다면 전체 인풋이 모두 4096이 됩니다.

모바일 게임 개발에서는 4096 텍스처 크기가 의미가 없고 2048 정도 크기 또는 그 이하 크기를 사용 하기 때문에 적당한 해상도를 각 체널 마다 배당 해 주는 것도 방법입니다.

 

시현 과정은 간단히 2K  4K 변환 과정만을 보여주고 있습니다.

 

 

마지막으로 게임 개발을 하는 과정에서 페인터 내부에서 세이더를 수정 해야 하는 경우가 있습니다.

남은 시간이 길지 않기 때문에 이미 구현 한 세이더 코드에 설명을 달면서 살펴 봤습니다.

 

 

 

페인터 내부 세이더를 개조 하거나 옵션을 추가 하는 등의 업무에 관심이 있다면 share.allegorithmic.com  에 접속 하여 제와 제 예전 회사 동료가 업로드 해 둔 세이더 코드를 살펴 보는 것도 도움이 될 것입니다.

문서 작성을 하던 2019년 시점의 데이터 이기 때문에 최신 버전에서 동작하지 않습니다.

 

 

짧은 시간 동안 여러가지 이야기를 해 드리고 싶었습니다.

바쁜 시간을 내어 여기까지 와 주신 여러분들께 감사 드립니다.

그리고 또 하나!!!

저희 회사는 언제나 여러분에게 열려 있습니다.!