содержание | {PAGES} | Рецепты вин, настоек, наливок, ликеров, пива, шампанского

Тонкости, хитрости и приемы работы


Тонкости, хитрости и приемы работы
Тонкости, хитрости и приемы работы
Трехмерные объекты (mesh), с которыми
мы будем работать, на самом “нижнем” уровне являются ничем иным, как
геометрическими поверхностями, состоящими из множества граней (face), которые,
в свою очередь, образуются ребрами (edge) — соединениями между отдельными
точками (vertex) объекта. Вполне возможно формировать объект, создавая точки,
ребра и грани и воздействуя на них напрямую, однако гораздо чаще на помощь
приходят иные средства моделирования.
Впоследствии поверхность объекта снабжается
материалом, будь это просто цвет или набор текстур. Во втором случае требуется
указать, каким образом двумерные текстуры накладываются на объект — определить
“мэппинг” (mapping). В заключение остается осветить созданную сцену и выбрать точку
наблюдения, поставив в ней камеру (часто ее функцию выполняют стандартные
“обзорные” проекции).
Теперь за дело принимается “рендерер”
(renderer), строя конечную картинку из “проволочной” геометрии, текстур и
источников света. Технологии при этом применяются разные, 3DStudio MAX с
некоторых пор является членом (хоть и не совсем полноправным) клуба пакетов для
трехмерной графики, поддерживающих raytracing — метод построения
изображения, при котором
лучи света преследуются на их пути через
виртуальный мир к виртуальному глазу.

Сплайновое моделирование
Кубический сплайн — кусочно-гладкая
параметрическая кривая, используется для аппроксимации формы, которая имеет
более сложное задание. Существуют разнообразные способы представления
кубических сплайнов, используемые в прикладных программах графики, каждый из
них отличается различными свойствами и характеризуется своей областью
использования.

Bezier-сплайны
Эти сплайны используются и в 2D прикладных
программах для векторного рисунка, и в анимации по ключевым кадрам для задания
траектории движения. Такие сплайны обычно управляются набором контрольных точек
по кривой, с возможностью настройки и управления формой в окрестности этой
точки. Управляя наклоном (производной) кривой, проходящей через данную точку, и
гладкостью в ее окрестности, получают необходимое приближение. Обычно
изменяется только наклон и с обеих сторон обеспечивается гладкость. В некоторых
случаях, однако, симметрия может быть нарушена, наклон — тот же самый, но
вторая производная меняется, или и первая производная и вторая производная в
точке меняются и мы получаем излом.
Простота интерфейса, когда сплайны меняют
форму, переходя от узла к узлу, обеспечивает большое удобство при моделировании
и анимации, однако существуют
неки-юрые сложности, преодолеть которые при
такой форме задания кривой не всегда возможно.
Мы можем увидеть иногда, как при движении
внезапно изменяется ускорение, поскольку объект переходит на участок кривой с
другой второй производной при смене ключевого кадра. Движение при этом выглядит
рваным и неестественным.

В-сплайны
Следующий класс кубических сплайнов, которые
решают эту проблему. В-сплайны сохраняют тангенс угла наклона, и изменение
кривизны является непрерывным в контрольных точках, что делает этот тип кривой
оптимальным для анимации и создании 2D-форм. Однако цена этого — отсутствие
удобного интерфейса для интерполяции — форма сплайна полностью задана
контрольными точками, не лежащими на кривой.

NURBS (неоднородный рациональный В-сплайн)
Термин, про который каждый знает, что это
хорошо, но немногие могут объяснить — почему. NURBS — единица “контрольного
списка”, которую каждая трехмерная программа графики должна иметь по
маркетинговым причинам. NURBS — специальный тип В-сплайна, разработанный для использования
в трехмерной графике. NURBS — тип В-сплайна и имеет все свойства, которые имеют
В-сплайны со всеми их преимуществами и недостатками. Он также неоднороден, что
является полезным для установки ключевых кадров в произвольных точках времени.
Однако трансформации объектов, заданных в
такой форме, более сложны и требуют большого количества
операций с плавающей точкой, которые не
могут быть оптимизированы и требуют большего времени для вычислений. Поэтому
большинство пакетов компьютерной графики, особенно на PC, справедливо считая
скорость вычислений важнейшим фактором, избегают NURBS представления.
Конечно, NURBS представление более точно
отображает многие поверхности, такие, например, как круги и эллипсы. Это делает
NURBS более интересным для систем автоматизированного проектирования и
производства прикладных программ механического моделирования. Для аниматоров,
однако, круги, которые могут быть сделаны В-сплайнами, или даже обычными
Bezier-сплайнами достаточно близки к реальным и если вы больше заинтересованы в
искусстве, чем в технологии, можете не вспоминать NURBS.
Однако с использованием аппаратного
отображения поверхностей графической системой компьютера, может пригодиться
другая особенность NURBS: возможность линейных преобразований самих контрольных
точек и оптимизация вычислений на уровне их структуры, с последующим аппаратным
отображением самой поверхности, и тогда этот способ представления получит
большее распространение.

