Усі статті
Туторіали · 7 min read

Щільність текселів як слід: один стандарт, впроваджений по всій команді

Що таке щільність текселів, які значення пікселів-на-сантиметр реально використовують випущені ігри, як її вимірювати шаховою текстурою, коли порушувати правило для геройських ассетів, і як впровадити один стандарт, щоб оточення команди читалося як єдиний світ.

Close-up of a red brick wall with pale mortar joints

Коротко: щільність текселів — це скільки пікселів текстури вкривають реальну одиницю поверхні, і зберігати її сталою є різниця між оточенням, що читається як один зв'язний світ, і таким, що виглядає як ассети з п'яти різних ігор, склеєні разом. Ця стаття визначає її просто, дає значення пікселів-на-метр, які реально використовують випущені ігри, показує, як вимірювати її шаховою текстурою, пояснює ті нечисленні місця, де правило слід порушувати, і викладає, як впровадити єдиний стандарт по команді, не контролюючи кожен UV вручну.

Цегляна стіна: кожна одиниця того самого розміру, та сама щільність деталей Цегляна стіна — це урок щільності текселів у камені: кожна цеглина несе однакову кількість деталей на сантиметр. Коли один ассет у твоїй сцені має подвійну щільність текселів сусіда, гравці відчувають неправильність, навіть якщо не можуть її назвати.

Що таке щільність текселів насправді

Щільність текселів — це роздільність текстури на одиницю поверхні, зазвичай пікселі на метр або на сантиметр. Текстура в 1024 пікселі на стіні 4 метри — це 256 px/m; та сама текстура на стіні 2 метри, 512 px/m, удвічі чіткіша.

«Тексель» — це піксель текстури. Щільність текселів вимірює, скільки їх припадає на дану кількість поверхні у світі. Це міст між твоєю роздільністю текстури (властивістю зображення) і масштабом твоєї моделі (властивістю світу), і оскільки вона залежить від обох, два ассети з ідентичними 2K-текстурами можуть виглядати дико по-різному, якщо один накладений на поверхню вдвічі більшого розміру, ніж інший. Ця невідповідність, те, що ловить твоє око: чіткі двері поряд із розмитою стіною, або гострий ящик на тлі кашоподібної підлоги. Сталість, а не максимальна роздільність, продає єдиний вигляд.

Значення, які використовують випущені ігри

Поширений стандарт, 512 px/m (≈5,12 px/cm) для загальних поверхонь оточення, що падає до 256 для великого далекого рельєфу і зростає до 1024+ для геройських пропів, до яких камера наближається. Обирай базу за тим, наскільки близько підходить гравець.

Універсального числа немає. Воно задається твоєю цільовою платформою, дистанцією камери та бюджетом пам'яті, але робочі діапазони добре встановлені:

  • Великий рельєф / далека архітектура: ~256 px/m, гравець ніколи не підходить близько, тож деталь там, марно витрачена пам'ять
  • Загальне ігрове оточення (стіни, підлоги, середні пропи): ~512 px/m, поширена, зручна база
  • Геройські ассети, до яких камера підсувається (ключовий проп, деталь на висоті обличчя): 1024 px/m або вище
  • Руки / зброя від першої особи: найвища з усіх, бо вони завжди за сантиметри від камери

Принцип за числами: щільність текселів має масштабуватися з тим, наскільки близько підходить гравець. Задай базу зі своєї найтіснішої звичайної дистанції камери, потім знижуй на щабель для того, що завжди далеко. Студія обирає одне базове число, пише його в арт-біблію, і тримає на ньому кожен загальний ассет.

Як її вимірювати

Наклади шахову текстуру з відомим значенням пікселів-на-квадрат на свою модель у її фінальному масштабі. Якщо квадрати виглядають однакового розміру на кожному ассеті сцени, твоя щільність текселів стала, неузгоджені розміри квадратів розкривають проблему миттєво.

Шахова (або «UV-сітка») текстура — найкорисніший окремий інструмент тут. Це плитковий візерунок кольорових квадратів; коли ти призначаєш її ассетам у фінальному світовому масштабі, кожен квадрат представляє фіксовану кількість текселів. Стала щільність значить, що квадрати мають той самий фізичний розмір по кожній поверхні. Стіна, чиї квадрати вдвічі більші за квадрати підлоги, недотекстурована відносно підлоги, тепер ти можеш бачити невідповідність щільності замість гадати. Більшість DCC-інструментів і рушіїв мають перевірник щільності текселів або скрипт, що звітує px/m напряму; так чи інакше, шахова текстура, швидка візуальна перевірка на чуття, яку кожен художник має тримати за одне натискання клавіші.

