Модернизация формата маршрутов - обсуждаем подходы

Путь, СЦБ, сигнализация и всё что с ними связано
Егорыч
Сообщения: 3
Зарегистрирован: 30 апр 2020, 14:18

Re: Модернизация формата маршрутов - обсуждаем подходы

Сообщение Егорыч » 01 май 2020, 11:54

Здравствуйте, не знаю насколько будет актуально, но все же оставлю некоторое свое видение реализации редактора.
[spoiler]На мой взгляд нет смысла перетаскивать маршруты из другой платформы. На то есть несколько причин:

1) Вы позиционируете свой продукт как более качественный, в этом случае вам нужно декларировать и развивать свой стандарт качества и функционала, а не адаптироваться под стандарты другой платформы.
2) Зачем пользователю приходить к вам и использовать вашу платформу, если те же самые маршруты такого же качества уже есть и работают на другой платформе, для которой они изначально создавались? Тем более что ваш проект в стадии разработки и можно изначально не делать двойную работу и создавать свой редактор с принципиально другим функционалом.
3) Если вы заявляете, что это новый качественный продукт, стоит "отстроиться" от других платформ, в этом случае использование любого (готового) контента с другой платформы это плохая идея (упоминания и отсылки идея не лучше). Также на мой взгляд не стоит делать совместимый контент с другой платформой: хотите ПС, маршруты и функционал RRS - используйте RRS.[/spoiler]

Ключевое - в редакторе не обязательно делать полноценную 3д визуализацию объектов, для каждой модели достаточно создать картинку-превью. Т.е. пути и провода КС рисуются как линии (каждые в своем слое), светофоры, опоры КС и пр. ставятся как точки на/рядом с осью пути, объекты типа зданий для редактора имеют специальную суперлоуполи модель, которая повторяет только ключевую геометрию и размеры(без текстур), условную "лицевую" сторону таких объектов можно как-то выделить на модели.. Все объекты группируются по слоям. Профиль и основные текстуры земли - данные Transdem, координаты из Transdem также должны сохраняться в файлах маршрута с шагом в 0,5 - 1 км. Нужны базовые инструменты кистей для изменения текстур местности. Все действия по сборке сложных повторяющихся объектов (типа КС) лучше максимально автоматизировать. Для каждого слоя есть свои библиотеки моделей и текстур, чтобы например 10000 одинаковых объектов на маршруте имели адрес одной общей модели с лодами и одной (или нескольких) текстуры. Дополнительно есть режим 3д превью (как это будет выглядеть в симуляторе), в котором можно периодически проверять всё ли верно строится.

