LightWave 3D. Введение
Программный пакет LightWave 3D от компании NewTek является уникальным инструментом для создания и визуализации трёхмерной графики и анимации. Он достаточно лёгок в освоении, особенно для тех, кто рассматривает 3D как технологическое, инженерное искусство. В этой среде создаётся очень многое из того, что мы сейчас видим на теле- и киноэкранах.
Да, многие сейчас могут сказать, что в сегменте ПО 3D-моделирования и визуализации сегодня творится некое подобие революции - программ и отдельных модулей выпускается очень много. Также стоит отметить и огромную популярность того же 3ds MAX, который в силу большой распространённости не даёт развернуться конкурентам. Но... LightWave 3D по праву можно считать таким же старожилом рынка (разработка начата в 1990 году), причём концептуально он сильно приближён к 3ds MAX, вернее, мы говорим о программах-ровесниках, а интерфейсно видим больше отличий. И тут нельзя сказать определённо, что лучше.
Важное intro
Первые системы трёхмерного моделирования не являлись тривиальными по сути, причём в их рамках мы говорим об эмуляции нашего трёхмерного представления в виде математических моделей. Отдельным и, пожалуй, самым сложным блоком не только в программах трёхмерного моделирования, но и, например, в компьютерных играх и т.п. идёт система визуализации, то есть отображение трёхмерной информации на поверхности экрана - другими словами, превращение 3D-сцены в двухмерное изображение. Как многие понимают, это практически чистая математика, включающая большое количество матричных и векторных преобразований, но только сегодня (!) эти технологии стали более-менее доступны для понимания массового пользователя. То есть, технологиям уже можно быстро обучаться. В основном, этот скачок произошёл благодаря хорошей проработке рабочих интерфейсов программ, наличию библиотек из множества примитивов и стандартных операций.
Ведь раньше для того, чтобы создать модель сферы или куба с возможностями их вращения, масштабирования и смещения в пространстве, требовалось писать отдельные и не простые программы. Но потом произошло то, что мы можем встретить в любом другом деле, а именно: сложные вещи перекочевали в разряд обыденных. Большинство людей не знает, по каким принципам работает микроволновая печь, но пользуется этими электроприборами. То есть, в нашем случае вам не нужно каждый раз писать программу сферы (или создавать её в программе моделирования из отдельных точек) - вы можете использовать единожды написанный программный модуль. Таким образом, в одно время стал вопрос создания неких обобщающих библиотек (или библиотеки). Изначально не хватало ни качества, ни количества. К тому же появился ряд сопутствующих задач, таких, как текстурирование, освещение, проектирование сложных динамических сцен.
Естественно, одной из первых с вопросами создания некоей общей библиотеки, содержащей множество программных модулей, столкнулась компания Silicon Graphics. Для своих рабочих станций она создала библиотеку IRIS GL. Идея оказалась очень удачной, но требовала более качественной проработки и, к тому же, стал вопрос активного наполнения, поэтому на её базе через некоторое время был сформирован другой стандарт - Open GL. Open GL (Open Graphic Library, открытая графическая библиотека) может пополняться за счёт разработок от различных производителей при условии соответствия стандартам и прохождения определённых тестов. Идея пришлась по вкусу очень многим, ведь трёхмерная графика уже широко распространилась на многие сферы человеческой деятельности: от промышленности и архитектуры до производства мультимедийной продукции. На сегодня Open GL - это целая кладезь, включающая как базовые компоненты, так и множество дополнительных библиотек.
Даже можно сказать больше, любой опытный программист, работающий с Open GL либо даже DirectX в рамках кода, может без труда написать программу создания/моделирования трёхмерной графики и анимации, а также их визуализации. Именно поэтому программ в этом сегменте стало так много, и основной вопрос в вариантах реализации пользовательского интерфейса, то есть, нужно найти те ключевые моменты, за счёт которых программа может найти своё распространение в массах. Кстати, во многом и поэтому некоторые ключевые программы-старожилы рынка начали полностью менять свою политику, преобразовав софт в "интуитивно-понятный".
LightWave 3D не совсем к ним относится, но программа интересна тем, что представляет собой OpenGL, завёрнутый в оболочку рабочего графического интерфейса.
Тут просто необходимо ясно понять, что LightWave 3D - это и есть практически "чистый" OpenGL. Дело в том, что множество программ могут использовать гибридные движки визуализации, в том числе и со специальными встроенными новыми алгоритмами, например, по тому же расчёту освещения и теней, различные библиотеки примитивов и тому подобное.
Modeler и Layout
Сам пакет LightWave 3D состоит из двух ключевых программных модулей Modeler и Layout, которые и запускаются как отдельные программы. В рамках Modeler мы создаём/моделируем трёхмерные или даже двухмерные объекты, а в Layout работаем со сценами и анимацией. Есть и ещё один фоновый компонент это рабочей системы, именуемый Hub, который предназначен для обмена информацией между Modeler и Layout. При запуске программ вы его можете увидеть в окошке трея.
То есть, создав какую-либо модель, вы без всяких препятствий перекидываете её в Layout. Точно также сейчас устроено множество других программных взаимосвязанных систем, хотя у молодого поколения софта есть одна, на мой взгляд, ключевая ошибка, потому как моделирование объектов и создание сцен там происходит в одних и тех же окнах. Это очень громоздко по сути, особенно если мы говорим о чём-то сложном.
Основные примитивы
Основными единицами информации во всех системах трёхмерного моделирования являются вершины, другими словами, точки. В простейшем виде они описываются значениями трёхмерных координат x, у и z. Почему в простейшем? Потому как в программировании за вершинами закрепляется достаточно большое количество дополнительных свойств, но на самом деле пользователю это, скорее всего, знать и не нужно. В трёхмерной графике он оперирует другим понятием - полигоны. То есть, соединяя вершины в различные простейшие геометрические фигуры, мы получаем кирпичики, и в нашем восприятии именно из них состоит трёхмерная модель.
Поэтому, чтобы не было разночтений, обычно всё называют примитивами, и в рамках LightWave 3D мы имеем пять видов, которые обозначаются по количеству объединённых точек:
- One-point (точка)
- Two-point (отрезок)
- Three-point (треугольник)
- Four-point (четырёхугольник)
- N-gon (N-угольник)
Такое разбиение сделано неспроста. Как уже было сказано ранее, с позиции программиста главной единицей информации является одна точка, то есть вершина. При работе с OpenGL он может соединять их линиями по своему усмотрению, то есть создавать отрезки, объединять в многоугольные фигуры. Многие привыкли к тому, что полигонами называются именно многоугольники, а такие примитивы, как точка и отрезок, в их качестве не рассматриваются. Хотя это очень условно. Например, использование точек как таковых распространено в рамках создания множества мелких элементов, например, искр. Отрезки могут участвовать в создании изображений в качестве линий.
Причём тут стоит отметить очень важную деталь. OpenGL - это наиболее подходящая библиотека для программ 3D-проектирования, она очень многое позволяет делать. Как противоположный пример можно привести Direct3D (часть DirectX), в рамках которой предусмотрено только три типа примитивов: точка, отрезок и треугольник, и это уже удобно с точки зрения программирования, потому как любой N-угольник успешно разбивается на треугольники и так далее. Direct3D оптимизирован большей частью для работы с аппаратной частью и графическими ускорителями, что позволяет реализовать огромную скорость расчётов в реальном времени, в то время как OpenGL подразумевает только программные вычисления. Да и удобно ли, например, в программе трёхмерного моделирования представлять куб как совокупность треугольников? Скорее всего, для пользователя - нет.
Поэтому в LightWave 3D мы имеем не что иное, как отображение того, что было изначально заложено в OpenGL.
Кстати, у OpenGL есть ещё один весомый плюс - независимость от платформы и ОС.
Организация интерфейса LightWave 3D
Весь командный блок программы выполнен в виде реконфигурируемых закладок, которые расположены сверху по горизонтали, и соответствующих им функциональных кнопок (слева по вертикали). Многих может отпугнуть отсутствие главного меню, но на самом деле оно не так уж и нужно. Если говорить прямо, то, для сравнения, в той же 3ds MAX все панели повторяют пункты главного меню плюс предусмотрена система горячих клавиш. Получается тройное повторение. Нужно ли оно для практической работы? На самом деле, когда всё хорошо изучено, то нет. Причём, опять же, возвращаясь к 3ds MAX, можно сказать, что эта путаница там негативно отобразилась на русификации. То есть, одни и те же элементы и команды в главном меню и в панелях управления переведены по-разному. Если задуматься о причинах возникновения такой ошибки, становится очевидным - пользователь психологически привык разделять главное меню от всего остального.
У LightWave 3D оно фактически отсутствует, и это, скорее, плюс, чем минус. Единственный недостаток - это возможные сложности в освоении на самом начальном уровне.
В принципе, рабочий интерфейс очень прост. На первом этапе вы можете взять из меню Primitives (закладка Create) простейшие объёмные и двумерные фигуры. Потом, чтобы понять суть полигонального представления, имеет смысл порисовать точками. Следующим этапом идёт использование модификаторов, далее закраска и текстурирование. Все эти этапы мы на конкретном примере рассмотрим в следующей части материала. Ну и напоследок будет создание сложных сцен и анимации в рамках Layout.
Промежуточное завершение
К структуре пользовательского интерфейса (GUI), предложенной в рамках программы, очень быстро привыкаешь - он прост. Что интересно, несколько лет назад LightWave 3D позиционировалась как "лёгкая в освоении", по сравнению с тем же 3ds MAX. Сейчас это не совсем верно, поскольку разработчики последнего уделили огромное внимание облегчению GUI в своём ПО.
У обеих оболочек есть много схожих качеств, при этом стоит обратить внимание на главное - обе являются открытыми архитектурами. 3ds MAX выиграл в этом за счёт того, что основная масса его элементов ныне - это бывшие плагины, которые ранее подключались отдельно, а LightWave 3D имеет весь арсенал, который предоставляют обновления OpenGL. В обоих случаях имеются собственные языки сценариев, возможность подключения плагинов от сторонних разработчиков, система моделирования доведена до идеала, инструментарий заслуживает всяких похвал. И, как вы понимаете, LightWave 3D ничем не уступает и просто входит в тройку-пятёрку лучших.
Кристофер,
christopher@tut.by
Комментарии