Оголений бетонно-сталевий каркас будівлі, що будується Реальне будівництво тримає кожен елемент у спільних допусках, щоб частини сходилися. Стандарт щільності текселів та сама ідея для поверхонь: спільна специфікація, що змушує незалежно побудовані ассети читатися як одна структура.

Коли порушувати правило

Піднімай щільність на геройських ассетах, на яких камера затримується, і знижуй її на тому, що завжди далеко або крихітне на екрані. Однакова щільність усюди марнує пам'ять на далеке й морить голодом ближнє, сталість значить сталу ДЛЯ ЇЇ ДИСТАНЦІЇ КАМЕРИ, а не ідентичну всюди.

«Стала щільність текселів» не значить одне число для всієї гри. Вона значить навмисну щільність, відповідну ролі кожного ассета, без випадкових невідповідностей між сусідами. Геройська статуя, до якої гравець підходить, заслуговує на 1024+; силует гори за два кілометри в порядку при 128. Майстерність у тому, що зниження навмисні й задокументовані, а не випадковий результат того, хто що змоделював. Корисна ментальна модель: бюджетуй пам'ять текстур так, як бюджетуєш полігони, витрачай її там, де камера проводить час, і мори голодом місця, які вона ніколи не відвідує.

Впровадження по команді

Стандарт, який ніхто не може перевірити, — це стандарт, якого ніхто не дотримується. Зроби його впроваджуваним, спільна шахова текстура, скрипт звіту щільності на кроці імпорту, і однорядкова специфікація в арт-біблії, щоб конвенційні ассети були шляхом найменшого опору.

Тут щільність текселів перестає бути сольною ремісничою навичкою і стає проблемою пайплайну. У команді щільність дрейфує в мить, коли залежить від того, чи пам'ятає кожен художник число, бо люди моделюють у різних масштабах, імпортують з різними налаштуваннями й оцінюють на око по-різному. Що тримає лінію — це інструментарій:

  • Спільна шахова текстура, яку всі призначають однаково, щоб невідповідності були видимі в кожному ревʼю.
  • Перевірка щільності при імпорті, скрипт, що звітує px/m і позначає все поза узгодженою смугою, перш ніж воно потрапить у бібліотеку.
  • Односторінкова специфікація: базове число, геройські й рельєфні винятки, і робочий процес шахівниці, в арт-біблії, яку всі читають першого дня.

Сталість — це також проблема знаходжуваності: щоб тримати ассети в стандарті, треба вміти бачити їх усі, порівнювати й помічати викид, ось чому браузер контенту, що рендерить сталі мініатюри й дозволяє сортувати величезну бібліотеку, як у Numivo, тихо полегшує дисципліну щільності текселів: той, що вибивається, видимий з одного погляду, а не виявляється в рушії три місяці по тому.

Польові числа, які варто вкрасти

  • База загального оточення: ~512 px/m (≈5,12 px/cm)
  • Далекий рельєф / далека архітектура: ~256 px/m, ближче марнує пам'ять
  • Геройські / ближньо-камерні ассети: 1024 px/m і вище
  • Інструмент, що робить її видимою: шахова / UV-сітка текстура у фінальному масштабі
  • Впровадження, що тримається: шахівниця + звіт при імпорті + односторінкова специфікація, а не пам'ять і бурчання

Міні-FAQ

Вища щільність текселів завжди краща, так? Ні. Вона коштує пам'яті текстур і смуги стрімінгу заради деталей, які гравець може ніколи не побачити зблизька. За межею роздільності, яку камера може розрізнити на цій дистанції, зайві текселі — чиста трата. Узгоджуй щільність із дистанцією камери, а не з «якомога вище».

Чи змінює це текстурування trim-sheet і тайлінгом? Воно змінює, як ти влучаєш у ціль, а не саму ціль. Тайлінг-текстури й trim sheet'и часто, найлегший спосіб тримати щільність сталою по великих поверхнях, бо той самий лист у тому самому масштабі дає ту саму щільність усюди, де використовується.

Як полагодити вже несталу бібліотеку? Виміряй репрезентативну вибірку шахівницею, щоб знайти розкид, узгодь базу, і лагодь опортуністично, переущільнюй ассети в міру того, як сцени їх втягують, а не намагайся героїчно пройти всю бібліотеку. Ассети, що важливі, лагодяться першими, бо це ті, що у використанні.

А як щодо мобільних чи Switch? Та сама концепція, нижчі бази. Ти можеш гнати 256 px/m як загальний стандарт замість 512. Дисципліна ідентична; рухаються лише числа, щоб уміститися в бюджет пам'яті.

Щільність текселів, один із тих негламурних фундаментів, що відділяють професійно виглядаючі оточення від студентських. Обери базу, зроби її видимою шахівницею, впровадь її перевіркою на вході, і твої незалежно побудовані ассети нарешті прочитаються як єдиний, правдоподібний світ.