вторник, 28 декабря 2010 г.

LOD в 3d Studio Max

Что такое LOD? Это уровень детализации (Level of details). А вот для чего именно он нужен, сейчас я вам объясню.
Как и все полезные навороты LOD пришёл из геймдева. Игры это самый требовательный к ресурсам продукт. Поэтому разработчики игр стараются придумать различные уловки чтобы сэкономить как можно больше ресурсов на компьютере игрока. Таким образом из игр в 3d анимацию перекочевало много полезных вещей, таких как шейдеры, карты нормалей, UV-раскрой, физика, спрайты, анбиасед рендер и многое другое.
И так, что же такое LOD. Например представим себе ситуацию. Есть сцена в которой расположено здание на фоне гор. Горы очень и очень далеко. Вполне разумно было бы сделать горы в виде декорации. Например разместить обычную планарную поверхность и задать ей текстуру с фотографией гор. Никто не заметит здесь обмана. Но в в играх всё намного сложнее, ведь игрок может дойти до гор и поймёт что они не настоящие. Появляется дилема - игрока обманывать нельзя, если он подойдёт к горам, то они там должны быть, но а вдруг не подойдёт? Тогда в памяти компьютера будет висеть огромное число полигонов и большая текстура причём совершенно зря. Тогда начнутся "тормоза". И вот тут то и приходит на помощь LOD. Пока игрок далеко от гор, будет отображаться бутафория, которая не кушает практически ничего из ресурсов компьютера. Но если игрок начнёт приближаться к горам, то в когда он подойдёт на заданное расстояние, декорация незаметно сменится на среднеполигональную модель гор. А когда он окажется совсем рядом, среднеполигональная модель заменится на высокополигональную. Таким образом игрок не заметил подмены, он доволен, компьютер не тормозит. Когда он отойдёт обратно на своё первоначальное место, горы снова превратятся в плоскую декорацию и опять ресурс освободится.

В 3d анимации тоже не помешала бы такая функция. Ведь качественный рендеринг занимает очень много времени. Нередко 10 минут видео могут рендерится 100-200 дней, на самых мощных компьютерах. Зачем например трактору на заднем плане 100000 полигонов, если на экране он занимает 10 пикселей? Вот когда камера приблизится к нему и покажет крупным планом, вот тогда пусть он и выдаст все свои 10000 полигонов. В 3dsMax есть такая возможность.
Для ЛОДов используются несколько вариантов модели. Первая низкополигональная, вторая среднеполигональная и третья высокополигональная. Не обязательно три версии, можно 2 или 5.
Для данного примера я взял сферу.
1. Я создал сферу в 16 сегментов (я люблю пользоваться 8-ми разрядными цифрами, с ними меньше глюков).
2. Назвал её Sphere01_low_
3. Затем создал в том же месте такого же размера сферу но в 32 сегмента.
4. Назвал её Sphere01_mid
5. Аналогично создал третью сферу в 64 сегмента, она самая высокополигональная, поэтому я назвал её Sphere01_hi_
6. Теперь я группирую три сферы и даю им любое понравившееся имя.
7. Перехожу на вкладку Utilities и добавляю новую кнопку (это на случай если вы впервые пользуетесь ЛОДами) в списке она Level of Details.
8. Нажимаю на эту кнопку и выбираю Create New Set, при этом группа со сферами должна быть выделена.
9. В списке ниже появились наши три сферы.
10. Вообще они автоматически должны быть распределены в процентном соотношении, но если вас это не устраивает, можно выбрать вручную. Ниже есть настройка параметров. Есть также возможность выбора в чём определить значения в пикселях или процентном соотношении. Что будет означать например 30-100%? Это значит, что если объект занимает от 30 до 100% кадра, то значит надо отображать высокополигональную версию, а если 1-10% то низкополигональную. Выбирая каждый объект, можно выставить эти значения вручную.

А вот и видео иллюстрирующее данный урок:

Комментариев нет:

Отправить комментарий