1) Слой пути - где строится путевое развитие, ставятся пикеты, км, мосты, тоннели, насыпи, выемки и пр. Путевое развитие делается по принципу векторной графики (грубо говоря как кривые Безье в блендер), т.е. каждый путь это просто нитка/линия в 3-х мерном пространстве, основа этого 3-х мерного пространства это данные по рельефу местности из Transdem и эти высоты являются 0 точкой по оси Z в редакторе, от этой точки идет отсчёт высоты пути над поверхностью земли. Координаты местности также берутся из Transdem, это позволяет системе понять ориентацию по сторонам света, эти координаты влияют на траекторию движения солнца.
[spoiler]**В дальнейшем, если будет возможность у симулятора брать данные из сети, можно будет брать данные реальной погоды (температура, влажность, сила и скорость ветра (если в дальнейшем будет прорабатываться аэродинамика), осадки по географическим координатам (отключаемая опция, вдруг пользователь любит солнце)) из интернета и применять их при запуске симулятора и синхронизировать в процессе. [/spoiler]
В этот слой можно загрузить бейсмапы, и по бейсмапу линиями рисовать нужные пути (если стоковые текстуры transdem плохого качества). В редакторе мы не видим саму модель пути, видим только линию-вектор.
Модель пути привязывается к вектору/линии (вектор является осью пути) при конвертации маршрута из редактора в итоговый файл маршрута. В редакторе мы можем посмотреть только превью (2д картинку), чтобы можно было выбрать перекраску пути (либо дополнительно есть режим 3д превью (как это будет выглядеть в симуляторе), в котором можно периодически проверять всё ли верно строится).
[spoiler]Всего на мой взгляд нужно несколько основныхмоделей пути (под 2-3 типа рельса на разный тип линий от 1 до 4 класса, на бетоне, на дереве, смешанный), далее уже делать их "перекраски". Мое мнение нет смысла делать шпалы объемными, эффективнее может быть предусмотреть работу граф. движка с картами нормалей и подобными эффектами и материалами. В этом случае при появлении источников света скорость обработки сцены может быть выше (но это не точно).
Способ визуализации креплений на мой взгляд целесообразно сделать как у рельс TSM в Trainz (2д болты с 2-х битной альфой и эффектами объема).
Для текстур путей создается отдельная библиотека, на которую ссылаются модели (подобные библиотеки работают в ТРС, концепция оттуда), в этом случае чтобы добавить новую перекраску путей, нужно будет закинуть текстуру пути и текстурные лоды в библиотеку и прописать новую перекраску в библиотеке. На текстурных лодах эффекты объема можно не применять. Отдельная текстура (или текстуры - более ржавые/менее ржавые) у "тела" рельса (16х16 или 32х32) и у головки рельса (с накатом и без). У головок рельса также эффект объема, блеска и отражения. Эти текстуры также лежат в библиотеке текстур, при необходимости можно добавлять новые текстуры наката. В этом случае внешней вид каждой модели пути можно комбинировать (если на каждую модель есть 5 перекрасок, и по 2 варианта текстур наката и "тела" рельса, то в результате на каждую модель можно скомбинировать 20 вариантов). Т.е. при настройке пути сначала выбирается основная модель, в зависимости от назначения пути и категории линии, дальше выбирается перекраска текстуры балласта, далее рельса и наката головки рельса.
[/spoiler]
1.1 Насыпи и выемки делаются в настройках пути, есть шаблоны согласно ГОСТ (могу ошибаться, но в литературе встречал), т.е. есть возможность выбрать ширину основания, угол откоса и т.д. Профиль земляного полотна можно делать как отдельно для одного пути, так и для группы путей. По координатам высот этой насыпи трансформируется и рельеф (т.е. когда мы применяем насыпь к пути, основной рельеф в этом месте принимает ее форму). В этом случае верхняя точка рельефа - это основание шпалы (при создании модели можно ставить основание шпалы в 0 по Z).

1.2 В любое место на линии пути можно добавить новую точку, по точкам настраиваются уклоны. Уклоны можно задавать как каждому пути индивидуально, так и группе путей. Можно предусмотреть опцию "скопировать из предыдущего". Либо дополнительно сделать отдельное окно, куда можно вносить данные уклонов, и далее пути автоматически будут использовать эти заранее подготовленные данные. Это можем ускорить разработку маршрута.
Также для укладки путей можно предусмотреть линейку-шаблон межосевых расстояний, в этом случае соседний путь при укладке "привязывается" к соответствующему расстоянию на линейке. Можно предусмотреть настройку расстояния вручную с шагом 0,1 м. Несколько линий можно сгруппировать в одну (от изостыка до изостыка), что также впоследствии можно использовать для настройки "маршрутизации" и сигнализации. Также имея векторную отрисовку путей, можно выгрузить ее в формат рисунка (впоследствии с номерами стрелок и светофорами) и отдельно преобразовать в шаблон пульта ДСП (но то отдельная тема конечно). Для каждого пути и группы путей можно задать частоту кодирования или отсутствие кода.

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

1.4 Стрелочные переводы на мой взгляд лучше делать процедурные (объектные стрелки не будут точно повторять профиль земляного полотна), при соединении одной линии пути с другой вызывать окно настроек стрелочного перевода, где можно выбрать марку крестовины, тип перевода (ручной/электрический/правый/левый). Предельный столбик ставится автоматически в зависимости от параметров стрелки. Можно предусмотреть возможность устанавливать съезд целиком и выбирать его параметры в настройках (в зависимости от назначения пути и категории линии) и эти настройки сохранять. Это опять же ускорит процесс создания маршрута.

1.5 В этом слое также выставляются границы станции, если это станция стыкования нужно поставить галочку в меню, таким образом в слое КС для этой станции будут доступны нужные элементы КС, используемые на станции стыкования.

1.6 Линейка и возможность измерения углов мастхев.

[spoiler]*опционально (с заделом на будущее), можно сохранять в настройках полезную длину ПО путей, указывать грузовые фронты, указывать диапазон номеров поездов, которые могут приниматься на эти пути. Это может пригодиться впоследствии для такой штуки как автодиспетчер. В этом случае, при необходимости например поставить грузовой под обгон, автодиспетчер соотносит длину поезда с полезной длиной ПО пути и выбирает путь, на котором поезд будет поставлен под обгон. Также полезной опцией впоследствии может оказаться расчет времени занятия пути на технологическую операцию (прием/отправление/маневры), расчет коэффициента съема грузовых поездов пассажирскими и т.д. В случае если у разработчика не будет служебки по маршруту, эти расчеты могут помочь в составлении ГДП. (понятно что это очень объемная фича, озвучил просто пару тезисов).[/spoiler]

