Elite Games - Свобода среди звезд!

Independence War 2 - Создание окружения и подсветки (.lws)

СОЗДАНИЕ ФАЙЛОВ .lws


Файлы lws это стандартные файлы сцен редактора LightWave. В них как раз и создается это звездное небо с миллионом звезд, подсвеченные разными цветами туманности, а так же яркие звезды большой величины. Файлы lws всегда работают в паре с файлом map, для того, что бы их связать вместе, нужно просто задать им одинаковые имена.

Прежде чем начнем творить, нужно разъяснить один момент, связанный с туманностями (Nebula). В IW2 они бывают двух типов. 1 – туманности, которые мы создаем в файле map и 2 – туманности, которые мы создаем в файле lws. Объясню разницу. Первая — это реальная туманность как объект, в которую можно влететь и вылететь, вторая всего лишь декорация на заднем плане, предназначенная только для украшения картинки.

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

Внутри файлы lws представляют собой обыкновенные текстовые файлы и могут быть спокойно написаны (отредактированы) в обычном блокноте Windows. Этим мы и воспользуемся. В своей основе все файлы звездных систем похожи друг на друга, поэтому я думаю нет смысла писать такой файл с нуля, проще отредактировать уже имеющийся. Рассмотрим для примера файл Hoffers_wake.lws. Файл состоит из секций, каждая играет определенную роль в создании сцены. Рассмотрим их в порядке появления в файле.

 LWSC

 1
FirstFrame 1
LastFrame 60
FrameStep 1
PreviewFirstFrame 1
PreviewLastFrame 60
PreviewFrameStep 1
FramesPerSecond 30.000000

Первая секция в lws файле, содержит служебную информацию по анимации файла. Для нас никакой практической ценности не представляет, поэтому переносим ее в свой файл без изменений.

AddNullObject <node class=icStarfieldAvatar bright_star_count=2000 dim_star_count=100000 tint=(0.8,0.8,1.0)>
ShowObject 8 7
ObjectMotion (unnamed)
9
1
0 0 0 0 0 0 1 1 1
0 0 0 0 0
EndBehavior 1
ShadowOptions 7


В данной секции добавляется первая из нескольких пустышек. В первой строке задается класс объекта, в данном примере добавляется звездное небо на задний план.

Bright_Star_count = 2000 устанавливается количество ярких звезд.
Dim_star_count = 100000 устанавливается количество мелких звездочек. Общее количество на небосклоне, а не только те которые перед вами на экране.
tint=(0.8,0.8,1.0) устанавливается цвет звездочек. (Не забываем, что цвет как обычно в RGB формате. Здесь представлен в несколько ином варианте. Каждая составляющая в RGB формате может принимать 256 значений от 0 до 255. Здесь цвет задается значениями от 0.0 до 1.0. Таким образом, для получения чисто красного цвета необходимо выставить такие параметры 1.0, 0.0, 0.0).
Остальные параметры для нас не интересны, поэтому опять же копируем их без изменений в свой файл.

Следующая секция

AddNullObject <node class=icNebulaAvatar url=model||models|hoffers_wake_nebula>
ShowObject 8 7
ObjectMotion (unnamed)
9
1
 0 0 0 0 0 0 1 1 1
 0 0 0 0 0
EndBehavior 1
ShadowOptions 7

В данной секции добавляется туманность заднего плана, о которой я говорил выше. Единственное, что можно изменить в данной секции, так это модель туманности. В игре представлено несколько моделей, вы можете выбрать любую на свой вкус. Модели хранятся в папке Models файла Resourse.zip .

Секция номер три:

AddNullObject SystemParent
ShowObject 8 7
ObjectMotion (unnamed)
9
1
  -1695 0 -145 0 0 180 1 1 1
  0 0 0 0 0
EndBehavior 1
ShadowOptions 7


В данной секции добавляется глобальный «Родитель» звездной системы все остальные объекты будут его потомками. Тут нас могут заинтересовать параметры в строке 6.

Рассмотрим их слева направо:

-1695 X — Координата в 3х мерном пространстве
0 Y — Координата
-145 Z — Координата
0 Поворот по оси Х
0 Поворот по оси Y
180 Поворот по оси Z
1 Масштаб по оси X
1 Масштаб по оси Y
1 Масштаб по оси Z

Хоть Null и невиден, но не забываем, что все изменения масштаба, повороты тут же отразятся и на дочерних объектах. Данные параметры имеют то же значение в других секциях, поэтому я не буду на них останавливаться дальше.