Просчет и фотореализм
Термин фотореализм используется, чтобы описать
компьютерное изображение, которое выглядит также реально, как на фотографии.
Процесс компьютерной генерации изображения (просчет) или рендеринг, оценивался
на заре своего появления исключительно с
точки зрения фотореалистичности. Однако, с
развитием компьютерной графики этот критерий отходит на все более дальний план.
И дело даже не только в том, что компьютерная графика все больше переходит в
область искусства, айв том, что основные принципы компьютерных построений, а
следовательно, и все приемы и средства, которые позволяют добиваться
впечатляющих эффектов, к реализму никакого отношения не имеют, и рождаются
подчас исключительно в недрах самой компьютерной графики.
Рассмотрим основные методы визуализации
компьютерной модели. Наиболее простым из таких методов является метод Гуро,
который основывается на определении освещенности грани в ее вершинах с
последующей интерполяцией получившихся величин на всю грань. Этот метод не
обеспечивает гладкости изменения закраски и имеет много дефектов на изображаемой
поверхности, однако является самым оптимальным в вычислительном отношении,
поэтому часто используется в предварительных расчетах.
Как и метод Гуро, следующий метод — Фонга,
при расчетах также опирается на интерполирование закраски, однако, в отличие от
предыдущего метода, здесь интерполируется значение самого вектора нормали в
данной точке, которое затем используется для вычисления цвета пиксела в
соответствии с законами физики.
Вот тут-то и начинается... Произвольно меняя
вектор “нормали” в точке, мы можем получать из острых ребер — гладкие, а из
гладких поверхностей — шершавые. А также, здесь мы можем изменять цвет и
свойства поверхностей,
используя специальную картинку — “текстуру”
или “карту” того или иного свойства материала.
Существуют различные способы наложения
текстур или непосредственной генерации в каждой точке по заданной формуле
(такие текстуры называются процедурными, в отличие от простых, проективных).
Несомненным достоинством моделей Гуро и Фонга является их сравнительная
простота. Однако, вследствие значительных упрощений, получаемый результат не
всегда оказывается удовлетворительным, поэтому приходится пользоваться более
совершенными методами. Как, например, методом трассировки лучей
(ray-tracing) или методом излучательности (radiosity).
При построении изображения методом
трассировки, луч посылается в заданном направлении для оценки приходящей оттуда
световой энергии. Эта энергия определяется освещенностью поверхности,
встретившейся на пути луча, с учетом преломления, отражения и рассеяния.
Поступая таким образом, можно определить освещенность каждой поверхности сцены
и построить требуемое изображение.
Однако, полный просчет лучей от всех
источников, называемый прямой трассировкой, из-за огромного количества
вычислений не применяется. Кроме того, большая часть работы на прослеживание
лучей, не попавших в глаз наблюдателю и' определение освещенности невидимых
поверхностей, окажется проведенной впустую. Поэтому на практике реализуется так
называемая обратная трассировка, при которой отслеживаются только лучи,
попавшие в глаз наблюдателя.
Основными недостатками метода трассировки
лучей является неэффективность работы с диффузными поверхностями (которые, в
основном, и существуют в природе) и то, что определение освещенности
поверхностей проводится параллельно с построением изображения и зависит от
положения наблюдателя.
Метод излучательности устраняет эти
недостатки, обеспечивая высокую точность при работе с диффузными объектами и
отдельное вычисление глобальной освещенности, независимо от положения
наблюдателя. В основе метода лежит закон сохранения энергии в замкнутой
системе. Все объекты разбиваются на фрагменты, и для этих фрагментов
составляются уравнения баланса энергии. Грубо говоря, каждый элемент сцены
выступает в роли источника света. Картина в этом случае наиболее достоверная,
но вычислительная сложность непомерна даже для специализированных рабочих
станций. Поэтому те немногие реализации, которые существуют сегодня,
используются только при просчете одиночных изображений.
И, наконец, делая общие выводы о процессе
ЗD-визуализации, важно подчеркнуть необходимость качественного алгоритма
просчета. И даже не в смысле математики, положенной в его основе, а в смысле
его высокопрофессиональной реализации. Renderman фирмы Pixar не
использует ни алгоритм трассировки лучей, ни, тем более, излучательность,
однако считается одним из самых качественных и на нем-то, собственно, считались
почти все широко известные работы для видео и кино.

