Реалистичные трёхмерные модели деревьев — это товар, на который есть спрос. Они нужны и разработчикам компьютерных игр, и голливудским спецам по компьютерным спецэффектам, причём нужны в количествах, достаточных для того, чтобы засадить не один лес. Вручную столько не нарисовать, даже если очень захотеть. Как же решают эту проблему?

Реалистичной растительностью в видеоиграх сегодня никого не озадачишь, особенно после Far Cry (2004 год) и Oblivion (2006 год). Впрочем, обе эти игры на момент выпуска отличались весьма высокими системными требованиями, как и потомки Far Cry, чей движок вообще образовался из технического демо. Тем не менее более-менее реалистичная растительность в играх сегодня — норма. Так было не всегда, естественно.

В ранних 3D-играх (не путать со стереоиграми) деревья вообще были проблемой. Во-первых, полигоны: конечно, если реализм не является целью, то можно ограничиться достаточно грубой моделью ствола (вплоть до насаженных друг на друга пятигранников), столь же низкополигональных ветвей и плоскими многоугольниками с 32-битными текстурами (то есть поддерживающими альфа-канал, обеспечивающий частичную прозрачность).

Такой подход, кстати, до сих пор более чем активно используется. В этом плане очень показателен World of Warcraft, в котором разные зоны делались в разные годы. Например, в остатках «старых» зон, нарисованных без малого десять лет назад, деревья представляют собой преимущественно довольно примитивные, угловатые фигуры (углы «скрадываются» шейдерами и грамотно используемыми текстурами), а кроны напоминают капустные кочаны.

В более новых локациях и деревья прорисованы более детально — то есть модели посложнее, и текстуры почётче, и плашек, изображающих листву, стало побольше.

Деревья в World of Warcraft: чётко видна низкополигональность и ''плоская'' листва

При этом ориентирована эта «листва» именно так, чтобы её плоская натура не особо бросалась в глаза, то есть из нескольких регулярных фигур создаётся имитация природной нерегулярности.

А одну более-менее подробную модель дерева можно использовать многократно — достаточно немного поменять её размеры и сориентировать иначе, нежели соседнее дерево, и никто не заметит, что дерево «клонировано».

Примитивные деревья World of Warcraft — отчётливо «ручная работа». Но подобный подход не всегда и не для всего годится. Когда нужна отчётливо разнообразная растительность, а времени на всё не так чтобы очень много, за помощью приходится обращаться к программистам.

Которые, в свою очередь, пишут процедурные пакеты, позволяющие художникам создавать трёхмерные модели деревьев (в том числе анимированные) с минимальными усилиями.

Вот, возможно, лучший пример:

Это SpeedTree — пакет, страшно популярный среди игроделов да и в киноотрасли теперь тоже. Инопланетные леса на Пандоре для «Аватара» делали именно сотрудники компании Interactive Data Visualization, создавшей этот вот middleware.

Как видно из вышеприведённого ролика, дерево конструируется в «полуручном» режиме: задаётся n-ное количество параметров внешнего вида и строения дерева, дальше художник буквально «вытягивает» из ствола ветви там, где ему нужно. Потом, если нужно, чтобы дерево представляло собой не полностью статичную фигуру, а нечто более реалистичное, ему задаётся «скелет» для анимации и физических эффектов. В конце ролика хорошо видно, что это такое.

Кстати, судя по тому как выглядит конструктор, в основе модели лежат не многогранники, а кривые Безье, но это всё же детали.

Вот ещё одно видео, связанное со SpeedTree и показывающее, как его конструктор используется для Unreal Development Kit. Кстати,

SpeedTree — весьма дорогостоящая коммерческая разработка, стоимость одной лицензии — 7-10 тыс. долларов. Однако количество игровых наименований, где она используется, говорит само за себя. Роскошью своих природных пейзаей Oblivion, например, именно ей и обязан.

Скриншот игры The Elder Scrolls IV: Oblivion
Скриншот игры The Elder Scrolls IV: Oblivion

Но есть и бесплатные альтернативы разного уровня проработанности, например, ngPlant:

Easy Tree Generator:

Dryad и множество других. Не говоря уж о том, что в современных трёхмерных пакетах имеется иногда даже по нескольку дополнений, позволяющих процедурным порядком генерировать деревья — одиночные или в массивах.

Но эти разработки, при всех их достоинствах, требуют порой весьма много возни — пока разберёшься, где какой параметр за что отвечает, может уйти уйма времени.

Но всяко меньше, чем «выращивать» очередное 3D-Лукоморье вручную.