2) Слой КС - в этом слое работать с путевым развитием уже нельзя, возможна только установка опор контактной сети и развеска КП. Изначально в настройках нужно задать тип электрификации (можно предусмотреть галочку для станций стыкования, если такие есть на участке). Для ускорения развески перегонов и парков станций можно настраивать последовательность установки опор/подвесов на жестких и гибких поперечинах с нужными типами консолей (чтобы соблюдалось нужное отклонение КП от оси пути). Расстояние опоры от оси пути можно выбирать из списка в настройках. Все опоры устанавливаются с привязкой к оси пути. При необходимости можно заменить опору вручную. При установке воздушной стрелки, токораздела, можно в опциях консоли выбрать от какой точки тянуть провод, а у соседней выбрать к какой точке присоединить. В местах крепления КС под искусственными сооружениями можно изменять высоту КП, к этому можно привязать высоту подъема ТП.
Для установки гибкой/жесткой поперечины можно выделить группу путей и в настройках задать расстояние между поперечинами, при этом в месте пересечения поперечины с линией пути появляется точка/ки для установки подвеса. Можно ставить поперечины вручную, поставив точку начала на первом пути и точку окончания на последнем, в этом случае угол пересечения поперечиной линий путей можно задать вручную. Можно предусмотреть инструментарий для секционирования КС на станции, из которого впоследствии можно сформировать пульт энергодиспетчера (вот тут не знаю как это правильно называется).
При установке опоры КС вручную в настройках можно задать высоту опоры, тип консоли, тип изолятора, отклонение от оси пути, высоту КП от головки рельса, расстояние от оси пути, кронштейны ЛЭП. Эти настройки можно сохранить и устанавливать впоследствии аналогичные типы опор из списка. Также в настройках можно менять перекраску консоли (допустим старая/новая), опоры.
Для КС своя библиотека текстур и моделей, т.е. каждая опора КС имеет точки привязки, которым "крепятся" другие элементы. В этом случае, к примеру, 1000 опор КС на участке имеют всего одну общую модель, которая лежит в библиотеке и лоды этой модели, одну текстуру и лоды этой текстуры и 20-30 моделей консолей, имеющих одну текстуру. Добавляя новую текстуру в библиотеку, можно оперативно перекрасить опоры КС (и не только, например если делается версия маршрута в ретроспективе, для этого можно сделать опцию при выборе текстуры самой опоры "применить для всех").
*таким образом antikiller_bm реализовал КС в ТРС.
Также в библиотеке текстур есть одна текстура на все типы проводов.
В месте пересечения проводов КС также создается точка, на которой можно установить "синхронизатор" (не знаю, как она правильно называется - в общем штука которая синхронизирует подъем проводов при проходе ПС).

2.1 Можно предусмотреть секционирования КС на раздельных пунктах с возможностью конвертации электросхемы в пульт "энергодиспетчера".

3) Слой средств сигнализации (и связи).
Светофор ставится как точка на ось пути, в настройках можно задать расстояние от оси пути и собрать светофор как конструктор. Пример со входным:
[spoiler]мачта - бетон или сталь (2 модели);
верхняя головка - 2 или 3 линзы, старого типа/нового типа (4 модели);
нижняя головка - 2 или 3 линзы, старого типа/нового типа (4 модели);
пригласительная головка - старая/новая (2 модели);
зеленая полоса - старая/новая (2 модели);
МУ - \, /, -, |, цифры от 1-9, от 9 до 19, от 9 до 99, литеры (5 моделей);
знак - "впереди короткий БУ" (1 модель);
знак - "короткий БУ" (1 модель);
обратная пригласительная головка - 1 модель.
(опционально - знак Т условно разрешающий);
набор литер и цифр для обозначения светофора.
Также в настройках можно задать тип блокировки:
АБ 3зн;
АБ 4 зн;
ПАБ,
можно "заглушать" ненужные линзы, поставить линзы любого цвета в зависимости от потребности - т.е. настроить любой розжиг, поворачивать головки, поворачивать крепления головок. Все компоненты собираются на точки привязки, у светофоров своя библиотека моделей, текстур и линз.
Многие из моделей выше общие для всех светофоров. Это так же реализовано в ТРС (Tram_) в системе сигнализации sU.[/spoiler]