Что дальше?
Плавно переходим к работе в 3D Studio Max.
Бегло ознакомимся с оболочкой и попробуем выявить элементы представляющие для
нас наибольший интерес, а заодно и просто попривыкнуть к обстановке, дабы на
будущее знать примерно, что где лежит. Итак, смотрим и видим...
...4 проекции создаваемого нами мира. Их
расположение, тип и количество можно менять. Активируется тот или иной вид
кликом на его названии в левом верхнем углу.
Далее видим довольно типичное меню.
То, что нас непосредственно может
интересовать, объяснений не требует. Более того, многие его команды
продублированы на других панелях.
Далее видим пестрое сборище всевозможных
инструментов
Немного подробнее о наибтее важных.
Это классические Undo и Redo.
Распространяются на множество шагов, но существуют и необратимые операции.
Курсор для выбора объектов, меню типов
выбора (прямоугольник, эллипс, полигон), фильтр выбираемых объектов, вызов окна
списка объектов для выбора по имени.
Эти кнопки представляют собой самые простые
операции, которые можно совершить с объектом в пространстве — переместить,
покрутить, пропорционально или непропорционально уменьшить или увеличить,
опираясь при этом на различные системы координат, с возможностью ограничить
изменения одной или двумя осями.
Кнопка вызова редактора материалов.
Основной доступ к рендереру — модулю,
занимающемуся построением готовых картинок из
сделанной нами геометрии, присвоенных
объектам поверхностей и расставленных источников света.
Панель контроля видов/проекций создаваемого
мира для перемещения точки зрения наблюдателя, изменения направления и угла
обзора, оптимизации вида и т.д. — не влияют на созданную геометрию (за
исключением положения камеры).
Все, что мы до настоящего момента успели
рассмотреть, больше напоминает своеобразный рабочий стол, на котором под рукой
— в относительном (техническом) беспорядке — всегда самое нужное. Теперь на
очереди строгая иерархическая система создания и модификации объектов — этакий
шкаф с разложенными по полочкам и ящикам заготовками и инструментами. Вот как
выглядит верхний уровень этой иерархии:
Работа по созданию модели, как правило,
начинается с простейших двух- или трехмерных элементов, таких как прямая линия,
сплайн, полигон, куб, шар и т.д. В результате взаимодействия примитивов по
различным схемам и наложения на объекты или их части соответствующих
модификаторов, возникают более сложные и приближающиеся к конечному идеалу
модели.
Так, в меню Create мы, в первую
очередь, сталкиваемся с возможностью выбора типа элемента, который мы хотим
создать:
стандартный ли примитив, двухмерную фигуру,
а может, источник света, камеру или что-то другое.

Hello, world!
Итак, долгожданное начало! Попробуем сделать
его достаточно простым и эффектным, и, не слишком размышляя над смыслом сего
действия, придадим объем некоему тексту. Найти “создаватель текста” не
составляет большого труда — он именно там, где ему и положено быть, среди
двумерных примитивов, в категории Splines на панели Create.
Появившаяся внизу диалоговая панель для
ввода текста, особых объяснений не требует, теперь можно подстегнуть свое
воображение в выборе шрифта и содержания. Касательно первого рекомендуется для
начала ограничить выбор шрифтами “потолще” и без большого количества острых
углов и узких переходов, хотя, в принципе, подойдет что угодно — в нашем случае
это был простой Arial Bold. Когда выбор сделан, кликнем левой кнопкой
мыши в центр поля Front. Вот и наш текст.
Самое время немного поиграть с режимом
перемещения, подвигав свежесозданный текст в разные стороны, а также с
контроллерами видов,
разобравшись, что делает каждый из них — это
совсем несложно.
Попробуем сделать наш текст трехмерным.
Методов для этого существует множество, однако мы воспользуемся самым простым и
удобным, который предлагает нам МАХ — модификатором Bevel.

