카테고리별 3D 모델링 최적화 가이드라인
20 분
본 가이드라인은 사용자들이 모바일 기기에서 제페토를 플레이할 때 앱이 끊기지 않도록 시스템 안정성을 확보하고, 렌더링 효율을 극대화하기 위한 3d 에셋 제작 및 최적화 지침을 안내해 드립니다 모든 크리에이터는 심사 반려 방지와 원활한 플레이 환경을 위해 아래 명시된 사항을 반드시 준수하여 에셋을 제작해야 합니다 💡 공통 모델링 최적화 ㅣ✔️ 모든 카테고리 블랜드쉐입 (blendshape) 사용 금지 제페토에 업로드 되는 모든 아이템에는 블렌드쉐입(blendshape) 데이터를 포함할 수 없습니다 이는 크리에이터 여러분의 정교한 표현을 제한하려는 것이 아니라, 모든 유저가 쾌적하게 월드를 즐길 수 있도록 모바일 환경을 최적화하기 위한 필수 사항 입니다 데이터 용량의 기하급수적 증가 (파일 과부하) 숨은 좌표 데이터의 누적 블렌드쉐입은 메쉬의 움직임과 형태 변화를 기록하기 위해 수많은 점(vertex)의 위치 이동 좌표 데이터를 내부에 추가로 기억해야 합니다 레이어 축적 현상 이 데이터는 fbx 파일 내부에 애니메이션 레이어가 겹겹이 쌓인 것과 같은 구조 를 가집니다 이로 인해 에셋 전체의 데이터 용량이 과도하게 무거워집니다 실시간 연산 과부하 (기기 발열 및 렉 유발) 모바일 실시간 연산의 한계 여러 아바타가 동시에 모이는 3d 월드 공간에서 모바일 기기가 이러한 블렌드쉐입 데이터를 실시간으로 처리하는 것은 매우 큰 부담입니다 하드웨어 성능 저하 결과적으로 하드웨어에 심각한 과부하가 걸리며, 이는 유저 기기의 극심한 발열과 프레임 드랍(렉)으로 이어집니다 메모리 초과 및 앱 강제 종료 (crash) 메모리(ram) 부족 현상 블렌드쉐입이 포함된 아이템들이 월드 내에 동시에 로드되면, 모바일 기기의 한정된 ram 용량을 순식간에 채우게 됩니다 치명적인 oom 오류 이로 인해 용량을 초과하는 oom(out of memory) 현상 이 발생하며, 스마트폰 시스템(ios/android)이 기기를 보호하기 위해 제페토 앱을 강제로 종료(crash/튕김)시키는 최악의 불량을 유발합니다 폴리카운트 (polycount) 트라이앵글(triangle) 단위 엄수 모든 카테고리의 토폴로지 연산 및 데이터 제한 기준은 쿼드(quads)가 아닌 트라이앵글(triangles)입니다 내보내기(export) 전 확인 blender, maya, 3ds max 등 툴에서 fbx export를 진행하기 전, 3d 뷰포트 내 레이아웃에서 tri( triangle ) 카운트가 카테고리별 최대 제한 수치 이하인지 필히 확인해 주세요 백페이스 컬링 (backface culling) 대응 모델링 단면 렌더링 환경 준수 제페토 엔진은 렌더링 연산 최적화를 위해 기본적으로 단면 렌더링(backface culling) 방식을 채택하고 있습니다 구조적 마감 처리 필수 애니메이션 구동 시 내부가 노출될 수 있는 의상 소매 안쪽, 스커트 내부, 칼라(collar) 등은 페이스 노말 방향이 뒤집혀 투명하게 비치는 현상을 막기 위해 면을 완전히 닫거나, 물리적인 두께를 생성하는 오브젝트 마감 모델링으로 작업 해야 합니다 불량 메쉬 데이터 정리 (clean up) 모델링 데이터 속에 '불량한 조각'이 남아있으면, 그래픽 처리 오류를 유발하고, 엔진 크래시(crash)를 일으키는 주범입니다 제출 전 'clean up' 을 통해 이런 불필요한 데이터들을 꼭 정리해 주세요 면(face)을 형성하지 못한 채 공중에 떠 있는 버텍스(isolated vertices)나 길이가 0인 에지(edge)는 불필요한 연산 비용을 발생시키므로 사전에 삭제해 주세요 논매니폴드(non manifold) 구조 금지 수학적으로는 연산되나 현실 세계에 존재할 수 없는 구조입니다 아래 4대 유형 을 확인하시고, 모델링 작업 시 clean up 해 주세요 non manifold 4대 불량 유형 하나의 에지(선)에 3개 이상의 면이 기하학적으로 맞물려 인접한 y자 또는 t자형 구조 두 개 이상의 독립된 면이 면을 공유하지 않고 오직 꼭지점(vertex) 딱 하나로만 교차하여 연결된 모래시계 형태의 구조 완전히 닫힌 메쉬 공간 내부에 외부에서 보이지 않는 유령 면이 가로질러 존재하는 구조 (주로 메쉬 병합/추출 오류로 발생) 연속된 메쉬 흐름 안에서 특정 페이스의 노말 벡터(normal vector) 방향만 반대로 뒤집혀 인접 면과 결이 맞지 않는 상태 보이지 않는 면 삭제 기본 바디 메쉬 컬링 의상 겉면이나 장신구 아이템 부착으로 인해 안쪽에 배치되어 기본 아바타 바디(base body)에 완전히 가려지는 메쉬면은 과감히 삭제 해야 합니다 리소스 확보 불필요한 내부 메쉬를 삭제하면 gpu의 부담이 줄어들어 렌더링 성능이 향상됩니다 이는 게임의 쾌적한 플레이를 돕고, 메모리 점유율을 줄이는 데 큰 도움이 됩니다 관절부 토폴로지 밀도 최적화 무릎, 팔꿈치, 어깨처럼 움직임이 많은 관절 부위는 스키닝 후 메쉬가 자연스럽게 구부러질 수 있도록 최소 3줄 이상의 루프 에지(loop edge) 를 배치해 주세요 반대로, 형태 변화가 거의 없는 고정된 부위는 불필요하게 면을 잘게 나누지 말고, 최대한 단순하게 정리 해야 아바타의 구동 성능을 최적화할 수 있습니다 ㅣ✔️ 의상류 (dr, top, otr, btm) max triangle count 모델링 규격 dr (한벌의상) max 10,000 tris top (상의) / otr (외투) max 6,000 tris btm (바지, 스커트) max 5,000 tris 모델링 가이드 심라인(seam line) 버텍스 일치화 상의(top)와 하의(btm)가 만나는 허리 경계선은 아바타가 움직일 때 가장 많이 변형되는 곳입니다 따라서 상·하의의 경계면에 위치한 버텍스 개수와 선의 흐름(토폴로지)을 서로 완벽하게 일치 시켜 주세요 만약 경계면의 버텍스 구조나 노말(normal) 방향이 어긋나 있으면, 아바타가 움직일 때 옷 사이가 벌어지거나 빈틈이 생겨 내부가 비쳐 보이는 불량이 발생합니다 경계면의 메쉬가 하나의 옷처럼 자연스럽게 연결되도록 꼼꼼히 맞춰주는 것이 핵심입니다 관절부 3 loop 에지 구조 무릎, 팔꿈치, 골반처럼 움직임이 큰 관절 부위는 굽혀질 때 메쉬가 비틀리거나 찌그러지기 쉽습니다 이런 현상을 방지하고 매끄럽게 움직이도록, 관절이 접히는 부위에 촘촘하게 3 4줄 이상의 에지(edge)를 고르게 배치 해 주세요 옷의 끝부분 마감 (두께 만들기) 소매나 밑단처럼 옷의 끝부분은 단순히 선 하나로 끝내지 말고, 면을 안쪽으로 덧대어 실제 옷처럼 두께감 있게 마무리해 주세요 단, 옷 안쪽으로 깊숙이 들어가서 외부에서 절대 보이지 않는 면 들은 굳이 살려 둘 필요가 없습니다 이런 숨은 면들은 깔끔하게 잘라내거나 정리하여, 게임의 성능을 떨어뜨리는 불필요한 폴리곤 낭비를 꼭 막아주세요 ㅣ✔️ 헤어류 (f hair, m hair) max triangle count 모델링 규격 f hair (여성 헤어) max 10,000 tris m hair (남성 헤어) max 10,000 tris 모델링 가이드 이중 구조 모델링 (solid base mesh + alpha plane mesh) 시각적 완성도와 모바일기기성능 최적화를 동시에 잡기 위해, 전체 폴리곤의 70%는 두상 뼈대를 감싸는 형태의 닫힌 구조 불투명 메쉬로 모델링하여 볼륨을 확보합니다 나머지 30%의 폴리곤으로 머리카락 끝부분, 잔머리, 옆머리 등의 표현을 위한 알파 플랜(alpha plane)형태로 외곽에 배치해 주세요 z fighting 방지 간격 확보 3d 그래픽 엔진은 투명한 판들이 여러 장 겹쳐 있으면, 카메라 시점에 따라 어떤 판이 앞에 있고 뒤에 있는지 계산 순서를 헷갈려 하는 고질적인 문제가 있습니다 알파 플랜 간의 거리가 너무 밀착되거나 가닥 메쉬가 서로 엇갈려 교차하면 카메라 각도에 따라 투명한 면이 껌벅거리는 소팅 이슈 가 발생합니다 알파 플랜 메쉬 간에는 물리적으로 최소한의 거리를 유지하도록 모델링해 주세요 ㅣ✔️ 신체 밀착 및 변형 소품류 (sox, glove, nail, tail, wing, shoulder) max triangle count shoulder (숄더) max 5,000 tris glove (장갑) / bag (가방) max 4,500 tris wing (날개) max 4,000 tris sox (양말) max 3,500 tris tail (꼬리) max 2,000 tris nail (네일아트) max 1,500 tris 모델링 가이드 손가락 토폴로지 동기화 장갑(glove) 및 네일(nail) 모델링 시, 손가락 마디가 굽혀지는 위치는 제페토 기본 가이드 더미의 핑거 조인트(finger joint) 오프셋 좌표와 한 치의 오차도 없이 일치해야 합니다 마디당 최소 3줄의 엣지 를 유지해 주세요 접촉면 최적화 네일아트 및 장갑 안쪽 등 손가락 피부와 완전히 맞닿아 물리적으로 100% 매립되는 안쪽면은 최적화를 위해 완전히 삭제 처리해 주세요 ㅣ✔️ 장착형 소품류 (sh, headwear, eyemask, glasses, bracelet, necklace, earring, ring) max triangle count sh (신발) / headwear (헤드웨어) max 4,000 tris eyemask (마스크) max 3,000 tris glasses ring (안경, 팔찌, 목걸이, 귀걸이, 반지) max 2,000 tris 모델링 가이드 원기둥형 모델링 최적화 반지(ring), 팔찌(bracelet), 안경테(glasses) 등 곡선형 리지드 소품 제작 시, 최초 실린더형 기본 도형의 측면 개수(sides)를 6 8개 사이로 제한 하여 로우폴리곤 구조를 잡으십시오 부족한 곡면 실루엣은 소프트 엣지 및 노말 맵을 통해 커버해야 합니다 ㅣ✔️ 특수 체형류 (mask, body) 기본 아바타의 고유 외형(두상 및 전신 메쉬) 자체를 완전히 덮어쓰거나 체형 변화를 유도하는 최고 난이도의 테크니컬 카테고리입니다 max triangle count body (특수체형 몸) max 10,000 tris mask(특수체형 얼굴) max 5,000 tris 모델링 가이드 넥 심라인(neck seam line) 매칭 얼굴 마스크(mask)와 몸(body)이 만나는 목 경계선 영역은 제페토 기본 바디 모델링의 버텍스 인덱스 번호, 절대 3d 좌표값, 그리고 버텍스 노말 방향까지 완벽하게 일치해야 합니다 이 웰딩 라인이 0 001mm라도 어긋나면 목이 분리되어 틈새가 보이는 불량이 발생합니다 참고) 아이템 최적화를 위한 카테고리별 데이터 모든 데이터는 최대치(maximum limit) 기준입니다 dr 한벌의상을 제외한 모든 카테고리는 텍스쳐 1장 기준입니다 max triangle count (tris) 권장 / max max texture resolution (map size) 권장 / max max material (속성별 추가쉐이더 허용) dr 한벌의상 10,000 512x512 2장 4(권장) top 상의 6,000 512x512 3(권장) otr 외투 6,000 512x512 3(권장) btm 바지,스커트 5,000 512x512 3(권장) sox 양말 3,500 / 4500 256x256 / 512x512 3(권장) sh 신발 4,000 256x256 / 512x512 3(권장) f hair 여자헤어 10,000 256x256 / 512x512 3(권장) m hair 남자헤어 10,000 256x256 / 512x512 3(권장) headwear 헤드웨어 4,000 256x256 / 512x512 3(권장) shoulder 숄더 5,000 512x512 3(권장) glasses 안경 2,000 256x256 / 512x512 3(권장) bracelet 팔찌 2,000 256x256 / 512x512 3(권장) necklace 목걸이 2,000 256x256 / 512x512 3(권장) earring 귀걸이 2,000 256x256 / 512x512 3(권장) bag 가방 4,500 256x256 / 512x512 3(권장) glove 장갑 4,500 256x256 / 512x512 3(권장) ring 반지 2,000 256x256 / 512x512 3(권장) nail 네일아트 1,500 / 2000 256x256 / 512x512 3(권장) eyemask 마스크 3,000 512x512 3(권장) wing 날개 4,000 512x512 3(권장) mask 특수체형 얼굴 5,000 512x512 3(권장) body 특수체형 몸 10,000 512x512 3(권장) tail 꼬리 2,000 / 3000 256x256 / 512x512 3(권장)
