Giglavy.com / Публикации / Русская версия виртуального конструктора Internet3D Space Builder 3.0

   Первое занятие будет посвящено базовым понятиям виртуального конструктора ISB 3.0. Я расскажу о том, что такое видовые экраны, сетка, шаг, сглаживание сплайна, линии уровня, линейка, виртуальная камера и источник света. В журнале "САПР и Графика" (номера 1998 года - восьмой, девятый и десятый) в специальной рубрике "За партой" были мои статьи об английской версии ISB 2.1.2, в которых пользователи ISB на практике учились создавать виртуальные миры. Если на выполнение одного практического задания в ISB 2.1.2 (по статьям журнала "САПР и Графика") уходило более трех пар на факультативе в Лицее информационных технологий №1533, то здесь каждое занятие рассчитано строго на один академический час (40 минут). Следует отметить, что англоязычный ISB 2.1.2 появился на отечественном рынке в середине 1997 года, а ISB 3.0 на русском языке - в 1999 году. Все занятия ориентированы исключительно на третью версию.

   Занятие первое. Видовые экраны

Рис. 1

Рис. 2

   Работа с каркасными моделями трехмерных объектов осуществляется в видовых экранах. По умолчанию в видовых экранах представлен вид сцены спереди и сверху. Для того, чтобы повернуть оба вида на определенное число градусов, в ISB есть специальный инструмент, который называется Колесо (рис. 1). Если щелкнуть по Колесу и, удерживая левую кнопку мыши нажатой, поворачивать черную отметку относительно центра Колеса, то изображения в видовых экранах тоже будет поворачиваться. Следует отметить, что положение объектов сцены при этом меняться не будет. Но формы, создаваемые после поворота видов, будут повернуты под заданным углом к формам, сделанным до поворота видов.
   Бывает так, что при увеличении до максимума размеров одного из видовых экранов исчезает либо вид спереди, либо вид сверху. Для восстановления утерянного вида используется Вешка разбивки, расположенная в правом верхнем углу экрана (рис. 2). Если, удерживая левую кнопку мыши, перетащить Вешку разбивки вниз приблизительно до половины одного видового экрана, то утерянный вид восстановится.
   Если пиктограмма показывает максимально крупное изображение, включающее все видимые элементы сцены, то значок выводит на экран максимально крупное изображение текущего объекта, с которым в данный момент идет работа. Каркасы объектов в видовых экранах имеют разный цвет. Каркас текущего объекта - красного цвета, каркас примитивов сцены - синего, ну а каркасы всех остальных зависимых и независимых объектов - розовым. Для изменений геометрии доступен только текущий объект. Двойным щелчком в определенном месте одного из видовых окон устанавливается виртуальная камера.

   Сетка, шаг, сглаживание сплайна и линии уровня

Рис. 3
   Вспомогательная Сетка состоит из точек, расстояние между которыми можно менять в окне Сервис (рис. 3, вкладка План). Окно можно вызвать несколькими способами. Самый быстрый из них - вызов через пункт Свойства из контекстного меню (такое меню вызывается нажатием правой кнопки) одного из видовых экранов. Для точности построений используют Шаг, отношение которого к расстоянию между узлами Сетки определяется также в окне Сервис. В этом же окне задается положение Линий уровня, определяющих высоту создаваемого примитива, толщина Стен, Пола и Потолка комнаты (Комната - это специальный примитив). И, наконец, последние параметры, определяемые в окне Сервис - это степень сглаживания и натяжения сплайна, определяющая количество граней создаваемого объекта.

   Линейка, виртуальная камера и источник света

Рис. 4
   Просмотр сцены в окне перспективы осуществляется с помощью виртуальной камеры. Инструмент Линейка (рис. 4) позволяет изменять положение камеры по оси Z и размер линзы, которая используется камерой (кнопка уменьшает резкость перспективы, а - увеличивает). Если активизирована Линейка, то один из видовых экранов обязательно пропадает. Источник света в ISB 3.0 устроен достаточно просто. Подразумевается, что невидимая на определенный момент часть сцены освещена чуть хуже, чем видимая. Для того, чтобы затемненная часть сцены стала светлее, используют операцию падающего меню Камера/Источник Света, которая усиливает источник общего освещения текущего участка сцены в окне перспективы.
   Сейчас вы ознакомились с основными понятиями ISB, необходимыми для начала работы. На втором занятии вам предстоит узнать о том, что такое режимы моделирования в ISB, чем примитив отличается от объекта и как устроено Дерево сцены. Несколько слов будет сказано об особенностях навигации в окне перспективы.



   Занятие второе. Режимы моделирования в ISB 3.0