Секция номер 4.

AddNullObject root
ShowObject 8 7
ObjectMotion (unnamed)
  9
 1
   0 0 0 0 0 0 1 1 1
  0 0 0 0 0
EndBehavior 1
ParentObject 3
ShadowOptions 7

Данная секция добавляет еще один Null. Конкретное назначение пока точно не выяснено, но без него не работает. Здесь появляется такой параметр как ParentObject 3
Который показывает, что данный объект является потомком объекта SystemParent .

AmbientColor 255 255 255
AmbIntensity 0.250000

Данная небольшая секция устанавливает цвет подсветки и ее интенсивность. Но, это используется только в самом LightWave и никак не используется в Independece War 2. Поэтому опять же переносим без изменений.

AddLight
LightName <star>
ShowLight 1 7
LightMotion (unnamed)
9
1
0 0 0 180 0 0 1 1 1
0 0 0 0 0
EndBehavior 1
LightColor 255 204 128
LgtIntensity 1.500000
LightType 0
ShadowType 1

В данной секции добавляется источник света. Есть только три возможности добавить настоящий источник света, это задать имя <star>, <fill>, <glow>. Имя <star> добавляет свет от нашей звезды. В строках 10 и 11 задается цвет источника света и интенсивность. Сразу отмечу, здесь не задается цвет самой звезды (он задается в map файле), то есть теоретически можно задать красный цвет звезды и зеленый цвет испускаемого ею света.
Цвет задается в стандартном RGB формате, интенсивность задается так 1.0 и соответствует 100% интенсивности. Она может иметь и отрицательное значение – это уже будет не источник света, а источник темноты. Да – да и такое возможно.

В строке 12 задается тип источника света. Может принимать значения:

0 – Звезда. Distant light Тип источника удаленный очень большой. Подразумевает, что все лучики света двигаются в параллельных направлениях (ну или в очень близких к параллельным), как например солнечный свет на поверхности земли.

1 — Лампочка. Point light Тип источника точечный, все световые лучики направлены в разные стороны из одной точки пространства.

2 — Прожектор. Spot light Тип источника точечный. Весь световой поток идет в одном направлении. Расходясь конусом света.

3 — Линейный. Linear light На данный момент мало изучен.

4 — Область. Area light (Светящаяся поверхность)
Специальный тип point (точечного источника света) или spotlight (прожектор). Лучи излучает геометрическая область, а не точка (вся поверхность равномерно излучает свет). Очень полезен для создания мягких теней с umbra (полная тень) и penumbra (частичное затенение).

Двигаемся дальше. Следующая секция выглядит так:

AddLight
LightName <fill>
ShowLight 1 7
LightMotion (unnamed)
9
1
0 0 0 0 0 0 1 1 1
0 0 0 0 0
EndBehavior 1
LightColor 92 172 34
LgtIntensity 0.750000
LightType 0
ShadowType 1

Еще один источник света. Управляет свечением заднего плана так называемая подсветка. От нее зависит в основном, как будет выглядеть теневая сторона объекта. Эксперименты с цветом света и его интенсивностью могут привести к весьма интересным эффектам. Здесь в основном играет роль не цвет, а интенсивность. С ней можно по играться для получения различных эффектов. Данный источник так же является Удаленным (Distant, LightType=0).

Важно запомнить, что только источники света, имеющие имена <star>, <fill>, <glow> используются как настоящие источники света, все остальные используются только для добавления эффектов бликов света. В них играет роль только цвет блика и никак не используется параметр интенсивности.

Следующая секция:

AddLight
LightName HoffersWake
ShowLight 1 7
LightMotion (unnamed)
9
1
  -1693.9 0 146.9 180 0 0 1 1 1
  0 0 0 0 0
EndBehavior 1
ParentObject 4
LightColor 0 196 0
LgtIntensity 1.000000
LightType 1
LensFlare 1
FlareIntensity 0.008000
FlareDissolve 0.000000
LensFlareFade 4
LensFlareOptions 7
FlareRingColor 80 20 10
FlareRingSize 0.220000
FlareStarFilter 2
ShadowType 1

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

Небольшое отступление. Данная секция добавляет на небосклон далекую звездочку с именем Hoffers_wake. Но мы уже находимся в системе Hoffers_wake. Я так думаю, что это просто ошибка дизайнеров. В других файлах такого не наблюдается. Хотя звездочки все равно не имеют подписей, и пользователь никогда не догадается что это за звезда. Поэтому можете задать любое имя.

