RWX - RenderWare script - Справка по RWX командам

Содержание.

Историческая справка
Справка по RWX командам
Разметка
Вертекс
Полигоны
Формы
Материал
Трансформация системы координат
Части тела

Историческая справка

  Историческая справка является цитированием ru.wikipedia.org/wiki/RenderWare

  Формат трёхмерной графики известный как - Текстовый RWX - (RenderWare script).

  RenderWare - игровой движок, разработанный британской компанией Criterion Games в 1996 году и развиваемый до сегодняшнего времени.

  Criterion Software Limited изначально была филиалом Canon, сейчас находится в собственности крупнейшего американского издателя и разработчика игр Electronic Arts.

  Движок RenderWare является одной из самых известных технологий в области разработки компьютерных игр и был использован в таких играх как серия Grand Theft Auto, Burnout, Tony Hawk's Pro Skater, а также используется в симуляторе жизни The Sims 3 от компании Electronic Arts.

  В RenderWare 2 появился свой собственный внутренний скриптовый язык RWX (RenderWare script). Однако в следующей версии RenderWare 3 поддержка RWX была удалена. В RenderWare 4 разработчики сфокусировалась на формате файлов с бинарной структурой. Как и в предыдущей версии, поддержка RWX снова отсутствовала.

Справка по RWX командам

  Справка по RWX командам является в основном переводом раздела "RWX Command Reference", инструкции activeworlds.com/help/aw36/

  Десятичные дроби пишутся строго через точку - ".". Например: ноль целых пять десятых - "0.5". Ноль в десятичных дробях, также можно не писать. Например: ноль целых пятьдесят две сотых - ".52".

  Единицы измерения длинны - десятки метров, декаметры. То-есть рост человека "метр-восемьдесят" будет ".18".

  Комментарии начинаются с символа #. При этом сочетание #! комментарием не является и игнорируется. Сочетание #! следует перед командами не являющимися стандартными для RWX, но используемыми в AW, например prelight, Collision, RandomUVs, Opacityfix.

  Polygon - многоугольник. Треугольник(Triangle) и четырёхугольник(quad) - частные случаи многоугольника.

  Неподдерживаемые команды
                    AddHint
                    Hints
                    Include
                    IncludeGeometry
                    RemoveHint
                    TextureDithering
                    TextureGammaCorrection
                    Trace
                    TransformJoint
  Неподдерживаемые команды игнорируются или для некоторых выдаётся сообщение об ошибке.

Разметка

  ModelBegin
                    Начало объекта. Необязательна и ничего не делает.

  ModelEnd
                    Конец объекта. Команды после этой команды не читаются.

  ClumpBegin
                    Начало куска объекта. Работает в паре с командой ClumpEnd. Куски могут быть вложенными. Объект должен состоять из одного или больше кусков.

  ClumpEnd
                    Конец куска объекта.

  ProtoBegin <name>
                    Начало прототипа. Прототип это вертексы, полигоны, материалы которые могут использоваться в объектах несколько раз как макрокоманда.

  ProtoEnd
                    Конец прототипа.

  ProtoInstance <name>
                    Использование прототипа в этом месте объекта.

  ProtoInstanceGeometry <name>
                    Использование прототипа в этом месте объекта. Но только геометрии(вертексы и полигоны), без материалов.

