카테고리별 3D 텍스쳐 최적화 가이드라인
17 분
ㅣ✔️ pot (power of two) 규격 준수 2의 거듭제곱 해상도 강제 플랫폼 내 모든 텍스처 자산은 하드웨어 가속 최적화를 위해 가로 및 세로 해상도가 2의 거듭제곱 규격(256×256 또는 512×512)을 정확히 만족해야 합니다 npot 사용 금지 크기가 2의 거듭제곱이 아닌 이미지(npot)를 사용하면, gpu가 내부적으로 가장 가까운 2의 거듭제곱 크기로 이미지를 변환하여 메모리에 복사하므로 메모리 용량이 두 배로 낭비될 수 있습니다 ㅣ✔️ 텍스쳐 밀도의 일관성 및 uv 레이아웃 균일한 해상도 분배 아바타가 옷을 입었을 때 특정 부위만 유독 화질이 깨지거나 흐려 보이는 현상을 방지해야 합니다 이를 위해 에셋 전체의 '텍셀 밀도(texel density)'를 균일하게 유지 해 주세요 3d 모델링의 실제 면적과 uv 맵에서의 크기 비율이 일정해야 인게임에서 어느 한 곳이 일그러지지 않고 고르게 선명한 화질을 유지할 수 있습니다 시각적 우선순위 적용 높은 해상도가 요구되는 디테일 영역의 uv 공간은 넓게 배정하고, 노출 빈도가 낮은 하단이나 안감 부위는 uv 공간을 축소하여 최적화해 주세요 ㅣ✔️ 텍스쳐 카테고리 별 각 1장 사용가능 택스쳐 1장의 최대 사이즈는 512x512 입니다 1024 사용을 금지 합니다 텍스처는 가로와 세로의 면적(pixel수)으로 계산됩니다 512 × 512 = 262,144 픽셀 1024 × 1024 = 1,048,576 픽셀 (512의 정확히 4배 ) 숫자는 2배처럼 보이지만 3d 엔진과 스마트폰 그래픽 메모리(vram)가 감당해야 하는 데이터 트래픽과 용량은 무려 4배로 폭등 합니다 압축 플러그인을 거치더라도 메모리 점유율의 4배 차이는 고스란히 유지됩니다 최대512 해상도는 데이터 전송 효율을 극대화하여 통신 환경이 좋지 않은 유저도 부드럽게 게임을 즐길 수 있게 만듭니다 스마트폰 화면은 pc 모니터나 tv에 비해 매우 작습니다 작은 화면 속에서 내 아바타가 입고 있는 상의나 하의가 차지하는 실제 화면 픽셀 면적은 그리 크지 않습니다 화질이 떨어질까 봐 걱정된다면 텍스처 크기를 키우는 대신, '텍셀 밀도(texel density)' 를 활용해야 합니다 안감이나 옷 하단처럼 안 보이는 곳의 uv 공간을 과감히 줄이고, 로고나 단추 같은 디테일 영역에 uv 공간을 몰아주는 '시각적 우선순위 분배'를 잘하면 512 해상도 안에서도 충분히 선명하고 퀄리티 높은 의상을 완성할 수 있습니다 ㅣ✔️ dr (한벌의상) 카테고리 예외 텍스처 2장 허용 한벌의상(dr) 카테고리에 한하여 512×512 해상도 텍스처를 최대 2장까지 사용 할 수 있습니다 ㅣ✔️ 셰이더 및 머티리얼 최적화 (shader & material) 머티리얼 개수 제한 제출하는 각 카테고리별 에셋은 최대 1개의 메테리얼을 사용하여야 합니다 텍스쳐를 최대 2장 사용할 수 있는 dr(한벌의상)카테고리는 최대 2개의 메테리얼 사용이 가능합니다 기본으로 1개의 메테리얼을 사용하고, 투명(trasparent), 퍼(fur)와 같은 속성이 다른 셰이더를 사용할 때 만 추가 사용해 주세요 재질 별 메테리얼 사용금지 재질 별 메테리얼 사용을 금지합니다 속성이 다르지 않은(투명, 퍼 등) 여러 재질은 채널마스크 맵으로 질감을 나타내어 주세요 질감을 나타내는 metalic, smoothness, ambient occlusion 텍스쳐 rgba 채널맵을 이용해 주세요 채널 (channel) 할당 데이터 (packed data) 설명 red metallic (메탈릭) 수치가 1(white)에 가까울수록 금속, 0(black)에 가까울수록 비금속으로 표현 green ambient occlusion (ao) 구조적 음영 및 구석진 부위의 고정 그림자 표현 blue x x alpha smoothness 면의 매끄러운 정도 제어 ㅣ ⚠️ 최적화 가이드라인을 반드시 지켜야 하는 진짜 이유 단일 에셋을 로컬 환경에서 테스트할 때는 사소한 블렌드쉐입 데이터나 가이드라인을 초과한 텍스처 해상도가 시스템 성능에 미치는 영향이 미미해 보일 수 있습니다 그러나 제페토는 수많은 유저가 가상 공간에 동시다발적으로 참여하는 '실시간 멀티플랫폼 환경'임을 반드시 고려해야 합니다 3d 자원 연산 부하의 누적 증가 데이터 복제 및 다중 로딩 부하 단일 월드에 30명의 플레이어가 진입하고, 각 아바타가 평균 5 6개의 파츠(의상, 헤어, 악세사리 등)를 장착한다고 가정할 경우, 한 화면에서 실시간으로 처리해야 하는 독립적 에셋 데이터는 수백 개에 달합니다 오버헤드의 누적 한 명의 크리에이터가 타협한 미세한 오버스펙이 많은 플레이어를 거치며 수백 배로 증폭되어 앱 실행 중 시스템에 부하 를 줍니다 시스템 임계점 초과와 하드웨어 병목 현상 전체 성능 저하 개별적으로는 사소했던 드로우콜(draw call)의 상승, 텍셀 밀도 불균형으로 인한 vram 낭비, 복잡한 픽셀 셰이더의 연산 등이 한 공간에 누적되면 모바일의 임계점을 순식간에 초과하게 됩니다 과도한 연산은 모바일 기기의 극심한 발열과 배터리 소모 를 야기하며, 제페토 전체에 치명적인 프레임 렉을 발생시킵니다 oom(out of memory)을 통한 앱 강제 종료 치명적인 시스템 크래시 시스템 자원 중에서도 메모리(ram/vram)의 오버 플로우는 단순히 화면이 느려지는 프레임 드랍에 그치지 않습니다 사용 가능한 메모리를 초과하는 순간 모바일 운영체제(ios/android)는 기기 보호를 위해 제페토 앱의 프로세스를 강제로 완전히 종료(crash)시킵니다 이는 서비스의 신뢰도와 유저 경험을 파괴하는 가장 치명적인 불량 사유입니다 최적화는 가상 생태계의 상생을 위한 기술적 매너입니다 제페토 스튜디오가 제시하는 카테고리별 데이터 제한 규격은 크리에이터의 예술적 표현을 제한하기 위한 규제가 아닙니다 저사양 모바일 기기를 사용하는 유저까지 모두 아우르는 쾌적한 런타임 환경을 구축하고, 크리에이터 분들의 고품질 에셋이 인게임에서 왜곡이나 버그 없이 본연의 퀄리티로 안정적으로 구동되도록 보호하는 최소한의 기술적 안전장치 입니다 참고) 아이템 최적화를 위한 카테고리별 데이터 모든 데이터는 최대치(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(권장)