Но вернемся к нашей секции, в ней добавилось несколько новых параметров, начинающихся со строки 14.

LensFlare 1 данный источник света использует блики. 0 нет.
FlareIntensity 0.008000 Насколько ярки и большие блики.
FlareDissolve 0.000000 Неизвестно. Это нормальная опция Lightwave, но я ни разу не видел ее применения в EoC и не знаю, что она делает. Буду рад, если кто объяснит.
LensFlareFade 4 Описывает затухание эффекта. Где:

4 – Затухание вне экрана
8 – Затухание за объектом
16 – Затухание в тумане
2 – Затухание на расстоянии

Вы можете использовать различные комбинации эффектов, просто слаживая их значения.
Число 2 имеет дополнительный параметр, который необходимо добавить:

FlareNominalDistance 1 расстоянию в метрах на котором эффект полностью исчезает.

FlareRingColor 80 20 10 Цвет центрального кольца света. Имеет стандартный RGB формат.

FlareRingSize 0.220000 Это размер эффекта приведенный в процентах (22%). Я незнаю в процентах от чего.

FlareStarFilter 2 Видимые искажения, бывают:

0 — Нет
1 – 2 точки
2 — 2+2 точки
3 — 4 точки
4 — 4+4 точки
5 — 6 точек
6 — 6+6 точек
7 — 8 точек
8 — 8+8 точек
9 — 10 точек
10 — 10+10 точек

Вы можете выбрать только одно значение. Комбинации недопустимы.

Самое главное, что эти видимые звезды не являются обязательными для включения их в lws файл. Поэтому если хотите, можете не включать их вовсе, но если вы собираетесь добавлять, вы должны соблюдать выше приведенный формат и задавать уникальные имена.

Файл сцен не может содержать более 8 источников света, дающих свет в сцене. В общем, вы можете добавлять много бликов, но ограниченны в источниках света.

И последняя секция:

ShowCamera 1 7
CameraMotion (unnamed)
  9
  1
   0 0 0 -1.5 -11.5 0 1 1 1
   0 0 0 0 0
EndBehavior 1
ZoomFactor 3.200000
Resolution 1
PixelAspectRatio 2
SegmentMemory 9000000
Antialiasing 0
AdaptiveSampling 1
AdaptiveThreshold 16
FilmSize 2
FieldRendering 0
MotionBlur 0
DepthOfField 0

SolidBackdrop 1
BackdropColor 0 0 0
ZenithColor 0 40 80
SkyColor 120 180 240
GroundColor 50 40 30
NadirColor 100 80 60
FogType 0
DitherIntensity 1
AnimatedDither 0

RenderMode 2
RayTraceEffects 0
ClipRayColors 0
DataOverlayLabel
FullSceneParamEval 0

ViewMode 1
ViewAimpoint 0.000000 0.000000 0.000000
ViewDirection -0.010472 -0.092502 0.000000
ViewZoomFactor 2.692559
GridNumber 40
GridSize 1000.000000
ShowMotionPath 1
ShowBGImage 0
ShowFogRadius 0
ShowRedraw 0
ShowSafeAreas 0
ShowFieldChart 0

Данные параметры не имеют особой практической ценности поэтому просто копируем все как есть.
После того как весь файл будет готов, необходимо сохранить его тем же именем что и файл map в моем примере файлы имеют имена: mantikora.map и mantikora.lws.
На этом создание карты закончено осталось только добавить ее в нашу систему (смотрите статью Вставка полученных файлов в игру).

Андрей Мунгалов a.k.a. vampo
К началу раздела | Наверх страницы Сообщить об ошибке
Independence War 2 - Создание окружения и подсветки (.lws)
Все документы раздела: Independence War 1 | Предыстория | Мифология | Персонажи | Сражения | Пиратство | Экран HUD | Снаряжение | Прохождение 0-го акта | Прохождение 1-го акта | Прохождение 2-го акта | Прохождение 3-го акта | А знаете ли вы что... | Клавиши управления | Команды управления | Диски | Технические вопросы | Файлы | Моды | Моды по "Вавилону 5" | Мод B5core | Конструктор | Ссылки |


Дизайн Elite Games V5 beta.18
EGM Elite Games Manager v5.17 02.05.2010