sharsh » 13.07.2011, 11:20
Наконец появился разраб, который хочет создавать растительность для игры. Может ещё несколько человек захотят присоединится, поэтому попробую в простых примерах расказать, какие есть различные варианты создания деревьев для игр.
Расмотрим модель высокополигонного дерева для игры RW. Модель состоит из объемной модели ствола с наиболее крупными ветками. Мелкие ветки выполнены одной плоскостью с альфа каналом, эта плоскость размещается как продолжение модели крупной ветки, размещается наиболее удобно в пространстве. Этих плоскостей может быть до 2-х десятков.
А вот модель листвы несколько специфична. Текстуры листьев всех деревьев в игре одного сезона размещаются на одной текстуре с альфа каналом. Плоскость с нужным текстурным фрагментом размещается строго по фронту, перпендикулярно к камере, ей назначается шейдер, который в игре эту плоскость всегда разворачивает строго перпендикулярно к камере. Эти совершенно одинаковые плоскости с листвой размещаются по объему дерева хаотично для формирования нужной кроны. Конечно, все они размещаются строго по фронту. Что это нам дает?
Просчет плоскости с альфа каналом очень энергоемкий. Эта плоскость просчитвается один единственный раз, а так как все плоскости идентичны и имеют лишь различное начальное смещение в пространстве относительно камеры, этот единственный расчет применяется для расчета всех плоскостей с листвой. Это дает нам огромное ускорение расчета сцены для построения плоского изображения на экране по сравнению если бы эти плоскости размещались в пространстве хаотично.
Дерево, состоящее из примерно 1000-1200 треугольников, смотрится как настоящее, что вы постоянно наблюдаете в игре.
Такой же механизм применяется для создания дерева дальнего плана, состоящего из обычного прямоугольника. Поэтому в этой игре можно создавать огромные масивы лесов, которые прекрасно смотрятся и не приводят к падению производительности компа. Совешенно тот-же принцип постороения растительности используется в замечательных играх TDU и TDU2, где воссозданы целые острова. Ощущение присутствия на острове огромно.
Всем известный маршрут Хаген-Зиген проходит по пересеченной местности, имеет полосу застройки деревьями около километра по обе стороны колеи и дает прекрасную атмосферу присутствия в игре.
Теперь в противовес расмотрим маршруты схожего симулятора, ТРС2010, где используется иной принцип построения моделей растительности. Все маршруты разрабов из бывшего совка плоские как доска (за исключением Абхазиии и в неполном объеме бамовского маршрута, он очень узкий), полоса застройки деревьями колеблется от 70 до 100м в стороны от колеи. При этом всё жутко тормозит. Почему это происходит?
Конечно, движок игры давно морально устарел. Но не об этом речь.
Модели дерева делаются в специальной проге в переводе (быстрые деревья). Модель дерева состоит из модели ствола и крупных веток, листва состоит их плоскостей с альфа каналом, котрые хаотично разбросаны по кроне дерева. Именно хаотично.
Для того, чтобы дерево выглядело как дерево, этих плоскостей нужно разместить в несколько раз больше, чем в модели дерева в RW. Мало того, что хаотично размещенные плоскости нужно просчитывать по отдельности, так их ещё и довольно много. Да и деревья смотрятся не особо шибко.
Это уже личное мнение, как увидел пихты на маршруте Авель-Дрексел, так чуть не блеванул.
Но создаются деревья для ТРСа специальной прогой, что в разы быстрее создания деревьев в максе. Но и в десятки раз эти деревья тормознутые.
Исходя из этих соображений, я бы рекомендовал создавать модели растительности в максе. Посложнее, зато покрасивее и надежнее.
Уважаемый T_Ram, если захотите продолжить полемику, пожалуйста. Но только не флудите и не спамте.
Да, и покажите модель дерева в 1000 треугольников. Не 1000 поликов в Edit Poly, а 1000 треугольников в Edit Meshе.