Возьмём за эталон мотоцикл с текселем 16px/cm. Как по мне, отличный баланс качества и оптимизации для работы в портфель.
Для наглядности я накинул шахматку. Каждая клетка шахматки имеет размер на модели 1х1см. Получается, что каждая клетка 16х16 пикселей, ведь тексель показывает сколько пикселей приходится на 1см текстуры.
На всякий случай уточню, если не понятно. На мотоцикле таких клеток (1х1см) помещается очень много, он большой (длина 230 см). У пистолета таких клеток мало, потому что он всего 36 см в длину. Поэтому чтобы количество пикселей было как у мотоцикла, квадратик 1х1 см должен иметь не 16х16 пикселей, а гораздо больше.
Обратный пример, возьмем танк. Примеряем нашу тексельную шахматку (16 px/см). Получаем очень много клеток, их даже не разглядеть. То есть при текселе 16 у нас избыток пикселей. Ведь мы же убедились выше (на примере мотоцикла) сколько клеток нам нужно, чтобы качество было отличное. Избыток пикселей будет зря нагружать ПК.
Вот мы и подошли к главному вопросу. Как понять какой тексель надо взять, чтобы получить точно такое же отличное качество как на мотоцикле?
Логика прослеживается простая, чем меньше модель, тем больше тексель нужен, и наоборот, чем больше модель, тем меньше тексель.
Может показаться, что достаточно лишь понять, во сколько раз отличаются размером модели. Площадь поверхности мотоцикла в 9 раз больше площади поверхности кольта. Получается возьмем тексель в 9 раз больше? Увы, нет, потому что мы видим не всё покрытие модели разом, много остается за кадром или на тыльной стороне. И тут для каждой модели в зависимости от её формы будут разные пропорции. А нам бы универсальный подход.
К счастью, не габариты модели играют главную роль в выборе текселя, а расстояние с которого мы смотрим на модель. Влияние габаритов или размеров на тексель, это как следствие, вытекающее из факта, что чем модель больше, тем дальше нужно отодвинуть камеру, чтобы модель влезла в экран. Осознание этого позволяет выявить нужный тексель сравнением не размеров моделей, а расстояний от камер до моделей.
Измеряем. Обрати внимание, что провожу линейку через центр камеры до пересечения с моделью.
Кроме этого, есть ещё важный параметр, который отвечает за размер объекта в кадре, это фокусное расстояние камеры. С ним мы не можем не считаться. Поэтому, для усложнения примера, я беру разные фокусные расстояния для всех трёх случаев.
Дано:
- Кольт — расстояние до камеры 0,63 м, фокус 50 мм;
- Мотоцикл — расстояние 5,42 м, фокус 75 мм;
- Танк — расстояние 32,9 м, фокус 100 мм.
За эталон берем мотоцикл, ведь у него нужное нам качество.
Сравниваем:
У кольта, расстояние отличается в 5,42/0,63 = 8,6 раз, а фокус отличается в 75/50 = 1,5 раза.
Значит для кольта нужен тексель 16 * 8,6 / 1,5 = 91,8 px/см.
У танка, расстояние отличается в 5,42/32,9 = 0,16 раз,а фокус в 75/100 = 0,75 раз.
Значит для танка нужен тексель 16 * 0,16 / 0,75 = 3,51 px/cм.
Новичку такая разница в значениях текселя может показаться пугающей, но с математикой глупо спорить.
Теперь, для наглядности, я изменил размеры текстур у кольта и танка, так чтобы тексель соответствовал полученным расчётным значениям:
Тексель теперь разный, размеры клеток (в см), если мерить по поверхности модели, теперь разные. Но, мы видим, что относительно размера кадра, шахматка выровнялась на всех моделях, то есть количество текстурных пикселей на 1х1 см экрана стало везде одинаковое. А значит и визуальное качество одинаковое. Profit!
Проверим запеканием.
С пистолетом теперь всё в порядке, никакой пиксельности или мыла.
Хватит ли танку текселя 3,5?
Даже приблизив камеру в несколько раз, всё выглядит достойно.
Итак, какие выводы?
- Чем ближе модель к камере, тем больше px/см нужно, чтобы отрисовка текстур была качественной.
- Имея в распоряжении удачный пример, можно пересчитать тексель на любую другую модель, чтобы она тоже стала удачным примером. Формулу получилась такая:
где TD - искомый тексель, px/cm;
TDэ - тексель эталона, px/cm;
L - расстояние от камеры до поверхности модели, м;
Lэ - расстояние от камеры до поверхности модели у эталона, м;
F - фокусное расстояние камеры, мм;
Fэ - фокусное расстояние камеры у эталона, мм.
Если у тебя нету удачного примера (эталона), то можно использовать значения, полученные в этом эксперименте: 16*5,42/75 = 1,15. Остается только подставить своё фокусное расстояние камеры и расстояние от камеры до модели. Расчёт надо делать на самую ближайшую камеру.
Спасибо ребятам за модели:
Мотоцикл — Егор Сергеев
Кольт — Анастасия Кощеева
Танк — Максим Соколов
Автор: Анатолий Коробейников