Рис. 5
Рис. 6
Рис. 7
Рис. 9
Рис. 10
   В ISB есть один основной и два дополнительных режима моделирования. Основной - режим построения объемных примитивов (Режим сборки). Высоту создаваемого в этом режиме примитива определяют Линии уровня. Вы выбираете тип примитива в категории Формы (рис. №5), затем определяете пропорции и местоположение заготовки (рис. 6) и после этого форма фиксируется нажатием клавиши Enter. Менять местоположение и пропорции заготовки можно в окне перспективы (рис. 7) с помощью центра будущего примитива и его базовых точек. Заготовку формы можно вычесть из уже имеющихся в текущем объекте примитивов. Необходимо, чтобы вычитаемая заготовка пересекалась хотя бы с одним из примитивов текущего объекта.


Рис. 8

   Есть возможность создавать пользовательские примитивы с помощью команды падающего меню Сервис/Записать форму. Эта команда включает режим записи производимых действий. В таком режиме можно нарисовать какой-нибудь сложный примитив (например, винтовую лестницу), а команда Сервис/Стоп активизирует окно (рис. 8), где вы зададите имя пользовательской формы, категорию каталога Shapes и название файла, в котором она будет храниться на диске.
   Два дополнительных режима - это режим построения выпуклых замкнутых полигонов, полигональный режим и режим построения сплайнов вписанных в такие полигоны, Сплайновый режим). На рис. 9 показан пример сплайна, вписанного в полигон. Существует четыре способа преобразования сплайна или полигона в заготовку примитива (высота такой заготовки определяется Линиями уровня):

1) (Сплошная призма) - преобразует в заготовку сплошной призмы
2) (Стена) - преобразует в заготовку стены (см. первое занятие)
3) (Комната) - преобразует в заготовку комнаты (см. первое занятие)
4) (Пирамида) - преобразует в заготовку пирамиды

   При нажатии на одну из преобразующих пиктограмм включается режим построения объемных примитивов!

   Чем примитив отличается от объекта и как устроено Дерево сцены?

   Узнать ответ на этот вопрос необходимо еще до начала создания своей первой VRML-сцены (VRML - Virtual Reality Modeling Language). Примитив - это неделимый элемент объекта, объект - элемент сцены, состоящий из примитивов. Для того, чтобы начать создание объекта, надо выполнить команду падающего меню Объект/Создать/Новый объект. Лучше и удобнее всего начинать создание сцены именно с этой команды. В противном случае все создаваемые примитивы будут принадлежать сцене. Если совокупность примитивов любого отдельного объекта можно перемещать, поворачивать, масштабировать и удалять, то совокупность примитивов сцены - нельзя (в иерархии такой набор так и называется Сцена). Для того, чтобы преобразовать совокупность примитивов сцены в объект, нужно заменить расширение файла сцены .WRL на .VCD и поместить переименованный файл в один из подкаталогов директории Objects.
   Дерево сцены состоит из корня (уже упомянутая совокупность примитивов сцены с неизменным именем Сцена), свободной камеры, объектов-потомков и объектов-предков. Пример Дерева сцены показан на рис. 10. В данной иерархии предком всех объектов является объект House, объекты First_floor и Second_floor - одновременно и предки, и потомки. Одним словом, Дерево сцены устроено так же, как и структура каталогов на диске.

   Особенности навигации в окне перспективы

   Управление камерой в окне перспективы осуществляется не только с помощью клавиш указателей. В ISB есть целый ряд дополнительных комбинаций клавиш для навигации. В режиме редактирования сцены свои законы навигации, в режиме редактирования объекта - свои. Для начала рассмотрим комбинации для режима сборки сцены. В этом режиме вы перемещаетесь в любом направлении в окне перспективы, удерживая левую кнопку мыши. При этом, перемещая курсор вверх, вы двигаетесь вперед (на клавиатуре - клавиша-указатель вперед), перемещая вниз - назад (клавиша-указатель назад), вправо - поворот объектива вправо по горизонтальной плоскости (клавиша PageUp), влево - поворот объектива влево (клавиша Home).
   В режиме редактирования объекта несколько иная ситуация. Поворот вправо и влево с помощью мыши вертит камеру вокруг центральной оси объекта. А клавиши вперед, назад, PageUp и Home работают также как и в режиме редактирования сцены. Следует отметить, что если камера создается (операция падающего меню Камера/Дубликат) в режиме редактирования определенного объекта, то она автоматически становится потомком этого объекта. В этом случае объект будет перемещаться вместе с камерой. Если обозрение в окне перспективы ведется из зависимой камеры и вы двигаете объект, который командует этой камерой в иерархии, то положение такого объекта в окне перспективы меняться не будет.
   При двойном щелчке по любой грани примитива в окне перспективы камера передвигается в положение, удобное для рассматривания этой грани. Для выравнивания камеры по горизонтали используются пиктограмма , по вертикали - . Если включить контроль столкновений (пиктограмма ), то камера не будет проходить сквозь полигон во время навигации в окне перспективы. Третье занятие будет посвящено основным методам моделирования отекстуренных сцен на ландшафтах.

   Занятие третье. Методы моделирования в ISB 3.0

   Для того, чтобы ознакомиться с основными методами моделирования, необходимо по шагам построить достаточно примитивную с художественной точки зрения VRML-сцену, состоящую из отдельных объектов, используя максимальное число операций моделирования конструктора ISB. Итак, начнем:
Рис. 11
   Загрузите Internet3D Space Builder 3.0. Команда падающего меню Файл/Установить Фон вызывает диалоговое окно для выбора определенного ландшафта (рис. 11). Выберите в левом верхнем углу этого окна схему ландшафта, которая называется Зима.
   Выполните команду падающего меню Объект/Создать/Новый объект. Вы перейдете в режим редактирования нового объекта и ландшафт в окне перспективы пропадет. В Дереве сцены замените имя объекта Object на House. Теперь в окне Сервис (см. первое занятие) измените положение Линий уровня так, чтобы нижняя линия уровня была на отметке 0, а верхняя - на отметке 0,5. В этом же окне установите значение Шага, равное единице. В графе Активна выберите отношение 1:4. Толщина стен, пола и потолка Комнаты пусть будет по 0.25, а Сглаживание сплайна - 16. С параметрами моделирования разобрались.
Рис. 12
Рис. 13
Рис. 14
Рис. 15
Рис. 18
   Теперь надо установить параметры наложения текстур. Операция падающего меню Сервис/Настройки выводит на экран диалоговое окно с несколькими вкладками. Выберите вкладку Отекстуривание (рис. 12). Замените параметры по горизонтали и по вертикали на 0,5. Двойной щелчок по пиктограмме активизирует редактор материалов (рис. 13). В категории текстур (для вывода этой категории на экран есть команда Вид/Текстуры) выберите текстуру Brick11 (рис. 14) из каталога Brick. Перетащите ее на изображение шарика в окне редактора материалов. Этот материал автоматически станет текущим и будет присваиваться создаваемым примитивам до тех пор пока не изменят его параметры и текстуру, после чего текущим станет получившийся в результате изменений материал.
   Для начала необходимо нарисовать фундамент. Перейдите в Полигональный режим (см. второе занятие). Нарисуйте четырехугольный полигон размером 12X10 метров (метр - условная единица ISB). Затем нажмите пиктограмму (Стена) и клавишу Enter. Теперь измените положение Линий уровня так, чтобы нижняя линия уровня была на отметке 0.5, а верхняя - на отметке 4. Следить за изменением размеров формы и за положением Линий уровня позволяет статусная строка, расположенная в нижней части рабочего экрана.
   Выполните команду падающего меню Объект/Создать/Новый объект. Новый объект с новым именем First_floor автоматически станет потомком объекта House. Выберите текстуру Wuds05 (рис. 15) из каталога Wood. Перетащите ее в окно редактора материалов. Нарисуйте еще один полигон по контурам фундамента. Для того, чтобы преобразовать полигон в комнату, нажмите пиктограмму (Комната).
