Описание файлов формата .CVF
CVF-файл служит для описания механизма анимации органов управления в кабине локомотива. Он представляет собой Unicode-текстовый файл и должен сохраняться в папке cabview локомотива. Для того, чтобы в игре локомотив использовал данный файл на него делается ссылка из ENG-файла такого вида:
CabView ( "2TE10L.CVF" )
Рассмотрим структуру CVF-файла. Заголовок начинается строкой
SIMISA@@@@@@@@@@JINX0h0t______
Она нужна для идентификации типа файла в игровом движке.
Далее идет описание трех основных видов из кабины в следующем порядке: вперед, налево и направо:
Tr_CabViewFile ( CabViewType ( 2 ) CabViewFile ( "2TE10L-front.ace" ) CabViewWindow ( 0 0 640 240 ) CabViewWindowFile ( "" ) Position ( 1 3.6 6.5 ) Direction ( 12 0 0 ) CabViewFile ( "2TE10L-left.ace" ) CabViewWindow ( 0 0 640 350 ) CabViewWindowFile ( "" ) Position ( -0.7 3.6 6.5 ) Direction ( 12 -10 0 ) CabViewFile ( "2TE10L-right.ace" ) CabViewWindow ( 0 0 640 480 ) CabViewWindowFile ( "" ) Position ( 1 3.6 6.5 ) Direction ( 12 60 0 ) EngineData ( 2Te10M )
Где: CabViewFile - ссылка на АСЕ-файл текстуры вида из кабины. Допускается размер до 1024х768 пикселов.
CabViewWindow ( 0 0 640 480 ) - размер области отрисовки внешнего мира за кабиной (для ускорения работы на медленных машинах эта область должна точно соответствовать максимальному размеру прозрачной части АСЕ-текстуры вида)
CabViewWindowFile ( "" ) - ссылка на файл, задающий маску области отрисовки (часто просто не используется)
Position ( 1 3.6 6.5 ) - позиция камеры вида из кабины отностиельно pivot-point локомотива, а именно смещение в метрах вправо, вверх и вперед (отрицательные значения соответственно задают смещение влево, вниз и назад)
Direction ( 12 60 0 ) - смещение направления прицела камеры от направления горизонтально вперед, задается в градусах соответственно вправо по часовой, вниз по часовой и вращение оси камеры.
Далее собственно начинается описание органов управления. Многие из них имеют схожие параметры, поэтому объясню их подробно:
Position ( 372 380 1 15 )
Задает позицию установки АСЕ-текстуры органа управления в координатах поля 640х480. Все текстуры также должны быть сделаны исходя из разрешения 640х480.
Graphic ( "load.ace" )
Ссылка на АСЕ-файл текстуры органа управления
Style ( NEEDLE )
Стиль, может принимать одно из значений:
NONE - не имеет стиля
NEEDLE - стрелка
POINTER - указатель
NOT_SPRUNG - невозвращаемый, в движке игры не реализован
SPRUNG - возвращаемый, в движке игры не реализован
ONOFF - переключатель ВКЛ/ВЫКЛ
ScaleRange ( -10 10 )
Предельные значения отображаемой характеристики локомотива
ScalePos ( 310 50 )
Для стрелок - начальный и конечный угол отклонения, указывается в градусах по часовой стрелке. Направление вверх считается нулевым.
Units ( AMPS )
Единицы измерения отображаемой величины. В указанных здесь единицах также отображается информация, вызываемая по клавише F5 в игре.
Pivot ( 18 )
Для стрелок - задает смещение оси вращения стрелки от верхнего края
MouseControl ( 0 )
Управляемость мышкой. Если данный параметр равен 1, орган управления можно перемещать мышкой.
DirIncrease ( 0 )
Направление движения при управлении мышкой.
NumFrames ( 5 5 1 )
Для многокадровых текстур задает общее количество фреймов на текстуре, количество столбцов и колонок фреймов.
NumPositions ( 15 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 )
Для многокадровых текстур указывается общее количество используемых кадров и порядок их отображения при анимации органа управления.
NumValues ( 15 0 0.124 0.19 0.24 0.32 0.374 0.42 0.49 0.624 0.69 0.74 0.81 0.874 0.89 0.94 )
Аналогично предыдущему - указывает значения изменяемого параметра для каждого кадра анимации органа управления
Собственно перечисление органов начинается строкой с указанием точного количества органов управления. Если указано меньшее значение, чем перечислено, будут отражаться только такое количество органов, какое указано. Если число превышает реальную сумму описаний - возникнет ошибка создания вида из кабины в игре.
CabViewControls ( 26
Более подробно остановимся на описании всех используемых типов органов управления. Они задается строкой
Type ( LOAD_METER DIAL )
Используются следующие типы:
LOAD_METER, AMMETER
Нагрузка на обмотках тяговых электродвигателей локомотива. Для российских локомотивов обычно эта величина измеряется в Амперах - AMPS
DIRECTION
Переключатель реверса (направления движения локомотива)
SPEEDOMETER
Указатель скорости следования локомотива
FRONT_HLIGHT
Переключатель лобовых прожекторов локомотива. Имеет состояния ВЫКЛ-ТУСКЛО-ЯРКО
SANDING
Переключатель подачи песка под колесные пары локомотива
PENALTY_APP
Индикатор срабатывания экстренного торможения
WHEELSLIP
Индикатор боксования
ALERTER_DISPLAY
Индикатор системы бдительности. При активации требует ответной реакции машиниста, в противном случае происходит принудительный останов локомотива.
TRAIN_BRAKE
Поездной тормоз. При его задействовании срабатывает вся тормозная система состава.
ENGINE_BRAKE
Локомотивный тормоз. При его задействовании используется тормозная система локомотива.
THROTTLE
Контроллер машиниста
ASPECT_DISPLAY
Локомотивный светофор, дублирующий показания путевых сигналов.
MAIN_RES
Манометр давления в напорной или питательной магистрали локомотива.
BRAKE_PIPE
Манометр давления в тормозной магистрали
EQ_RES
Манометр давления в уравнительном резервуаре
BRAKE_CYL
Манометр давления в тормозных цилиндрах локомотива
RESET
Рукоятка бдительности машиниста.
SPEEDLIM_DISPLAY
Скорость проследования следующего светофора.
PANTO_DISPLAY
Индикатор положения токоприемника электровоза.
PANTOGRAPH
Переключатель управления токоприемником.
DYNAMIC_BRAKE_DISPLAY
Индикатор работы динамического тормоза локомотива
DYNAMIC_BRAKE
Ручка управления работой динамического тормоза локомотива.
BELL, HORN
Активаторы звуковых сигналов локомотива
LINE_VOLTAGE
Вольтметр напряжения в контактной сети
OVERSPEED
Индикатор превышения допустимой скорости
SIGNAL_SPEED
Ограничение скорости по сигналу
Второй параметр строки Type ( LOAD_METER DIAL ) - задает характеристику описываемого органа управления, он может принимать значения:
DIAL
стрелочный указатель
MULTI_STATE_DISPLAY
индикатор нескольких состояний
LEVER
рычаг управления
TRI_STATE
трехпозиционный переключатель
TWO_STATE
двухпозиционный переключатель
CAB_SIGNAL_DISPLAY
локомотивный светофор (используется только для описания устройств АЛСН)
При этом с указания перечисленной характеристики и начинается блок описания органа управления, например:
... Dial ( Type ( LINE_VOLTAGE DIAL ) ...
Для более детального понимания работы всех перечисленных органов управления можно в качестве примера рассмотреть любой из готовых CVF-файлов локомотивов.
Далее приводятся типовые либо уникальные примеры описания разных органов управления:
Локомотивный светофор (АЛСН)
CabSignalDisplay ( Type ( ASPECT_DISPLAY CAB_SIGNAL_DISPLAY ) Position ( 45 56 45 87 ) Graphic ( "alsn.ace" ) )
Анимация АЛСН всегда делается в виде восьми кадров при четырех колонках в две строчки, причем порядок следования сигналов такой (приведенная последовательность справедлива для российской локомотивной сигнализации):
1 2 3 4 5 6 7 8 1 - белый 2 - красно/желтый 3 - белый 4 - желтый 5 - желтый 6 - желтый 7 - зеленый 8 - зеленый
Киловольтметр напряжения контактной сети
Dial ( Type ( LINE_VOLTAGE DIAL ) Position ( 309 272 2 23 ) Graphic ( "arrow.ace" ) Style ( NEEDLE ) ScaleRange ( 0 30 ) ScalePos ( 260 100 ) Units ( KILOVOLTS ) Pivot ( 20 ) DirIncrease ( 0 ) )
Это стрелка, которая отклоняясь от 260 (-100) до +100 градусов показывает значения напряжения контактной сети в диапазоне от 0 до 30 киловольт. При длине в 23 пиксела, стрелка поворачивается вокруг 20-го пиксела.
Переключатель поднятия токоприемника
TwoState ( Type ( PANTOGRAPH TWO_STATE ) Position ( 362 402 128 17 ) Graphic ( "pantoswitch.ace" ) NumFrames ( 2 1 2 ) Style ( ONOFF ) MouseControl ( 1 ) )
Двухпозиционный переключатель с возможностью управления мышью реализован на текстуре из двух кадров в одну колонку в две строчки.
Локомотивный тормоз
Lever ( Type ( ENGINE_BRAKE LEVER ) Position ( 534 222 106 75 ) Graphic ("locbrake.ace" ) Style ( NOT_SPRUNG ) MouseControl ( 1 ) NumFrames ( 6 2 3 ) NumPositions ( 5 0 1 2 3 5 ) NumValues ( 5 0 0.15 0.3 0.525 0.76 ) Orientation ( 0 ) DirIncrease ( 1 ) ScaleRange ( 0 0.75 ))
Рукоятка локомотивного тормоза с возможностью управления мышью нарисована на текстуре из шести кадров в две колонки по три строки, в анимации используются кадры с 0-го по 5-й (исключая 4-й), тормозная сила меняется ступенчато от 0 до 0,75. Необходимо следить, чтобы значения в строке NumValues точно совпадали со значениями из .ENG файла локомотива, иначе анимация будет неправильной.
При подготовке документа использован личный опыт создания кабин для Microsoft TrainSimulator™
При поддержке и тесном участии всех членов Российской команды разработчиков http://www.trainsim.ru/
С уважением, Цельмер Евгений, больше известный как Joden © Август 2004