2.3. Создание библиотеки трехмерного вида объектов
Объект местности может иметь на трехмерной модели типовой или
детальный вид. Типовой вид может назначаться для объектов одного кода и локализации. Описание типового вида хранится в шаблоне. Объект, созданный на основе шаблона, имеет одинаковое изображение для каждого отрезка метрики. Примерами таких объектов являются ограждения, дороги, растительность, а также другие объекты простой формы (строения).
Шаблоном трехмерного вида объекта является набор различных частей
трехмерного изображения, рисуемых по контуру объекта на заданной высоте.
Шаблон может состоять из следующих частей:
знак;
знак по линии;
знак по площади;
знак по точкам;
вертикальная полоса;
горизонтальная плоскость;
поверхность по рельефу;
горизонтальная полоса;
крыша над плоскостью;
скат;
цилиндр, лежащий над плоскостью;
плоская линия.
Высота части над поверхностью может быть задана в метрах или взята из
семантики объекта. Кроме того, можно указать взаимное расположение
частей по высоте. Части набираются снизу-вверх. Каждая часть содержит в себе описание. В описании содержатся сведения о том, как нужно отображать поверхность части: цвет, текстура поверхности и способ ее повторения, материал. При выборе текстуры можно задать прозрачность черного фона (например, для создания деревьев). Текстура может быть растянута по поверхности или повторяться кратно заданному размеру. Количество повторений может быть взято из семантики объекта карты (например, для панельного дома число текстур по вертикали может быть взято из семантики количество этажей, а по горизонтали текстуры повторятся через 14 метров).
Можно выбрать текстуру из семантики объекта. Значением соответствующей характеристики должно быть имя файла с расширением BMP. Например, шаблон трехмерного вида панельного дома состоит из пяти частей:
цоколь отображается вертикальной полосой, в описании только цвет;
основные этажи - вертикальная полоса, в описании повторяемая текстура,
располагается над цоколем;
технический этаж отображается вертикальной полосой, в описании только цвет;
верхнее перекрытие отображается горизонтальной полосой, в описании
только цвет;
крыша отображается частью «крыша» над плоскостью, в описании может
быть цвет, текстура, материал или материал с текстурой.
Шаблон такого типа может подойти к трехэтажному и девятиэтажному дому. Если задана семантика «Высота конька», то будет рисоваться двускатная крыша.
Шаблоны точечных и векторных объектов состоят из одной части – знака.
Знаки соответствующие векторным объектам расположены вдоль
метрики.
Точечные знаки изображаются без поворота. Общий размер знака может быть задан при его создании, а может быть задан в семантике объекта. В таком случае необходимо задать способ масштабирования знака. Ширина и длина знака могут меняться пропорционально изменению высоты, а могут и оставаться неизменными. Для столбов эстакад или шахт люка ширина и высота знака не меняются в зависимости от высоты (глубины).
Трехмерный знак состоит из узлов, произвольно расположенных относительно общего центра. Каждый узел имеет свое описание.
Поддерживаются следующие виды узлов (рис. 2.8):
короб;
сфера;
цилиндр горизонтальный;
цилиндр вертикальный;
изображение объемное;
плоскость вертикальная;
плоскость горизонтальная;
призма треугольная горизонтальная.
При создании или редактировании знака пользователь может менять размер и описание узлов, добавлять новые узлы, задавать координаты плоскостей. Каждый узел, может быть, подвинут или повернут относительно центра знака.
Рис. 2.8. Типовые узлы знака
Рис. 2.9. Формирование узла «Изображение объемное»
Наиболее часто используются простой вид узла, состоящий из двух пересекающихся вертикальных плоскостей. Если задать для этого узла описание с прозрачными частями, то из двух плоских картинок получается объемное изображение (рис. 2.9). Так можно создать трехмерный вид дерева, столба, светофора и т.д. Пример знака, состоящего из шести плоскостей показан на (рис. 2.10 – 2.11).
Рис. 2.10. Пример знака с использованием произвольных плоскостей
Рис. 2.11. Пример знака, состоящего из шести плоскостей
Четыре плоскости описывают листья, две плоскости – две пары стеблей.
Параметры выделенной плоскости показаны на (рис. 2.12).
Рис. 2.12. Пример описания наклонной плоскости знака
Рис. 2.13. Узлы знака и знак, загружаемые из VRML
Знак, как шаблон, используемый в создании трехмерного вида точечных,
векторных, линейных и площадных объектов, может быть не только создан
с помощью «Редактора трехмерных знаков», но и импортирован из файла VRML-формата, созданного с использованием сторонних программ
(см. рис 2.13).
При импорте загружаются следующие типы узлов: параллелепипед, сфера, цилиндр, конус, поверхность, заданная массивом координат (FaseSet), массив точек (PointSet), массив линий (LineSet), сетка высот (Grid), экструзия (Extrusion).
Знак может быть загружен файл VRML-формата версии не ниже 2.0.
Также для создания трёхмерного вида точечного объекта может быть использован импорт примитивов из файла COLLADA(dae). Этот формат разработан для обмена данными между 3D приложениями. Формат COLLADA использует открытый стандарт XML. Его поддерживают такие программы как 3DS MAX, Google SketchUp, Blender и многие другие.
Для загрузки данных выберите в классификаторе объект - 3D - редактирование 3D вида - Шаблоны - (Одноточечная или двухточечная метрика) - Свойства - Параметры - DAE.
При импорте из формата COLLADA загружаются следующие типы узлов: поверхность, заданная массивом координат (FaseSet), изображение объемное, плоскость вертикальная, плоскость горизонтальная, массив линий (LineSet)
В знак может быть загружены данные из формата COLLADA версии не ниже 1.5 (рис 2.14).
Редактирование знаков, загружаемых из VRML и COLLADA, ограничено следующими функциями: изменение размеров знака, изменение привязки знака относительно метрики объекта, изменение положения и размеров отдельных узлов, изменение оформления отдельных узлов.
Размер загружаемых файлов не должен превышать 5 Мб.
Рис. 2.14. Пример знака, загруженного из COLLADA -формата
Рис. 2.15. Пример описания шаблона объектов
Шаблоны линейных объектов могут состоять из следующих частей
(рис. 2.15): вертикальная полоса, горизонтальная полоса, плоская линия, знак по линии, знак по точкам, линия с заданным сечением.
Вертикальная полоса рисуется вдоль метрики. Высота полосы может быть постоянной либо браться из указанной семантики объекта карты.
Если пользователь задал семантику, а ее для объекта карты нет, берется
высота, установленная при заполнении параметров (рис. 2.16). Полоса может быть смещена от метрики вверх или вниз. Величина смещения может быть постоянная, взята из семантики объекта либо полоса может располагаться над другой частью изображения.
Например, у многоэтажного дома высота полосы зависит от семантики количество этажей, и равняется значению этой семантики (для рисуемого объекта) умноженному на заданную высоту этажа (3м). Крыша должна
лежать над этой полосой, независимо от ее высоты. Поэтому смещение для нее нужно задать относительное. Вертикальная полоса может быть расположена по метрике следующим образом: по рельефу, верх горизонтален и без учета рельефа. Если задать для верха полосы расположение горизонтальное верх будет отстоять от максимальной точки метрики на заданную величину, а низ полосы будет идти по метрике. Шаблоны трехмерных изображений
зданий, заборов в основном состоят из таких частей. Горизонтальная полоса рисуется вдоль метрики (метрика по центру полосы). Ширина ее может быть постоянна или взята из семантики. Полоса может быть смещена от метрики вверх или вниз. Используется для трехмерного изображения дорог. Линия с заданным сечением рисуется следующим образом: пользователь задает сечение определенного вида, которое устанавливается перпендикулярно метрике
линейного объекта и «вытягивается» по метрике как по осевой линии.
Для площадных объектов используются все виды шаблонов линейных объектов и дополнительно шаблоны для изображения площадей: горизонтальная плоскость, поверхность по рельефу, крыша над плоскостью,
цилиндр, лежащий над плоскостью, склон над плоскостью, знак по площади.
Горизонтальная плоскость и поверхность по рельефу используются для
заполнения площадей (площадные дороги, крыши, газоны). Горизонтальная
плоскость рисуется в виде площади, ограниченной метрикой объекта на
заданной высоте.
Рис. 2.16. Пример описания шаблона объектов
Плоскость может быть смещена от метрики вверх или вниз. Величина смещения может быть постоянная, взята из семантики объекта либо плоскость может располагаться над другой частью изображения. Поверхность по рельефу в дополнение к этим свойствам точно отражает высотный рельеф поверхности. Крыша над плоскостью рисует треугольную призму над метрикой, верх крыши располагается по центру метрики, если. Высота крыши
может быть постоянной либо браться из указанной семантики объекта карты. При нулевой высоте не рисуется. Высота смещения крыши над поверхностью может быть постоянная, взята из семантики объекта либо крыша может
располагаться над другой частью изображения.
Крыша над плоскостью может быть расположена по метрике следующим образом: по рельефу; верх горизонтален, без учета рельефа. Цилиндр, лежащий над плоскостью рисует цилиндр, расположенный вдоль наибольшего отрезка метрики объекта или поперек его, в зависимости от параметров. Если метрика объекта более 5 точек сначала будет построен окаймляющий прямоугольник. Цилиндр может быть смещен от метрики. Вверх или вниз. Можно отображать части цилиндра – верх, низ или стены, а можно отображать
цилиндр полностью. Склон используется для изображения крыш сложной конфигурации, лестниц и других подобных объектов. Представляет собой трапецию или треугольник. Рисуется только по первым трем или четырем точкам метрики. Две первые точки – основание, остальные верх. Высота ската задается в параметрах, но может быть взята и из семантики. Склон может быть смещен от метрики, вверх или вниз, а может располагаться над другой
частью изображения. Любая из частей склона (боковые стороны и верх), может отсутствовать. Для задания разных описаний, например, у верха и у всех или одной из боковых частей необходимо задать два склона, одинаковых по геометрии и разных по описаниям. Знак по площади изображает заданный знак внутри метрики на заданном расстоянии по длине и ширине. Оба параметра могут быть постоянными либо браться из указанной семантики объекта карты. Используется для изображения площадной растительности.
Создание сложных видов объектов с помощью шаблонов рассмотренное в предыдущих пунктах построение трехмерного вида объектов с помощью шаблонов дает возможность изменения содержания вида объекта по высотной характеристике, но каждая отдельная часть шаблона строится по всей метрике. При наличии у объекта разных объемных частей, привязанных к отдельным точкам и отрезкам метрики, возникает необходимость в применении нескольких шаблонов к одному трехмерному виду объекта или формировании модели объекта.
Рассмотрим построение сложного вида объекта на примере, показанном на (рис. 2.17). Имеется здание, содержащее в своем виде неповторяющиеся архитектурные элементы. Для каждого из них необходимо создать свой шаблон (рис. 2.18).
Рис. 2.17. Пример трехмерного изображения объекта сложного вида
Рис. 2.18. Список шаблонов для сложного трехмерного изображения
Каждый шаблон строится по отдельной метрике, поэтому для отдельных частей объекта необходимо построить свои объекты. Эти объекты строятся на специальной пользовательской карте, наложенной на основную карту.
Если метрика объектов отдельных частей или основного объекта повторяется на некоторых участках, то ее надо делать с небольшим отступом друг от друга, иначе трехмерное изображение частей будет перекрываться.
Как видно из приведенного примера, данный способ построения объектов
сложного вида не очень удобен, так как требует построения дополнительных двухмерных объектов. Рассматриваемое далее создание моделей трехмерного
вида объектов устраняет эти недостатки, позволяя делать объекты более реалистичными.
Вид объекта, созданного с помощью шаблона, является достаточно простым. На всем протяжении метрики объект выглядит одинаково. Этого вполне достаточно для многих типов объектов, таких как леса, дороги, коммуникации, ограждения, различных точечных и векторных рис. 2.19. Но для вида большинства строений важно, чтобы фасад и торец здания имели разное изображение.
Рис. 2.19. Пример двухмерной метрики для построения трехмерного
изображения сложного вида
Кроме того, существуют отдельные детали домов: подъезды, завершения лифтовых шахт, арки для проезда, башенки и т.д. Все эти детали относятся к одному объекту, имеют общую семантику и должны отображаться как единое целое.
Выше было показано, как, используя шаблоны, можно сформировать
достаточно сложное изображение, но такой способ требует создания большого количества дополнительных объектов и дублирования семантических характеристик. Более того, даже для объектов с одинаковым видом придется создавать дополнительные объекты к каждому отдельно. Для решения такой задачи предлагается строить более сложный вид объекта – модель. Самой простой моделью является набор шаблонов, для каждого из которых указано на какой части метрики (формы) модели он рисуется.
Модель трехмерного вида объекта состоит из:
формы;
вектора привязки;
подчиненных моделей.
Для каждой подчиненной модели указано положение (сдвиг, поворот и растяжение) относительно вектора привязки основной модели, форма, вектор привязки и ссылка на параметры. Параметрами подчиненных моделей могут быть другие модели или шаблоны.
Метрику модели будем называть формой. Форма отличается от метрики
конкретного объекта тем, что она трехмерная, не содержит «лишних точек» на сторонах, углы выпрямлены. В форме выделен отрезок, который будем называть вектором привязки модели. Модель может содержать несколько форм. К форме, как к каркасу, привязываются дочерние модели, каждая из которых имеет свою форму.
Моделью трехмерного вида объекта назовем набор форм метрик с привязанными к ним подчиненными моделями. Для создания модели объекта пользователю предлагается выбрать одну из заданных форм метрики (прямоугольник, Г-образная метрика и т.д.) или создать форму по метрике объекта.
Для серии домов одного вида пользователь создает, а редакторе классификатора отдельные модели – подъезд, верх шахты лифта, торец, фасад, тыльную сторону здания и т.д. Далее создается основная модель. Выбирается форма и на этой форме, укладываются подчиненные модели. Модель привязывается к конкретному объекту карты автоматически.
Конкретная форма модели указывается в семантике объекта. Если семантики у объекта нет выбирается первая форма модели. Вектор привязки модели совмещается с первыми двумя точками метрики объекта. Позднее пользователь может указать вектор привязки объекта вручную. Модели, так же, как и шаблоны, лежат в файле трехмерных изображений.
Рис. 2.20. Окно редактирования 3D-вида объекта
Шаблоны и модели вместе составляют библиотеку трехмерных изображений, не относящихся к конкретным объектам.
Чтобы объекты можно было увидеть на трехмерной карте, нужно назначить объектам двухмерной карты соответствующие им трехмерные изображения. Эти изображения могут быть взяты из стандартного набора (библиотеки) или заново созданы, как описано выше.
Для назначения объекту его трехмерного вида в редакторе классификатора выбираем редактирование 3D-вида объекта (см. рис.2.20).
В данном диалоге для объекта можно назначить три различных вида: ближнего, среднего и дальнего плана. Каждый вид объекта определяет, что на разных расстояниях от наблюдателя объект будет отображаться по-разному на трехмерной карте.
При отсутствии какого-либо из видов при отображении берется изображение, назначенное для предыдущего вида. Для каждого объекта надо сохранить назначенные изображения. В соответствии с ними объекты данного кода будут отображаться при построении трехмерной карты местности.