Bevel находится в стандартном наборе модификаторов и доступен через меню
more на панели Modify. Модифицируемый текст, само собой, должен быть
выбран.
Коротко о том, как работает этот
модификатор: к контуру, взятому за основу, достраиваются на заданном расстоянии
от него дополнительные “этажи” (levels) — максимум 3 штуки — из его
копий, по необходимости расширенных или суженных (outline). Несколько
сжимая контур текста при удалении от основы, можно получить “мягкую” выпуклую
поверхность.
Можно посвятить некоторое время
экспериментам с различными параметрами, однако для ориентации здесь приведена
неплохо работающая комбинация (размер текста — 100). Пользоваться параметром
keep lines from crossing рекомендуется только в крайнем случае, когда иным
способом невозможно удержать линии контура от наползания друг на друга и
образования артефактов при
изменении outline - связанный с ним
алгоритм требует весьма ингенсивных вычислений.

То, что у нас должно получиться, выглядит в
поле перспективного обзора (perspective), в котором мы, ради исключительно
эстетических целей, с помощью контроллеров видов несколько изменили положение
точки наблюдения и масштаб, примерно так:
Сейчас вполне можно задаться вопросом, с
какой, собственно, стати, объект в перспективном обзоре освещен, и чем? — ведь
мы пока не создавали источников света. Дело в том, что для облегчения нам жизни
на первых этапах работы со сценой, МАХ по умолчанию добавляет “параллельную”
освещенность без теней. Организацией правильного освещения мы займемся
несколько позже, а пока давайте посвятим некоторое время замене глупого
шероховатого пластика (примерно так выглядит материал по умолчанию, цвет
выбирается случайным образом), из которого сейчас сделан наш текст, на
что-нибудь более впечатляющее.

Хромированный металл
По сложившейся традиции обучения первым
шагам в 3D, используется хромированный металл. Традиция неплохая, не будем ее
нарушать.
Прежде, чем мы нажмем на кнопку вызова
редактора поверхностей, позвольте немного предварить наше с ним знакомство
коротким теоретическим отступлением.
Поверхности объектов в окружающем нас мире
характеризуются множеством параметров — они по-разному поглощают, отражают и
преломляют свет. Поскольку рендерер стремится добиться максимального реализма
при построении изображений, можно быть готовым к тому, что материалы в
виртуальной сцене также должны быть снабжены всевозможнейшими характеристиками,
отражающими их оптические свойства.
Для начала разберемся с простейшей из них —
цветом. Точнее, цветами, поскольку в редакторе материалов 3DStudio MAX базовых
цветов — четыре:
• Ambient — цвет объекта с неосвещенной прямым светом стороны.
• Diffuse — цвет объекта с освещенной белым светом стороны.
• Specular — цвет ореола блика от яркого источника света.
• Filter — “окраска” света, проходящего через отчасти
прозрачный материал. Этот пункт, строго говоря, на конечный цвет объекта прямо
не влияет.
“Блестящесть” объекта определяется двумя
параметрами:
• Shininess — размер блика.