Рис. 16
Рис. 17
Рис. 19
   Готов фундамент и комната. Осталось проделать дверь с окнами, нарисовать лестницу и покрыть дом крышей. Начнем с двери. Переместите верхнюю Линию уровня на отметку 3, а нижнюю - на отметку 0,75. Нарисуйте в левом нижнем углу комнаты в стене параллелепипед размером 1X0,25. Нажмите клавишу Delete. Появится отверстие двери. Установив верхнюю линию уровня на 3,5, а нижнюю - на 1,75, так же, как и дверь, вырезайте окна, используя форму Arc. В результате у вас должно получиться примерно то же самое, что и на рис. 16. Сделайте House текущим, щелкнув по одному из его полигонов в окне перспективы.
   Новый объект - лестница, потомок объекта House (имя ее - Stair). Расположите ее, как обычно, перед дверью. В контекстном меню грани фундамента в окне перспективы выберите пункт Линии уровня. После этого линии уровня автоматически установятся по высоте выбранной грани. Значение Шага можете чуть-чуть уменьшить. Нарисуйте лестницу, опуская после каждой ступеньки верхнюю Линию уровня вниз.
   И, наконец, крыша. Крыша (Roof) - потомок объекта House. Линии уровня: верхняя - 7, нижняя - 4. На рис. 17 показан полигон, который необходимо нарисовать для крыши после перехода в полигональный режим. После того, как полигон нарисован, нажмите пиктограмму (Пирамида), предварительно перетащив в окно редактора материалов текстуру Bla28 (рис. 18) из каталога Block. Нажмите Enter. Черепичная крыша готова, а текстура на нее наложена кое-как. Для того, чтобы изменить угол наклона текстуры, выберите пункт Трансформировать Текстуру из контекстного меню любой грани крыши в окне перспективы. Вы перейдете в модуль трансформации текстур. Щелкните два раза подряд в любом месте рабочего экрана этого модуля. Вы установите инструмент для поворота и трансформации текстур, который называется Иголка. Затем, удерживая левую кнопку мыши нажатой, поверните текстуру так, как на обычных реальных крышах. То же самое проделайте с остальными гранями крыши. Результат показан на рис. 19. Для того, чтобы сохранить вместе с файлом VRML-сцены все ресурсы (в данном случае имеются в виду текстуры) в один каталог, выполните команду Файл/Опубликовать и рядом с надписью Копировать все ресурсы в один каталог поставьте черточку.
   Следующее занятие - свойства объектов типа Картинка и Видеофильм, которые вы будете вставлять в созданную вами сцену. Вы научитесь обрабатывать различные текстуры на отдельных гранях примитивов и перемещаться из сцены по заданному Адресу сети Интернет.

   Занятие четвертое. Картинки и видеофильмы

   Начну сразу с нескольких определений. Картинка - плоский объект с изображением, которое хранится в памяти в виде графического файла (расширение .GIF, .JPG и .BMP). Для того, чтобы присвоить Картинке адрес Интернет, есть пункт Адрес Интернет в контекстном меню картинки в окне перспективы. ISB позволяет присваивать картинкам URL-ссылки (URL - это Uniform Resource Locator, единообразный определитель местоположения ресурса). Единственный недостаток: многие стандартные программы просмотра VRML-сцен не осуществляют переход к другой сцене, которая хранится на местном жестком диске. Так что задавать адреса типа file://c:\isb\scenes\scene.wrl не имеет смысла. Зато ссылка типа http://www.paragraph.com/students/scene.wrl на любой другой сервер будет осуществляться. Картинка перетаскивается из категории Картины на любой полигон, видимый в окне перспективы (для вывода этой категории на экран есть команда Вид/Картины). Удерживая левую кнопку мыши, можно менять размер картинки, вытягивая любой ее угол. Для пропорционального масштабирования картинки надо удерживать клавишу Shift.
   Видеофильм - анимационный фрагмент со всеми свойствами Картинки, хранящийся в памяти в виде совокупности индексированных графических файлов. В контекстном меню видеофильма в окне перспективы есть пункт Направление видеофильма, открывающий дополнительное меню выбора способа воспроизведения совокупности индексированных файлов. Всего три способа: Вперед, Реверс - назад, Качели - один раз в одну сторону, один раз - в другую. И к картинке, и к видеофильму можно присоединять звук в формате .WAV. Картинка и видеофильм - элементы иерархии объектов, которые можно удалять. Для удобства навигации в окне перспективы можно фиксировать картинку и видеофильм на полигоне любого примитива (см. контекстное меню картинки или видеофильма). В случае необходимости картинку или видеофильм можно отцепить от полигона (в контекстном меню - пункт Освободить). Для редактирования картинок и текстур в ISB есть специальный редактор изображений (см. контекстное меню картинки, пункт Редактировать). Теперь практика.
