Описание файлов формата .CVF

Материал из Trainsim FAQ
Перейти к: навигация, поиск

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