Shininess Strength — яркость блика.
Кроме того, мы можем регулировать
прозрачность (точнее, непрозрачность) объекта параметром Opacity, и
сделать его светящимся, устанавливая Self-Illumination.
Изученного нами сейчас достаточно для
моделирования поверхности объекта, в реальном мире сделанного из одноцветного
материала равномерной матовости/блестящести. Однако поверхности реальных
объектов достаточно редко одноцветны и равномерны. Гораздо чаще они
текстурированы: на них бывают изображения, неровности, они обладают меняющейся
в зависимости от точки объекта блестящестью и прозрачностью. А иногда в них к
тому же что-то отражается. Как быть? Редактор материалов предлагает
наиболее логичное решение — нанести на
объект причитающиеся ему текстуры в виде плоских картинок. Итак, вооруженные
приобретенными знаниями, вперед.
В стандартном варианте редактор поверхностей
предлагает 6 ячеек (slot) для одновременной работы с материалами и текстурами.
В каждой из них — образец материала на освещенном шаре (вариант — кубе или
цилиндре). Конечно, можно выбрать готовый материал из стандартной библиотеки,
входящей в состав стандартной инсталляции пакета, однако мы учимся, а потому
попробуем сделать свой собственный материал от начала и до конца.
За основу возьмем материал в любой ячейке и
выставим Shading, цвета, Shininess и Shininess Strength в
приведенные здесь значения. Заодно можно и
назвать наш материал — chrome. Полученный образец материала
хромированную сталь, однако, напоминает довольно слабо. Гроблема очевидна — не
хватает отражений.
На панели Maps найдем требуемый пункт
— Reflection — и ткнем мышкой в пока еще пустующую (в ней значится
None) ячейку текстуры.
Небольшое замечание касательно терминологии:
под текстурами (тар) мы будем понимать нечто большее, чем проецируемые на
поверхность объекта картинки (они являются лишь одним из параметров), в это
понятие входят и так называемые процедуральные текстуры (изображения не
хранятся в файле, а генерируются программно), а также многие другие данные,
такие как искажения, размытость, фильтры и прочее.
В появившемся меню выбора типа текстуры,
выберем Raytrace для достижения большей реалистичности в воспроизведении
отражений. Теперь в объектах с поверхностью из этого материала отражались бы
другие элементы сцены.
В нашем случае, однако, мы имеем в сцене
выстроенные в ряд буковки, да и только. А потому отражений получилось бы до
обидности мало. К счастью, текстура Raytrace предлагает возможность
эмулировать окружение объекга другой текстурой — в нашем случае это будет
просто некая картинка, имитирующая хромированную поверхность.
Обнаружив параметр Background,
кликнем в опять же пока незадействованную ячейку текстуры фона.
В появившемся — уже знакомом нам — меню
выбора типа текстуры на этот раз выберем Bitmap — ведь на этот раз мы
хотим использовать вполне конкретную картинку.
Наконец, установим параметр Bitmap,
выбрав соответствующий файл.

В процессе создания материала мы незаметно
спустились по лестнице иерархии на 2 уровня вниз (от самой поверхности к одной
из её текстур и далее к ее вспомогательному элементу). Вернемся обратно.
Наше творение должно теперь выглядеть
примерно так:
Остался один важный шаг — присвоить материал
выбранному объекту нажатием на кнопку
На этом работа с редактором материалов
завершена, закроем его и вернемся к нашей сцене.
Наверное, уже сейчас ужасно не терпится
посмотреть, что же мы там натворили. Что ж, активируем вид Perspective и
обратимся к услугам рендерера
(Render Scene), выставим размер картинки поменьше (320х200 вполне
подойдет) и ткнем в кнопку Render (в будущем, когда все параметры
рендеринга выставлены, можно пользоваться Quick Render, расположенной
непосредственно справа от Render Scene). Прилежно подождем, алгоритмы
Raytracing требуют множества вычислений.
Обнаружить панель создания источников — не
так сложно:
•          Spot — конус света из определенной точки.
•          Free — направленный поток параллельных лучей.
•          Omni — точечный источник, излучающий         равномерно во все стороны.
Для освещения сцены нам потребуются три
лампы типа Omni потемнее и один Spot поярче. Начнем с Omni.
Выбрав Omni и слегка уменьшив яркость
примерно до 90, ткнем левой кнопкой мыши в окне Тор где-нибудь
перед текстом — первый источник света
создан' Еще две копии его можно сделать посредством клонирования — Shift+drag-and-drop
в режиме перемещения.
Теперь очередь Spot. Установим его
яркость примерно на 130 Контроллером видов Zoom изменим масштаб
сцены в окне Тор так, чтобы можно было создать центр новой лампы на
достаточном расстоянии от текста, ткнем левой кнопкой мыши и протянем линию —
основное направление Spot. Теперь осталось разместить созданные
лампочки, пользуясь видами Top, Left и Front:
Теперь волнующий момент — финальный рендеринг...

содержание | Рецепты вин, настоек, наливок, ликеров, пива, шампанского
Hosted by uCoz