Рис. 20
   Загрузите опубликованную сцену, которую вы создали на третьем занятии (как на рис. 19). Активизируйте категорию Картинок. Так же, как и текстуру, перетащите картинку с именем P9531402 на одну из внутренних стен вашей времянки (рис. 20). Картинка автоматически станет потомком объекта First_floor. Таким же образом можете повесить еще несколько картинок и видеофильмов из категории Видеофильмы, которая включается командой падающего меню Вид/Видеофильмы. Если вы подключены к сети Интернет, можете присвоить нескольким картинкам и видеофильмам какие-нибудь адреса.
   Для того, чтобы сделать надпись или какой-нибудь простой рисунок на стене или на крыше, не вешая на полигон картинку, необходимо перейти в режим редактирования текстуры (пункт Редактировать Текстуру из контекстного меню текстуры в окне перспективы). То же самое относится к картинкам, но не к видеофильмам. Таким образом можно менять, скажем, вид кирпичной поверхности. Изменения изображения текстуры относятся только к тому полигону, на котором было вызвано контекстное меню. Для того, чтобы размазать измененную текстуру на соседние полигоны, надо включить специальный режим, нажав пиктограмму (Перенос материала ). Для присвоения материала отдельным граням есть пиктограмма (Окрасить ). Чтобы сделать материал одной из граней текущим, надо включить пиктограмму (Взять материал). Пиктограмма создает копию текущей виртуальной камеры.

   Занятие пятое. Drag&drop-сборка сцены

   Пятое, заключительное занятие поведает вам об особенностях drag&drop-сборки сцены из отдельных объектов. Немного будет сказано о детальной настройке конструктора ISB. Не исключено, что возможные дополнения и полезные советы будут в шестом, дополнительном занятии.
   Дело в том, что готовые объекты и заготовки примитивов можно перетаскивать из соответствующих категорий на полигоны в окне визуализации. В третьем занятии вы построили примитивную модель дома, пользуясь наиболее эффективными инструментами моделирования в ISB, в четвертом - вы украсили этот дом картинками и видеофильмами. В заключительном занятии вы обставите дом готовыми моделями мебели, используя технологию drag&drop-сборки сцены. Итак, загрузите опубликованный вами файл сцены, которую вы создали на двух предыдущих занятиях.
Рис. 21
Рис. 22
Рис. 23

Рис. 24

   Установите камеру так, чтобы в окне перспективы была видна большая часть пола комнаты. Активизируйте категорию объектов (команда падающего меню Вид/Объекты). Откройте в ней каталог Furniture и перетащите из категории два кресла по имени Armchair1 в окно перспективы так, как показано на рис. 21. Затем таким же образом перетащите из той же категории объект Stool2.
   А теперь самое интересное - люстра. Обратите внимание, все люстры в библиотеке объектов изображены вверх дном. Это потому, что объект, перенесенный из библиотеки, становится на указанную грань строго перпендикулярно нижней частью. Люстра даже в виртуальном пространстве прикрепляется к потолку. А потолок "смотрит вниз", а не вверх. Поэтому и люстра сохранена вверх дном. Перетащите на потолок объект Chandelier7 (люстра). Обставьте комнату примерно в соответствии с рис. 21. Очередной раз опубликуйте сцену.
   На компакт-диске в каталоге VRML помещена сцена ART1.WRL, с которой вы можете сравнить результаты вашей работы на последних трех практических занятиях. При этом для корректной загрузки образца необходимо в окне настройки категорий (рис. 23) для текстур, картинок и видеофильмов проставить путь CD-ROM-Drive:\VRML.

   Детальная настройка конструктора ISB

   Недостающие пиктограммы можно перетащить из окна Настройка панелей (команда падающего меню Сервис/Панели:, рис. 22) на любую панель, выбрав необходимую категорию. Содержимое категорий зависит от пути, заданного в окне Сервис/Настройки: (вкладка Галереи, рис. 23). В этом же окне меняется размер иконки предварительного просмотра элемента категории, тип сортировки этих элементов и еще несколько дополнительных параметров визуализации иконок предварительного просмотра элементов категорий. Для того, чтобы сохранить текущие настройки как новый тип Компоновки рабочего экрана используется операция падающего меню Компоновка/Список:/Добавить, вызывающая диалоговое окно для работы с возможным набором различных Компоновок (рис. 24).
   В заключение хотелось бы подвести итоги. На практических занятиях вы освоили основные методы моделирования, сборки и украшения VRML-сцен, научились компактно организовывать работу с русскоязычной версией редактора Internet3D Space Builder 3.0 и узнали некоторые хитрости этого виртуального конструктора. Теперь вы можете создавать свои VRML-миры умеренной сложности. А мне остается пожелать вам успехов в дальнейшей работе с новыми виртуальными конструкторами.

Copyright © 1997—2005 Дмитрий Гиглавый | E-mail: giglavy@rambler.ru