Официальная модификация GMDK: VOB-объекты в мире

Материал из Gothic Library Wiki
Перейти к навигацииПерейти к поиску

Объекты (Vob)[править | править код]

Что такое VOB

VOB – это виртуальный объект. Он имеет положение и ориентацию в пространстве и визуализируется согласно объекту, указанному в пункте visual. Весь мир состоит из VOB. Каждый VOB принадлежит классу, который устанавливает свойства и способности этого объекта (например: oCNPC или zCTrigger ). Более полный список будет описан ниже.

Примеры некоторых VOB:

  • Деревья и кусты
  • Звуковые и световые эффекты
  • Эффекты частиц (огонь)
  • NPC и монстры
  • Предметы инвентаря
  • Зоны тумана и звукового сопровождения
  • Кровати, вертела, лестницы и т.д.
  • Области событий и фильтры событий
    Основная работа в Spacer – это вставка и настройка Vob. Модифицирование включает в себя изменение положения объекта и его свойств в зависимости от класса VOB.

    Иерархия VOB

    Объекты в мире сохраняются в иерархии. Большинство VOB в мире будут лежать, как отдельные объекты. Однако нужно будет также вставлять некоторые VOB, которые станут дочерними по отношению к другим. Хорошим примером послужит камин, который представляет собой окруженную каменными стенами кучку пепла. В этот VOB в качестве дочернего мы вставляем VOB эффекта частиц – Огонь. Огонь, как правило, коптит и излучает свет. Поэтому мы также вставляем в качестве дочерних элементов эффект дыма и VOB освещения. В целом иерархия выглядит так:

    zCVob:FeuerstellenVob(Visual:”feuerstelle.3ds”)
    zCVob:FeuerVob(Visual:”feuer.pfx”)
    zCVobLight:LichtVob(без визуализации)
    zCVob:RouchVob(Visual:”rauch.pfx”)

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

    VOB в Spacer[править | править код]

    Диалоговое окно объекта

    Почти все операции с Vob выполняются через диалоговое окно Objects. Диалоговое окно состоит из трех вкладок:


  • CREATE Представляет собой дерево объектов, в котором необходимо выбрать класс VOB-объекта, вставляемого в мир.
  • MODIFY Свойства выделенного объекта можно изменить на вкладке Modify.
  • Третья вкладка используется для изменения BoundingBox специальных VOB-объектов (триггеры, звуки и т.д.)

    Список объектов

    В списке объектов отображаются все VOB-объекты, вставленные в мир. Также показана иерархия объектов.

    В списке указываются все элементы, включая модель уровня. Все VOB одинакового класса сортируются и сохраняются в отдельных папках. Папка называется по имени класса. Для отображения дочерних элементов иерархии объектов нажмите значок +.

    Для перехода к нужному объекту в сцене достаточно дважды щелкнуть на его названии в списке объектов. Однако эта функция работает должным образом только в Spacer версии 1.5 и выше.

    Новые вставленные VOB-объекты в списке объектов отмечены зелеными кружками, все остальные элементы отображаются с красными.

    Специальные диалоговые окна объекта

    Для некоторых VOB-классов существуют специальные диалоговые окна, которые можно активировать при помощи панели инструментов. За вызов специальных окон диалога отвечают, прежде всего, четыре кнопки с красной стрелкой в верхнем правом углу.

    - Звуковые объекты (zCVobSound)

    - Источники света (zCVobLight)

    - Специальные VOB: WayPoint, FreePoint, эффекты частиц и декали

    - Движение камеры

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

    - Не имеет особого значения

    - Триггер-события

    - Поиск и замена

    Видимые и невидимые VOB[править | править код]

    Основной параметр VOB-объектов - "Visual". Он отвечает за визуальное представление VOB-объекта. Существует несколько видов визуальных эффектов:

  • 3D поверхности
  • Эффекты частиц
  • Текстуры (Декали)

    3D поверхность

    Если в качестве visual-параметра для VOB-объекта указывается 3D-поверхность (3ds), то VOB объект представляется в виде трехмерного объекта, который описывается 3D-поверхностью. 3D-поверхность состоит из полигонов, форма которых определяется вершинами.

    Важно! Для 3D-поверхностей имеется ограничение: нормали поверхности могут иметь не больше 2048 вершин. Исключением является 3D модель уровня (zCVobLevelCompo), для которой таких ограничений нет. Разумеется, модель уровня вставляется в качестве основания, не перемещается и не вращается. Поэтому необходимо, чтобы 3D-поверхность уровня (к примеру, область с башней Ксардаса) имела правильные координаты, настроенные в 3D-редакторе.

    Сообщения в zSpy "Degenerated Polygon" (Дегенерируемые полигоны) не страшны, так как такие полигоны автоматически удаляются из VOB-сетки. Но их следует избегать создателям 3D-поверхностей. Дегенерированный полигон представляет собой многоугольник/треугольник с площадью, равной 0 (например, при коллинеарных вершинах).

    Эффекты частиц

    Эффекты частиц генерируются с помощью сценариев. Соответствующий файл расположен в папке _work\data\scripts\system\pfx. Имя PFX инстанции может быть указано в качестве значения visual, но обязательно с указанием расширения *.pfx.

    Декали

    Декали - двумерные поверхности, предназначенные для отображения двумерных структур. К таким объектам можно отнести паутину, шторы, картины на стенах и многое другое. Поверхность генерируется автоматически, а в качестве значения visual указывается имя выбранной текстуры.

    Невидимые VOB

    В дополнение к видимым VOB существует еще ряд невидимых объектов. Эти объекты отвечают за какие-то события, эффекты или явления. Источник света не заметен, его можно разглядеть только в том случае, если есть освещаемые объекты. Аналогичная ситуация с объектами звукового сопровождения. Музыкальные зоны определяют области, где будет проигрываться фоновая музыка, а зона триггера реагирует на соприкосновение с NPC. Самый распространенный невидимый объект - WayPoint, из которых складывается WayNet, по которой движутся персонажи.

    Отображение невидимых объектов в Spacer можно включить. Для этого воспользуйтесь кнопкой HelperVobs, расположенной на панели объектов - .

    3D-модели вспомогательных объектов: источников света, WayPoint, звуков и др. можно найти в папке _work\data\meshes\_intern. Модель имеет имя соответствующего VOB-класса с приставкой "invisible_".

  • invisible_zCVobSpot.3ds
  • invisible_zCVobLight.3ds
  • invisible_zCVobStartpoint.3ds
  • invisible_zCWaypoint.3ds
  • invisible_zCVobSound.3ds