Создание и настройка визуальной модели: основы основ
Непорядок в том, что до сих пор наш локомотив — дух бестелесный. Он вроде даже ездит, а внешнего облика у него нет, не говоря уже о кабине. Пришло время дать ему хотя бы внешнюю модель.
Тема разработки 3D-моделей для железнодорожных симуляторов — отдельная большая тема для разговора, и, я уверен, гораздо лучше её раскроет мой коллега Роман Бирюков (Ромыч РЖДУЗ), когда присоединится к написанию документации.
Я буду говорить только о том, каким требованиям должна удовлетворять модель с точки зрения программиста, работающего над DLL-модулем.
Для создания моделей в RRS могут быть использованы в равной степени эффективно как Autodesk 3dmax, так и уверенно набирающий обороты Blender — редактор с открытым исходным кодом. Для меня удобнее Blender, поэтому дальнейший материал я буду излагать с использованием этого редактора. В нем я сделал вот такую простейшую «тушку» нашего локомотива, без претензий на высокую художественность
Модель соответствует габариту подвижного состава колеи 1520 мм, и содержит все необходимые элементы, для тех примеров, которые я собираюсь привести.
Итак, вне зависимости от того редактора, в котором делалась модель, она должна удовлетворять следующим требованиям
- Продольная ось локомотива направлена вдоль оси Y, рабочая кабина находится на положительной половине этой оси;
- Нижние точки кругов катания колесных пар находятся на нулевом уровне;
- Ось Z располагается на равном расстоянии от осей автосцепок локомотива (секции локомотива, вагона и т.п.);
- Все детали, для которых предполагается анимация должны быть выполнены как отдельные объекты и иметь осмысленные имена на латинице, без пробелов.
Вообще, осмысленные имена стоит давать всем объектам в сцене — это золотое правило аккуратной работы. Что касается данной модели, то вот список объектов, из которых она состоит
Body — это кузов локомотива; Bogie-1, Bogie-2 — передняя и задняя тележки, а Wheel-1,…,Wheel-6 — колесные пары.
Каждый элемент, выделенный в отдельный объект может быть в дальнейшем анимирован.
Если модель удовлетворяет этим требованиям, то можно экспортировать её из 3D-редактора. Для Blender существует специальный плагин, который можно скачать тут. Плагин устанавливается стандартным для Blender способом.
Для экспорта модели переходим объектный режим, выделяем все элементы модели, и в меню File -> Export выбираем QSG Model (.osgt).
Для того, чтобы модель была найдена симулятором, в папке data/models создадим каталог с именем, например, simple-loco
и уже в этот каталог помещаем сконвертированную модель и папку с её текстурами. В нашем случает текстуры отсутствуют, поэтому в каталоге будет лежать только модель в формате OSGT
Что дальше? А дальше нам остается прописать в конфиг vehicles/simple-loco/simple-loco.xml еще один параметр
<ExtModelName>simple-loco/simple-loco.osgt</ExtModelName>
то есть указываем путь к модели относительно каталога data/models/. Запускаем симулятор
Модель успешно загрузилась, но… колеса опущены ниже уровня рельс! Почему так происходит.
Это происходит из-за несовпадения начала координат, от которого отстраивается модель в 3D-редакторе с нулевым уровнем в маршрутах, которые, как уже говорилось ранее, без изменения взяты из ZDSimulator.
Плоскость, относительно которой выполняется отсчет высот в ZDS лежит ниже уровня головок рельс, поэтому модель необходимо немного приподнять. Это можно сделать из конфига ПЕ, добавив туда параметр
<ModelShift>0.0 0.0 0.311</ModelShift>
Данный параметр задает вектор, на который необходимо сместить модель относительно начала координат в локальной системе, связанной с траекторией перемещения центра модели. Ось Y этой системы координат всегда направлена по касательной к оси пути, ось Z — вверх, а ось X — вправо. Параметр ModelShift содержит три числовых компонента, разделенных пробелами: первое число указывает смещение вдоль оси X, второе — вдоль оси Y, третье — вдоль оси Z.
Запускаем симулятор снова
Высота h = 0.311 метра подобрана экспериментально исходя из анализа геометрии моделей элементов пути, содержащихся в маршрутах.
Теперь все в порядке, но при попытке поехать мы видим другой непорядок — колесные пары локомотива не вращаются.
О том, как настраиваются анимации моделей в RRS мы поговорим в следующей главе.