Вертекс

  Vertex <x> <y> <z> [uv <u> <v>] [#! prelight <red> <green> <blue>]
                    Точка - вершина многоугольника, полигона, включая треугольники и четырёхугольники.
                    <x> <y> <z> - координаты, в десятках метров.
                    [uv <u> <v>] - UV координаты текстуры.
                    [#! prelight <red> <green> <blue>] освещение объекта,
                    если используется, освещение объекта будет независимо от света мира и локального света.

Полигоны

  Triangle <v1> <v2> <v3> [Tag <tag>]
                    Треугольник - полигон на трёх вершинах - вертексах.
                    <v1> <v2> <v3> - номера вертексов в том порядке, в каком они перечислены.
                    [Tag <tag>] - таг поверхности.

  Quad <v1> <v2> <v3> <v4> [Tag <tag>]
                    Четырёхугольник - полигон на четырёх вершинах - вертексах.
                    <v1> <v2> <v3> <v4> - номера вертексов в том порядке, в каком они перечислены.
                    [Tag <tag>] - таг поверхности.

  Polygon <sides> <v1> .. <vn> [Tag <tag>]
                    Многоугольник - полигон на произвольном количестве вершин - вертексах.
                    <sides> - количество вершин - вертексов.
                    <v1> .. <vn> - номера вертексов в том порядке, в каком они перечислены.
                    [Tag <tag>] - таг поверхности.

  [Tag <tag>] - таг поверхности.
                    Полигоны могут иметь метку - таг.
                    100 - для текстовых поверхностей. К ним будет применима команда стройки - sign.
                    200 - для картинок. К ним будет применима команда стройки - image.
                    300 - для обозначения руля при применении на транспорте.
                    Любое другое значение для применения с командой стройки - texture.

Формы

  Block <width> <height> <depth>
                    Создаёт кирпич указанных размеров с центром в центре.
                    <width> <height> <depth> - ширина, высота, глубина - X, Y, z.

  Sphere <radius> <density>
                    Создаёт сферу указанных размеров с центром в центре.
                    <radius> - радиус.
                    <density> - количество рёбер, например 12 или 24.

  Hemisphere <radius> <density>
                    Создаёт полусферу указанных размеров с центром в центре сферы.
                    <radius> - радиус.
                    <density> - количество рёбер, например 12 или 24.

  Cylinder <height> <bottom radius> <top radius> <sides>
                    Создаёт цилиндр указанных размеров с центром в середине высоты.
                    У цилиндра небудет верхней и нижней крышки, они создаются командой Disc.
                    <height> - высота цилиндра.
                    <bottom radius> - радиус нижнего основания.
                    <top radius> - радиус верхнего основания.
                    <sides> - количество рёбер, например 12 или 24.

  Cone <height> <radius> <sides>
                    Создаёт конус указанных размеров с центром в середине высоты.
                    У конуса небудет нижней крышки, она создаются командой Disc.
                    <height> - высота конуса.
                    <radius> - радиус основания.
                    <sides> - количество рёбер, например 12 или 24.

  Disc <height> <radius> <sides>
                    Создаёт диск, заполненную одностороннюю поверхность окружности.
                    <height> - смещение диска от его центра,
                    тоесть при использовании диска в качестве крышки для цилиндра или конуса,
                    можно разместить диск по темже координатам что и цилиндр или конус,
                    указав для диска <height> равный половине от цилиндра или конуса.
                    При использовании диска в качестве крышки для полусферы <height> диска следует ставить равным нулю.
                    <radius> - радиус.
                    <sides> - количество рёбер, например 12 или 24.

                    Для всех форм (Block, Sphere, Hemisphere, Cone, Cylinder, Disc)
                    размеры (<width> <height> <depth> <radius> <height>)
                    могут быть как положительными так и отрицательными, отрицательные создают форму стенками вовнутрь.
                    <width> <height> <depth> <radius> не могут быть равными нулю - это ошибка.
                    Только <height> диска может быть равной нулю.

Материал

  Color <red> <green> <blue>
                    <red> <green> <blue> - цвет поверхности, каждая компонента цвета может иметь значение от 0 до 1.
                    Например "Color .5 .5 .5" - серый цвет. "Color 0 1 0" - зелёный.

  Surface <ambient> <diffuse> <specular>
                    Световые свойства объекта.
                    <ambient> - в какой степени поверхность воспринимает заливающий свет. От 0 до 1.
                    <diffuse> - в какой степени поверхность воспринимает направленный свет. От 0 до 1.
                    <specular> - в какой степени поверхность отражает свет. От 0 до 1.
                    В настоящий момент параметр <specular> в AW не используется.
                    Рекомендуемые значения от "Surface .6 1 0" до "Surface .9 1 0".

  Ambient <ambient>
                    Световые свойства объекта.
                    <ambient> - в какой степени поверхность воспринимает заливающий свет. От 0 до 1.

  Diffuse <diffuse>
                    Световые свойства объекта.
                    <diffuse> - в какой степени поверхность воспринимает направленный свет. От 0 до 1.

  Specular <specular>
                    Световые свойства объекта.
                    <specular> - в какой степени поверхность отражает свет. От 0 до 1.
                    в настоящий момент этот параметр в AW не используется.

  Texture <name> [mask <mask>]
                    Текстура и маска поверхности. Для сброса текстуры используется значение "NULL".

  Opacity <opacity>
                    Непрозрачность поверхности. От 0 до 1.
                    0 - означает полностью прозрачную поверхность.
                    1 - нормальную, непрозрачную поверхность, по умолчанию.

  #! Collision <mode>
                    Проходимость поверхности для аватаров. "on" или "off".
                    "off" - означает проходимую поверхность.
                    "on" - нормальную, непроходимую поверхность, по умолчанию.

  LightSampling <sampling>
                    Важный параметр рендеринга объекта.
                    Может иметь значение "facet" или "vertex".
                    По умолчанию "facet".
                    "facet" означает что объект на свету будет выглядеть гранёным.
                    "vertex" означает что объект на свету будет выглядеть гладким, и будет работать быстрее.

  MaterialMode <mode>
                    Равна команде "MaterialModes <mode>" и команде "AddMaterialMode <mode>".
                    Может иметь тока одно значение "double".
                    Делает поверхности двусторонними.

  RemoveMaterialMode <mode>
                    Может иметь тока одно значение "double".
                    Отменяет двусторонность поверхностей установленную командой "MaterialMode double".

  GeometrySampling <sampling>
                    Может иметь значения "solid", "wireframe" или "pointcloud". "pointcloud" - неподдерживается.
                    "solid" - нормальный вид модели, по умолчанию.
                    "wireframe" - решотчатый вид модели.

  AxisAlignment <alignment>
                    Может иметь значения "none", "zorientx", "zorienty" или "xyz". "xyz" - неподдерживается.
                    "zorientx" и "zorienty" - означают одно и тоже - объект будет крутится вокруг своей оси "Y",
                    поворачиваясь к каждому пользователю одной и той-же стороной.
                    "none" - отменяет действие команды.

  #! RandomUVs
                    Распологает текстуру на объекте случайным образом,
                    указывая для каждого вертекса случайные UV координаты в диапозоне от 0 до 1.

  #! TextureAddressMode <mode>
                    как текстуры будут показаны за пределами UV координат, меньше 0 и больше 1.
                    Может иметь значения "wrap", "mirror" или "clamp". "wrap" - по умолчанию.
                    "wrap" - после окончания текстуры она начинается снова, сначала, нормальным образом.
                    "mirror" - после окончания текстуры она начинается снова, отзеркаленная образуя бесшовное соеденение.
                    Многие видеокарты не поддерживают такой режим и его использование не рекомендуется.
                    "clamp" - после окончания текстуры, последний ряд её пикселей продолжается дальше.
                    "clamp" - позволяет избежать такого глюка как появление непрозрачной полосы по краю текстуры с маской.
                    Однако UV координаты крайних вертексов должны быть точно равны 0 или 1.

  #! Opacityfix <mode>
                    "on" или "off". По умолчанию - "off".
                    Команда активирует другой, более медленный,
                    но более надёжный механизм рендеринга прозрачных и полупрозрачных поверхностей.

  MaterialBegin
                    команда указывает, что начиная с этой строки изменения внесённые в действующий материал,
                    могут быть отменены командой MaterialEnd. Тоесть создаёт точку отката.

  MaterialEnd
                    Отменяет все изменения внесённые в действующий материал между командой MaterialBegin и этой.

  AddTextureMode <mode>
                    Равна команде "TextureMode <mode>" и команде "TextureModes <mode>".
                    Может иметь значения "lit", "foreshorten" или "filter".
                    "foreshorten" и "filter" - неподдерживается.
                    "lit" - по умолчанию.
                    Команда смысла не имеет.

  RemoveTextureMode <mode>
                    Может иметь значения "lit", "foreshorten" или "filter".
                    "foreshorten" и "filter" - неподдерживается.
                    "lit" - по умолчанию.
                    Команда отменяет команду AddTextureMode.
                    Команда смысла не имеет.

  TextureMipmapState <mode>
                    "on" или "off". По умолчанию - "on".
                    Отключить или включить миппеппинг поверхности.

Трансформация системы координат

  Rotate <x> <y> <z> <angle>
                    Поворачивает систему координат вокруг указанной оси на указанный угол.
                    <x> <y> <z> - ось вокруг которой осуществить поворот. 0 или 1.
                    <angle> - угол в градусах.
                    Например: "Rotate 0 1 0 90" - поворот вокруг оси Y на 90 градусов.

  Scale <x> <y> <z>
                    Масштабирует систему координат в указанное количество раз.
                    <x> <y> <z> - коэффициенты масштабирования.

  Translate <x> <y> <z>
                    Сдвигает систему координат на указанное количество десятков метров.

  Transform <elements>
                    Выполняет одновременно команды Rotate, Scale, Translate в виде матрицы трансформации.

  TransformBegin
                    команда указывает, что начиная с этой строки изменения внесённые в систему координат,
                    могут быть отменены командой TransformEnd. То-есть создаёт точку отката.

  TransformEnd
                    Отменяет все изменения внесённые в систему координат между командой TransformBegin и этой.

  Identity
                    Сбрасывает все изменения внесённые в систему координат.
                    Устанавливает её в самое начальное положение.

Части тела

  Tag <tag>
                    Каждому куску(Clump) можно назначить таг части тела,
                    Это используется в аватарах и объектах к которым применяются секвенции движения.
                    Не путать с тагом поверхности.
                    Таблица возможных значений:

Tag Joint Position Name in Sequence File
1 Pelvis pelvis
2 Back back
3 Neck neck
4 Head head
5 Right Sternum rtsternum
6 Right Shoulder rtshoulder
7 Right Elbow rtelbow
8 Right Wrist rtwrist
9 Right Fingers rtfingers
10 Left Sternum lfsternum
11 Left Shoulder lfshoulder
12 Left Elbow lfelbow
13 Left Wrist lfwrist
14 Left Fingers lffingers
15 Right Hip rthip
16 Right Knee rtknee
17 Right Ankle rtankle
18 Right Toes rttoes
19 Left Hip lfhip
20 Left Knee lfknee
21 Left Ankle lfankle
22 Left Toes lftoes
23 Neck 2 neck2
24 Tail 1 tail
25 Tail 2 tail2
26 Tail 3 tail3
27 Tail 4 tail4
28 Misc Obj 1 obj
29 Misc Obj 2 obj2
30 Misc Obj 3 obj3
31 Hair hair
32 Hair 2 hair2
33 Hair 3 hair3
34 Hair 4 hair4
35 Right Chest rtbreast
36 Left Chest lfbreast
37 Right Eye rteye
38 Left Eye lfeye
39 Lips lips
40 Nose nose
41 Right Ear rtear
42 Left Ear lfear