3.1 В этом слое собираются РЦ и настраивается розжиг светофоров, т.е. линзы светофора "поключаются" по заданной логике к РЦ.

3.2 В этом слое указываются ограничения скорости, ставятся сигнальные знаки.

4) Слой Объекты - каждый объект имеет отдельную суперлоуполи модель для редактора без текстур и превью-картинку, чтобы можно было посмотреть как выглядит объект. Объекты можно вращать/поднимать/опускать и блокировать действия с этим объектом.

4.1 Платформы - платформы привязываются к оси пути, повторяя его геометрию. В настройках можно задать ширину, "перекраску", высокую/низкую платформу, длину. Если имеем например вокзал с множеством платформ индивидуальной геометрии - он ставится как объект, при этом у каждой платформы есть точка привязки пути (класса пути).

4.2 Автодороги, мосты, путепроводы могут ставиться как статичные объекты либо "рисоваться" линиями, в месте пересечения линии дороги и линии рельс ставятся необходимые для создания переезда объекты (их также можно собирать в настройках).

4.3 Освещение, звуки окружения, растительность также устанавливается в этом слое.

В целом что-то из этого не совсем по редактору, но может что-то пригодится.

Аватара пользователя
Ромыч РЖДУЗ
Модератор
Сообщения: 198
Зарегистрирован: 13 авг 2019, 19:06
Город: Москва, Зеленоград
Настоящее имя: Роман
Контактная информация:

Re: Модернизация формата маршрутов - обсуждаем подходы

Сообщение Ромыч РЖДУЗ » 01 май 2020, 12:26

Фуууууууууууу.... Егорыч, ну вы и настрочили. :D
Я до конца толком не осилил. Но!
Во первых:
Вы позиционируете свой продукт как более качественный
Где мы это говорили? Я по крайней мере, ничего такого не говорил и не припомню.
Зачем пользователю приходить к вам и использовать вашу платформу, если те же самые маршруты такого же качества уже есть и работают на другой платформе, для которой они изначально создавались?
Потому что не мало пользователей, которым осточертела дубовость ZDSimulator, но им нравится огромная база реальных маршрутов, которые за 10 лет, были построены. Вы думаете такую работу сейчас с нуля проделать заново легко?
можно изначально не делать двойную работу
Так вот именно по этой причине, что бы её не делать, мы и взяли за основу (временно) маршруты от ZDS. В чём тут двойная работа то??
Если вы заявляете, что это новый качественный продукт
Не надо вот этих вот заявлений! Где мы это заявляли??? Покажите, где я или Дмитрий, заявляли подобное?! Мы на оборот говорили, что создали новое, но при этом не позиционируем его как что-то сверх. Этим занимается секта с zdsimulator.com.ua, которые позиционируют свой симулятор как "Реалистичный". Мы же как раз, про реализм молчим. Просто показываем, что мы делаем и что можно сделать. ;)

Теперь по поводу маршрутостроения и редактора.
Всё что вы описали, в принципе схоже с технологией, которая мне знакома с симулятора MSTS и его редактора маршрутов. Сейчас в Польше создали редактор TSRE, там применяются все те технологии (ну или подобие их), что вы описали. То есть со всеми эти нюансами, я хорошо знаком, ещё с 2006 года, когда сел за редактор MSTS. Так же ландшафт, геоданные из гуглмапа и другие классные ништяки. То что описали вы, всё хорошо. У нас вопрос не в этом. У нас проблема в том, что в данный момент, в ближайший год, мы не сможем создать редактор маршрутов (ну по крайней мере, я сомневаюсь), так как основной разработчик игры один и он не в состоянии охватить целых ДВЕ глобальных темы. Вы же понимаете, что это гигантский труд?
Вот. Так что технологии, технологиями, но в данный момент, их обсуждение даже бессмысленно, так как внедрять их некому. :(
Я сам бы сейчас, с огромным удовольствием, сел бы за картостроение (как в MSTS) и заново начал строить свой любимый маршрут. Но таким редактором, мы пока не обладаем.
Но за информацию, спасибо! :)
"Строю маршрут Москва-Адлер, всё готово на 95%! Осталось освоить редактор маршрутов, а так же нужны фото, профиль, схемы, видео, текстуры вокзалов....
Чёрт! Проект закрыт, автор исчез..." :o

Ответить