Создание объектов глубокого космоса

Это руководство описывает, как добавить галактику, звёздное скопление или туманность в SpaceEngine. Прежде чем продолжить, рекомендуем прочитать Введение.

Галактики, звёздные скопления и туманности имеют почти одинаковый формат файлов каталога. Они хранятся в виртуальных папках */catalogs/galaxies/, */catalogs/clusters/ и */catalogs/nebuale/, соответственно. Чтобы добавить новый объект, создайте sc-файл в необходимой подпапке папки addons, и наберите код в нём (см. ниже). Один sc-файл может содержать код многих объектов.

Кроме того, для галактик или туманностей можно создать свои 3D модели. Иначе SpaceEngine будет использовать одну из стандартных моделей, назначив её на основе типа галактики или туманности. Вы можете сделать свою модель и назначить её определённой галактике/туманности, или же позволить SE назначать её процедурно всем галактикам/туманностям определённого типа (например, галактикам типа “Sa”). Также можно модифицировать стандартные модели.

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

Большинство галактик в стандартной установке SpaceEngine хранятся в csv-файле data/catalogs/Catalogs0980.pak/galaxies/NGC-IC.csv – это каталог галактик NGC/IC, содержащий около 10 000 объектов. Некоторые другие галактики хранятся в нескольких sc-файлах в том же системном pak-файле. Эти системные файлы не должны редактироваться или изменяться каким-либо образом. Если вы хотите обновить галактику, удалить или добавить новую, создайте свой собственный sc или csv файл в папке addons/catalogs/galaxies/. SpaceEngine поддерживает функции для изменения и удаления галактик и любых других объектов из стандартных каталогов, а так же для добавления новых.

Формат csv для каталогов предназначен для создания больших каталогов с однообразными данными. Он более компактный и загружается быстрее, чем sc, но имеет фиксированный формат. Это просто таблица со значениями, разделёнными запятыми. Формат sc предназначен для описания объектов с любыми возможными типами данных, которые только могут быть использованы в SpaceEngine. Это текстовый скрипт, использующий “теги” для описания галактики и её различных параметров. Сначала мы опишем формат sc файла.

Каталог галактик/звёздных скоплений/туманностей

Галактики, звёздные скопления и туманности имеют очень похожий формат файлов каталога. Они отличается только расположением на диске, именем тега, описывающего объект, и применением нескольких параметров, специфичных только для определённого типа объекта.

Допустим, вы хотите создать новую галактику с именем “MyGalaxy”. Перейдите в папку addons/catalogs/galaxies/ (создайте её, если она не существует) и создайте в ней новый текстовый документ. Переименуйте его в mygalaxy.sc (имя файла не имеет значения, но убедитесь, что он не совпадает с каким-то существующим файлом, иначе ваш файл перекроет его). Откройте файл в блокноте и введите такой код:

Code

Galaxy    “MyGalaxy”
{

Type    “Sb”        // хаббловский тип
RA       18.365     // прямое восхождение
Dec     -30.1643    // склонение
Dist     86.67e6    // расстояние от Солнца
Radius   21000      // радиус
AbsMagn -21.5       // абсолютная звёздная величина
Quat   ( -0.9269889 0.2641924 0.03661448 0.2637298 )    // кватернион ориентации

}

В каталоге галактик допустимо использовать только эти два тега для добавления нового объекта или изменения старого:
Galaxy “name” { } – добавить/изменить галактику,
Quasar “name” { } – добавить/изменить квазар.
Обратите внимание: в текущей версии SpaceEngine квазары ничем не отличаются от обычных галактик, кроме обозначения в интерфейсе.

Для добавления новой галактики или изменения галактики, которая уже была описана в каталогах, просто опишите в скрипте новый объект (Galaxy или Quasar) с тем же именем. SpaceEngine обновит старый объект новыми данными (это также можно изменить его тип – из
Galaxy
, чтобы Quasar и обратно).

Чтобы добавить новую галактику или изменить галактику, которая уже есть в каталогах SE, просто опишите новый объект (Galaxy или Quasar) с тем же именем в вашем каталоге галактик. SpaceEngine обновит старую галактику новыми данными (в том числе можно изменить её тип – с Galaxy на Quasar и наоборот).

Звёздные скопления могут быть добавлены/изменены таким же образом. Перейдите в папку addons/catalogs/clusters/ (создайте его, если он не существует) и создайте в ней новый текстовый документ. Переименуйте его в mycluster.sc (имя файла не имеет значения). Откройте его в блокноте и введите такой код:

Code

Cluster    “MyCluster”
{

Galaxy  “Milky Way”    // родительская галактика
Type    “Open”         // тип
RA       5.78333333    // прямое восхождение
Dec      16.1166667    // склонение
Dist     1230.9        // расстояние от Солнца
Radius   4.68          // радиус
AbsMagn -3.6           // абсолютная звёздная величина
CenPow   0.5           // степень сгущения звёзд к центру
Age      760           // возраст
NStars   1500          // число звёзд
Color   (0.86 0.92 1.00)    // цвет звездообразной частицы

}

Аналогично добавляются/изменяются туманности. Перейдите в папку addons/catalogs/nebulae/ (создайте его, если он не существует) и создайте в ней новый текстовый документ. Переименуйте его в mynebula.sc (имя файла не имеет значения). Откройте его в блокноте и введите такой код:

Code

Nebula    “MyNebula”
{

Galaxy  “Milky Way”    // родительская галактика
Type    “Diffuse”      // тип
RA       04 46 18      // прямое восхождение
Dec     -16 07 36      // склонение
Dist     520.3         // расстояние от Солнца
Radius   3.5           // радиус
AppMagn  5             // визуальная звёздная величина
Quat   ( -0.3156767 -0.6193562 0.2975453 -0.6543798 )    // кватернион ориентации

}

Также можно удалить ранее описанную в каталоге галактику/квазар/скопление/туманность (то есть объект, описанный в каком-то старом файле каталога). Используйте этот параметр в соответствующем sc-файле (т.е. в каталоге галактики, чтобы удалить галактику, и так далее):
Remove “name” – удалить ранее описанный объект.

Параметры скрипта галактики/звёздного скопления/туманности

Здесь мы опишем все параметры, которые могут быть использованы в скриптах для галактик, звёздных скоплений и туманностей. Они очень похожи, хотя некоторые параметры разрешены только для определённого типа объекта. Имейте в виду, что описывать галактики можно только в каталоге галактик, нельзя делать это в каталогах в туманностей или звёздных скоплений. Аналогично – для туманностей и звёздных скоплений. Это было отмечено в руководстве Введение в скрипты SE:

каталоги галактик */catalogs/galaxies/*.sc могут содержать только теги Galaxy и Quasar;
каталоги звёздных скоплений */catalogs/clusters/*.sc могут содержать только тег Cluster;
каталоги туманностей */catalogs/nebulae/*.sc могут содержать только тег Nebula.

Параметры, общие для всех каталогов

RA – прямое восхождение в часах, в десятичном формате или в формате ЧЧ MM СС.ссс
Dec – склонение в градусах, в десятичном формате или в формате ДД ММ СС.ссс
Dist – расстояние от Солнца в парсекаx.
Параметры RA, Dec и Dist можно настроить в SE в режиме редактирования (см. ниже).

Yaw, Pitch, Roll – ориентация объекта в форме углов Эйлера, или
Axis – ориентация объекта в формате ось-угол, или
Quat – кватернион ориентации объекта.
Параметры ориентации можно настроить в SE в режиме редактирования (см. ниже). Если они не указаны, то генерируются процедурно.

Lum, Luminosity – светимость объекта в единицах светимости Солнца, или
AppMagn – видимая (оптическая) звёздная величина объекта, или
AbsMagn – абсолютная (оптическая) звёздная величина объекта.

Radius – радиус объекта в парсеках.

Type – морфологический тип объекта.
В каталоге галактики это морфологический тип Хаббла. Допустимые типы:
“E0”, “E1”, “E2”, “Е3”, “Е4”, “E5”, “E6”, “Е7” – эллиптические галактики;
“S0” – линзовидные галактики;
“Sa”, “Sb”, “Sc”, “Sd” – спиральные галактики;
“SBA”, “SBB”, “СБК”, “SBD” – спиральные галактики с перемычкой;
“Irr” – неправильные галактики.
В каталоге туманностей допустимы типы:
“Diffuse” – диффузная туманность;
“Planetary” – планетарная туманность;
“SNR” – остаток сверхновой.
В каталоге звёздных скоплений допустимы типы:
“Globular” – шаровое скопление;
“Open” – рассеянное скопление;
“Kern” – скопление галактического центра (специальный тип, используя для представления центра галактики);
“Part” – часть галактики (специальный тип без звёзд, используя для представления звёздных облаков, таких как M 24 – звёздное облако Стрельца).

Параметры, используемые только в каталоге галактик

ModelBright – общая яркость 3D-модели галактики. Значение по умолчанию – 1.

SolFade true – если указано, генерация процедурных объектов (звёзд, звёздных скоплений и туманностей) вблизи Солнца будет подавлена. Так что при обзоре из Солнечной системы не будет видно процедурных объектов ярче видимой звёздной величины 8.1. Это сделано для того, чтобы предотвратить изменение внешнего вида реальных созвездий при наблюдении из Солнечной системы. Предельные звёздные величины для разных типов объектов можно настроить с помощью параметров StarMaxAppMagn, ClusterMaxAppMagn и NebulaMaxAppMagn в конфиг-файле config/main-user.cfg.

Параметры, используемые только в каталоге звёздных скоплений

Galaxy – имя галактики, к которой принадлежит данное скопление. Пример: Galaxy “Milky Way”. Эта галактика должна существовать в SE.

Age – возраст звёздного скопления в миллионах лет. Влияет на генерацию процедурных звёзд (более молодые скопления имеют больше голубых звёзд, более старые имеют больше красных гигантов).

CenPow – параметр, который определяет степень “сгущения” звёзд к центру скопления. Большее значение (> 1) делает скопление более концентрированным, меньшее значение (<1) делает скопление более “размазанным”.

NStars – число звёзд в скоплении, используется только для рассеянных скоплений. Чтобы отключить процедурные звезды, укажите ноль: NStars 0 (используется для Плеяд и других скоплений, звёзды которых уже представлены в звёздном каталоге). При генерации модели рассеянного скопления, SpaceEngine суммирует светимость генерируемых звёзд и останавливает генерацию, когда эта сумма достигает светимость скопления. Потому фактическое количество звёзд может быть ниже, чем указано в NStars.

Color – RGB-вектор цвета частицы, которая рендерится вместо модели скопления, когда камера находится далеко от него. Чтобы отключить частицу, задайте чёрный цвет: Color ( 0 0 0 ) (полезно для больших или очень близких скоплений). Если не указан, будет генерироваться процедурно.

Параметры, используемые только в каталоге туманностей

Galaxy – имя галактики, к которой принадлежит данное скопление. Пример: Galaxy “Milky Way”. Эта галактика должна существовать в SE.

Использование режима редактирования

Координаты, ориентация и размер объекта можно настроить в SpaceEngine с помощью режима редактирования. Для того, чтобы войти в режим редактирования, дважды нажмите кнопку [*]. В нижней левой части экрана появится подсказка. С помощью комбинаций клавиш, указанных в ней, можно настроить разные параметры выбранного объекта. Значения RA, Dec, расстояния, радиуса и ориентации (Axis и Quat) отображаются в таблице информации об объекте в верхней левой части экрана (не забудьте переключить единицу расстояния на парсеки в меню настроек игрока).

Для того, чтобы точно настроить видимое положение и ориентацию объекта относительно реальных звёзд (используя как образец реальные фотографии с телескопов), делайте корректировки, глядя из Солнечной системы. Перелетите к Солнцу, отцентрируйте камеру на объекте, и используйте телескоп (Shift + левое перетаскивание мышью), чтобы “приблизить” его.

Примечание: изменения не сохраняются в файл скрипта. Необходимо ввести их вручную.

Формат CSV для каталогов галактик

SpaceEngine поддерживает формат csv (Comma-separated variables – значения, разделённые запятыми) для больших каталогов звёзд и галактик. Это обычный текстовый формат описанием одной галактики в каждой строке, значения параметров в ней разделены запятой. В стандартной установке SpaceEngine есть один csv-каталог галактик – data/catalogs/Catalogs0980.pak/galaxies/NGC-IC.csv, который содержит 10896 галактик, и имеет размер (несжатый) всего 1.3 МБ. Формат csv более компактный, чем sc, но имеет ряд ограничений:
1) Могут быть описаны только галактики, квазары описать невозможно.
2) Описываются только эти параметры: Name, Type, RA, Dec, Dist, AbsMagn, Radius, Quat.

Формат файла прост: первая строка – это заголовок, описывающий имена параметров (через запятую), остальные строки – данные о галакиках (значения соответствующих параметров, также через запятую). Вот пример первых 4 строк из файла NGC-IC.csv:

Code
Name,Type,RA,Dec,Dist,AbsMagn,Radius,Quat.w,Quat.x,Quat.y,Quat.z
NGC 1077-2/NGC 1077B/MCG 7-6-68/ZWG 539.95,SBb,2.76720007,40.093299,171388274,-19.07,12463.208,0.840432,0.534431,0.0164455,0.088246
NGC 1000/MCG 7-6-48/ZWG 539.67/NPM1G +41.78,E0,2.64690011,41.4603005,140145941,-20.13,14269.0703,0.761034,0.552704,-0.274793,-0.199585
IC 275-1/5ZW309,E0,3.01530009,44.3503005,132235717,-18.31,5770.17432,0.760357,0.523453,-0.316721,-0.218042

Обратите внимание, что галактики имя и его тип Хаббл не заключено в кавычки. Допускается отсутствие данных для некоторых параметров: просто оставьте их пустыми. Но запятые, разделяющие параметры, по-прежнему необходимы (пример: ,,).

Каталоги в формате csv имеют приоритет над sc-каталогами, т.е. они загружаются первыми. Но затем звёздный калькулятор выполняет слияние/объединение данных для дублирующихся галактик, использую дату модификации файла каталога или pak-файла. Параметр CsvLogLevel в файле конфигурации config/main-user.cfg задаёт уровень протоколирования звёздного калькулятора для всех файлов csv.

Создание 3D моделей галактик и туманностей

Текущая версия SpaceEngine (0.9.8.0) использует спрайты для визуализации 3D моделей галактик и туманностей. Формат моделей очень похож, и скрипты, описывающие их, также очень похожи. Есть много способов создания моделей в SE, но все они сводятся к созданию трёхмерного распределения спрайтов различного размера и цвета. Пользователь может контролировать форму и цвет этого распределения с помощью файлов текстур (изображений) и скрипта, где указывается, как их использовать. Для спиральныех галактик также используется текстура диска высокого разрешения для повышения качества визуализации, когда галактика наблюдается сверху. Методы, предоставляемые SpaceEngine:

  • Эллиптические галактики: специальный шейдер трассировки лучей, поэтому 3D-модели для них не нужны.
  • Спиральные и линзовидные галактики: метод “галактика”. Требуется RGBA текстура диска высокого разрешения с паттерном пыли в альфа-канале, её уменьшенный вариант (128×128), и RGB текстура распределения голубых звёзд, звёздных скоплений и туманностей в диске.
  • Неправильные галактики и туманности: различные способы проецирования текстур. Требуется от одной до шести RGBA текстур, которые представляют собой вид модели с разных сторон (спереди, сверху, слева и так далее). Поддерживаются различные методы генерации 3D распределения спрайтов по этим текстурам (кубический, цилиндрический и т.д.). Используется для имитации реальной формы неправильной галактики или туманности.
  • Неправильные галактики и туманности: полностью процедурное распределения спрайтов на основе фрактальных функций. Используется для процедурных неправильных галактик и туманностей.

Для описания модели галактики/туманности, нам нужны фронтальные текстуры или текстуры проекции и скрипт модели. Текстуры галактик хранятся в виртуальной папке */textures/galaxies/, туманностей – в папке */textures/nebulae/. Скрипт модели представляет собой файл с расширением *.cfg, расположенный в папке */models/galaxies/ или */models/nebulae/ (для галактик и туманностей, соответственно).

Чтобы добавить новую модель галактики, перейти в папку addons/models/galaxies/ и создате новый текстовый документ там. Переименуйте его в mymodel.sc (имя файла не имеет значения, но убедитесь, что он не совпадает с каким-то существующим файлом, иначе ваш файл перекроет его). Откройте файл в блокноте и введите такой код:

Code

GalaxyModel    “MyGalaxyModel”
{

UseForObject    “MyGalaxy”    // имя галактики, для которой эта модель предназначена
UseForType      “Sb”          // тип галактик, для которых эта модель предназначена

Method      “SpiralGalaxy”    // метод генерации формы
Position    (0 0 0)           // смещение спрайтовой модели
Radius      (1.0 0.2 0.1)     // радиус диска, радиус балджа, толщина балджа
BulgeRadius (1 1 1)           // размер балджа
BBoxRes     (8 8 8)           // разрешение octree спрайтов

floatLOD    0    // использовать ли непрерывный LOD (0 = false)
LODbase     1    // база LOD-а

// пути к текстурам
FrontTexture    “MyGalaxy.*”
SysTexture      “MyGalaxy sys.*”
FrontImage      “MyGalaxy small.*”
SideImage       “Sa side.*”

// разрешение модели (множитель количества спрайтов)
// в радиальном и Z-направлениях, соответственно для
// эмиссионных, пылевых спрайтов и спрайтов балджа
emDetailR   1.0
emDetailZ   0.75
absDetailR  2.0
absDetailZ  0.5
bDetailR    0.75
bDetailZ    0.75

// цвет эмиссионных, пылевых спрайтов и спрайтов балджа
emParticleColor     (1.0 1.0 1.0)
absParticleColor    (0.0 0.3 0.5)
bParticleColor      (1.0 0.9 0.7)

// смещение эмиссионных, пылевых спрайтов и спрайтов балджа
emParticleDispR     0.25
emParticleDispZ     0.25
absParticleDispR    0.25
absParticleDispZ    0.5
bParticleDispR      0.2
bParticleDispZ      0.2

// размер эмиссионных, пылевых спрайтов и спрайтов балджа,
// в центре и на краю модели
emParticleSizeCenter    2.0
emParticleSizeEdge      1.7
absParticleSizeCenter   1.5
absParticleSizeEdge     1.5
bParticleSizeCenter     1.0
bParticleSizeEdge       1.7

// предельная яркость эмиссионных, пылевых спрайтов и спрайтов балджа,
// в центре и на краю модели
emParticleMinBrightCenter   0.5
emParticleMinBrightEdge     0.1
absParticleMinBrightCenter  0.0
absParticleMinBrightEdge    0.1
bParticleMinBrightCenter    1.0
bParticleMinBrightEdge      0.3

// яркость эмиссионных, пылевых спрайтов и спрайтов балджа,
// в центре и на краю модели
emParticleBrightnessCenter  0.1
emParticleBrightnessEdge    0.3
absParticleBrightnessCenter 5.0
absParticleBrightnessEdge   5.0
bParticleBrightnessCenter   0.15
bParticleBrightnessEdge     0.0

}

Модель туманность описывается таким же образом. Перейдите в папку addons/models/nebulae/ и создайте новый текстовый документ там. Переименуйте его в mymodel.sc (имя файла не имеет значения), откройте его в блокноте и введите такой код:

Code

NebulaModel    “MyNebulaModel”
{

UseForObject    “MyNebula”    // имя туманности, для которой эта модель предназначена
UseForType      “Diffuse”     // тип туманностей, для которых эта модель предназначена

Method      “CubeMap”        // метод генерации формы
Position    (0 0 0)          // смещение спрайтовой модели
Radius      (1 1 1)         / / масштаб модели по осям
BBoxRes     (4 4 4)          // разрешение octree спрайтов

floatLOD    1    // использовать ли непрерывный LOD (0 = false)
LODbase     50   // база LOD-а

// пути к текстурам (прим.: текстуры “neg” не используются,
// в этом случае они дублируются текстурами “pos”)
CubePosXImage    “MyNebula posx.*”
CubePosYImage    “MyNebula posy.*”
CubePosZImage    “MyNebula posz.*”

// разрешение модели (множитель количества спрайтов)
// в радиальном и Z-направлениях, соответственно для
// эмиссионных и пылевых спрайтов
emDetailR   1.5
emDetailZ   1.5
absDetailR  1.5
absDetailZ  1.5

// цвет эмиссионных и пылевых спрайтов
emParticleColor     (1.0 1.0 1.0)
absParticleColor    (0.0 0.1 0.2)

// смещение эмиссионных и пылевых спрайтов
emParticleDispR     0.5
emParticleDispZ     0.5
absParticleDispR    0.5
absParticleDispZ    0.5

// размер эмиссионных и пылевых спрайтов,
// в центре и на краю модели
emParticleSizeCenter    1.0
emParticleSizeEdge      2.0
absParticleSizeCenter   1.0
absParticleSizeEdge     1.0

// предельная яркость эмиссионных и пылевых спрайтов,
// в центре и на краю модели
emParticleMinBrightCenter   0.05
emParticleMinBrightEdge     0.05
absParticleMinBrightCenter  0.1
absParticleMinBrightEdge    0.1

// яркость эмиссионных и пылевых спрайтов,
// в центре и на краю модели
emParticleBrightnessCenter  0.5
emParticleBrightnessEdge    0.5
absParticleBrightnessCenter 1.7
absParticleBrightnessEdge   1.7

// радиус ограничивающей сферы модели и усреднённый цвет,
// обновляются автоматически SpaceEngine
clipRadius  0.928901
sumColor    (254 9 4)

}

Имейте в виду, что вы должны описывать модель галактики в cfg-файле, который расположен в папке */models/galaxies/, а модель туманности – в cfg-файле в папке */models/nebulae/. Только эти теги разрешены в соответствующих cfg-файлах:

GalaxyModel “name” {} – добавить/изменять модель галактики в скрипте моделей галактик,
NebulaModel “name” {} – добавить/изменять модель туманности в скрипте моделей туманностей.

В одном cfg-файле можно описать несколько моделей, точно так же как в каталогах астрономических объектов SpaceEngine. Если в cfg-файлах найдены два описания одной и той же модели (теги с одинаковыми именами, например, GalaxyModel “MilkyWay”), SpaceEngine обновит старый скрипт данными из нового скрипта. Таким образом можно изменить существующую модель, создав новый cfg-файл с описанием этой модели. Примечание: вы должны удалить двоичный файл соответствующей модели из кэша, чтобы применять обновление (см ниже).

Скрипт модели галактики/туманности

Далее опишем все параметры, которые могут быть использованы в скриптах моделей галактик и туманностей. Они очень похожи, хотя некоторые параметры разрешены только для определённого типа объекта.

UseForObject – определяет, для какого именно объекта предназначена эта модель.
UseForType – определяет, для какого типа объектов предназначена эта модель (процедурных или каталожных, которые не имеют своей уникальной модели).
Возможен один из трёх вариантов:
1) Модель используется только для галактики/туманности, имя которой указано в параметре UseForObject. Параметра UseForType нет. Этот метод используется для специфических объектов, таких как Большое Магелланово облако или объекта Хога, модели которых вы не хотите использовать для других процедурных галактик/туманностей.
2) Модель процедурно назначается галактикам/туманностям, которые не имеют собственных моделей, но имеют тип, указанный в параметре UseForType. Параметра UseForObject нет. Например, если есть несколько моделей с UseForType “SBa”, то все галактики типа “SBa” будет использовать случайным образом одну из этих моделей. Этот метод полезен для “случайных” моделей, сделанных на основе художественных текстур, а не реальных фотографий.
3) Модель используется для галактики/туманности, имя которой указано в параметре UseForObject, а также процедурно назначается для галактикам/туманностям, которые имеют тип, указанный в параметре UseForType.
Необходимо указать по крайней мере один из двух параметров: UseForObject и/или UseForType.

Method – метод генерации трёхмерного распределения спрайтов модели. Возможные значения:
“Cylindrical” – цилиндрическое распределение: боковая текстура задаёт плотность по радиусу ® и высоте (Z), фронтальная текстура задаёт плотность в плоскости XY. Пример: модели галактик LMC и SMC.
“Spherical” – сферическое распределение: фронтальная текстура вращается вокруг оси Y, и, таким образом, устанавливает плотность спрайтов. Пример: модель туманность Owl.
“Flat” – плоский слой спрайтов, плотность определяется фронтальной текстурой.
“EllipticGalaxy” – эллиптическое распределение спрайтов, текстуры не используются. Обратите внимание, что эллиптические галактики в SE отображаются специальным шейдером трассировки лучей, поэтому спрайтовая модель для них не требуется.
“SpiralGalaxy” – спиральная галактика, используется цилиндрический метод для диска, и эллиптическое распределения для балджа. Пример: почти любая модель спиральной и линзовидной галактики.
“CubeMap” – распределение спрайтов задаётся шестью текстурами CubePosXImage … CubePosZImage. Эти текстуры задают проекцию модели на 6 граней куба, описывающего модель. Плотность спрайтов и их цвета получаются кубической интерполяцией между этими текстурами граней. Если какая-то pos/neg текстура не задана, вместо ней используется соответствующая neg/pos текстура (так что должны быть заданы, по крайней мере, 3 текстуры). Пример: модели туманности Carina, Horsehead.
“Diffuse” – процедурное облако-подобное распределение, никаких текстур не требуется. Пример: стандартные модели для процедурных диффузных туманностей “Diff0”, “Diff1”.
“Planetary” – процедурное распределение сферической формы. Пример: стандартные модели для процедурных планетарных туманностей “Plan0”, “Plan1”.
“SNR” – процедурное распределение сферической формы с более тонкими стенками. Пример: стандартные модели для процедурных планетарных туманностей “SNR0”, “SNR1”.

Position, Radius, BulgeRadius – сдвиг и масштабирование модели спрайтов и его частей. BulgeRadius имеет смысл только для моделей галактик.

floatLOD, LODbase – настройки LOD спрайтовой модели.

FrontTexture – фронтальная текстура галактики. Рендерится в виде полупрозрачного текстурированного квадрата в плоскости галактического диска, накладывающегося на спрайтовую модель. Должна иметь паттерн пыли в альфа-канале (см. Создание текстур). RGB каналы задают распределение и цвет эмиссионных спрайтов, а альфа-канал – распределение спрайтов пыли.

SysTexture – текстура подсистем галактики, используется для генерации процедурных объектов в Галактике. R, G и B каналы задают распределение туманностей, звёздных скоплений и голубых звёзд, соответственно.

FrontImage, SideImage – текстуры галактики/туманности во фронтальной и боковой проекциях, используются в методах “Cylindrical” и “SpiralGalaxy”. Для галактик FrontImage должна представлять собой уменьшенную до 128х128 копию FrontTexture, также с паттерном пыли в альфа-канале. SideImage может быть либо своей, либо одной из следующих стандартных боковых текстур:
S0_side.png, Sa_side.png, Sb_side.png, Sc_side.png, SBa_side.png, SBb_side.png, SBc_side.png
RGB каналы задают распределение и цвет эмиссионных спрайтов, а альфа-канал – распределение спрайтов пыли.

CubePosXImage, CubePosYImage, CubePosZImage, CubeNegXImage, CubeNegYImage, CubeNegZImage – текстуры галактики/туманности, если смотреть с 6 сторон описывающего куба. Используется в методе “CubeMap”. RGB каналы задают распределение и цвет эмиссионных спрайтов, а альфа-канал – распределение спрайтов пыли.

sumColor, clipRadius – эти параметры автоматически обновляются SpaceEngine при создании или обновлении модели. Используется для туманностей. Когда вы создаёте новую модель, необходимо добавить эти параметры в скрипт, с любыми числами в качестве начальных значений, например:
sumColor (1 1 1) – усреднённый цвет модели,
clipRadius 1 – радиус ограничивающей сферы;

Примечание: все следующие параметры имеют одинаковый смысл для спрайтов звёздного диска галактики или эмиссионных спрайтов туманности (префикс em), пылевых спрайтов (префикс abs), и спрайтов балджа галактики (префикс b). Для краткости опишем только параметры эмиссионных спрайтов.

emParticleColor – цвет спрайтов, модулирует цвет пикселей, задаваемый текстурами. Для спрайтов пыли задаёт величину поглощения света в данном канале. Хорошие значения: absParticleColor (0.0 0.3 0.5). Это означает, грубо говоря, что спрайт поглощает 50% проходящего света в синем канале, 30% в зелёном и 0% в красном.

emDetailR, emDetailZ – уровень детализации спрайтовой модели по радиусу и по оси Z:
2.0 – 128 спрайтов,
1.0 – 64 спрайтов,
0.5 – 32 спрайтов, и т.д.
Примечание: установка большой детализации может очень существенно ударить по производительности рендеринга!

emParticleDispR, emParticleDispZ – величина случайного смещения спрайта от прямоугольной сетки, по радиусу и по оси Z:
1.0 – ширина ячейки,
0.5 – половина ширины ячейки,
0.0 – нет смещения, и т.д.
Используется для уменьшения эффекта сетки на модели.

emParticleSizeCenter, emParticleSizeEdge – размер спрайт в центре и на краю модели:
1.0 – диаметр спрайтов равен ширине ячейки,
2.0 – диаметр спрайтов в 2 раза больше, чем ширина ячейки, и т.д.
Размер спрайтов линейно интерполируется от центра к краю.

emParticleMinBrightCenter, emParticleMinBrightEdge – минимальная яркость генерируемого спрайта, при которой он включается в модель (в центре и на краю модели). Линейно интерполируется от центра к краю. Если значение в карте плотности, построенной с использованием текстур или процедурных шумов меньше этого значения, то спрайт в этой ячейке пропускается. Используется для оптимизации – исключения очень тёмных и чёрных (невидимых) спрайтов.

emParticleBrightnessCenter, emParticleBrightnessEdge – яркость спрайтов в центре и на краю модели. Линейно интерполируется от центра к краю.

emNoiseRandomize … emNoiseOffset – параметры фрактальной функции шума (distorted fBm), которая используется в методе генерации “Diffuse” (неправильные галактики и туманности):
emNoiseRandomize – “семя” генератора,
emNoiseFreq – частота шума,
emNoiseOctaves – количество октав шума,
emNoiseDistort – амплитуда искажений,
emNoiseLacunarity – лакунарность (гетерогенность),
emNoiseH – параметр H,
emNoiseOffset – сдвиг.

Обновление модели “на лету”

При первом приближении к созданной галактике, SpaceEngine создаст спрайтовую модель, используя данные из скрипта и текстуры, указанные в нём. Созданная модель сохраняется в специальном двоичном файле в папку кэша cache/model/galaxies/*.gm (для галактик) или cache/model/nebulae/*.nm (для туманностей). Имя файла в кэше совпадает с именем модели в скрипте. При следующем запуске SpaceEngine он будет загружать этот кэшированный файл, вместо того, чтобы генерировать модель заново (что было бы гораздо медленнее). Если удалить файл модели из кэша, он будет сгенерирован снова.

Вы можете изменить скрипт и текстуры модели во время работы SpaceEngine и обновлять модель “на лету”. Для этого следует выбрать галактику или туманность, которую нужно изменить, переключиться в режим редактирования (нажать клавишу [*] дважды) и нажать [Ctrl]+[Shift]+[F5]. Модель выбранной галактики или туманности будет обновлена и сохранена в кэш.

Если при создании или обновлении модели возникают какие-то ошибки и модель галактики/туманность исчезает в SpaceEngine, вероятно, нужно будет удалить модель из кэша вручную и перезапустить SpaceEngine.

Создание текстуры

Давайте взглянем, например, на текстуры галактики M 51. Они сделаны на основе фотографий этой галактики, полученных космическим телескопом “Хаббл” (вроде этой). Ниже приведено краткое описание шагов, необходимых для изготовления хороших текстуры галактик для SpaceEngine. Текстуры туманностей делаются аналогичным образом.

1) Первый шаг – кадрирование, центрирование и изменение размера изображения до ближайшей степени двойки. Сделайте его квадратным со стороной 512, 1024, 2048, 4096 пикселей. Чем выше разрешение, тем лучше (предел – 4096). Отцентрируйте и отмасштабируйте изображение так, чтобы галактика почти полностью заполнена его. Должно быть минимум неиспользуемого пространства по краям, а центр текстуры должен совпадать с центром галактики. Если галактика видна на фото немного под углом, растяните изображение таким образом, чтобы она стала круглой (конечно если реальная форма галактики округлая).

2) Следующий шаг – удаление фоновых звёзд (которых на фото этой галактики почти нет, но это не значит, что все галактики будут такие “чистые”). В Photoshop одним из инструментов для удаления звёзд может быть Filter -> Noise -> Dust & Scratches. Другой возможный способ: скопировать исходный слой дважды, размыть верхний слой (Filter -> Gauss blur, или Filter -> Box blur), и применить режим смешивания Difference ко второму слою. Это выделит мелкие детали – звёзды. Затем нужно объединить два верхних слоя и установить режим смешивания Difference для объединённого слоя. Это вычтет мелкие детали из нижнего (исходного) слоя. С помощью инструмента Image -> Adjustments -> Levels можно поднять уровень чёрного верхнего слоя для более точного вычитания звёзд. Самые яркие звёзды лучше удалить вручную путём копирования соседних участков изображения (например, с помощью Clone Stamp Tool). После удаления звёзд может остаться некоторый шум, который можно сгладить, например, пройдясь по изображению с инструментом Blur, оставляя детали там, где они должны быть (пыль и туманности), но сглаживания шум от удалённых звёзд.

3) Увеличьте контрастность изображения, и сделайте, чтобы оно плавно переходило в чёрный цвет по краям, иначе края текстуры будут очень заметны в SpaceEngine. Вот пример того, что должно получиться (нажмите, чтобы увеличить):

4) Следующий шаг заключается в выделении паттерна межзвёздной пыли и копировании его в альфа-канал. Пыль – это коричневатые полосы, видимые на спиральных рукавах галактики. Недалеко от центра вы можете увидеть, как они постепенно исчезают в желтоватом “тумане” – балдже галактики. Выделите пыль, как выделяли звёзды, либо с помощью инструмента Select -> Color Range. Создайте альфа-канал и скопируйте выделенную пыль туда. Яркие области в альфа-канале должны соответствовать пыли в галактике, поэтому изображение нужно инвертировать. Вот пример того, должно получиться в альфа-канале (нажмите, чтобы увеличить):

5) Создайте маленькую версию этой текстуры, просто уменьшив её до размера 128 x 128. Она используется в качестве “LOD 0”, когда галактика далеко, а также для создания 3D модели. Примечание: Photoshop любит оставлять тонкую серую рамку вокруг изображения при уменьшении. Поэтому обязательно удалите её ластиком или другим способом. Посмотрите на пример маленькой текстуры ниже: её альфа-канал имеет заметную рамку. Если не удалить её, эти серые пиксели могут привести к генерации ненужных спрайтов в 3D-модели.

6) Теперь пришло время сделать текстуру подсистем. Создайте новый документ (изображение) с теми же размерами, как у (большой) фронтальной текстуры. Скопируйте RGB изображение фронтальной текстуры в этот новый документ. Текстура подсистем – это шаблон, который используется для генерации процедурных диффузных туманностей (красный канал), рассеянных звёздных скоплений (зелёный канал) и молодых голубых звёзд (синий канал). Она легко может быть сделана путём регулировки уровней/контрастности в каждом из цветовых каналов по отдельности. Кроме того, необходимо стереть ядро галактики – там не должно генерироваться никаких туманностей, звёздных скоплений, и голубых звёзд. Можно использовать ручной инструмент Burn and Dodge для усиления областей звёздообразования (в синем канале) и туманностей (в красном канале). Если туманности не очень хорошо видны на изображении галактики, можно скопировать карту распределения пыли в красный канал (туманности обычно появляются вблизи облаков пыли). Вот пример того, что вы должны достичь что должно получиться (нажмите, чтобы увеличить):

7) Сохраните файлы. Рекомендуется сохранять фронтальную текстуру и её маленькую версию в формат альфа-PNG. Примечание: Photoshop не может сохранять PNG с альфа-каналом, так что лучше сначала сохраните текстуры в формат TGA, а затем преобразуйте их в PNG с помощью SpaceEngine. В SpaceEngine есть возможность преобразовывать любую текстуру в любой поддерживаемый формат с правильным сохранением альфа-канала. Чтобы это сделать, запустите SpaceEngine, откройте консоль с помощью клавиши [~] и введите там:
SavePNG addons/textures/galaxies/MyGalaxy.tga
где MyGalaxy.tga – имя файла текстуры, которую требуется преобразовать. Эта команда загрузит текстуру MyGalaxy.tga и сохранит её с именем MyGalaxy.png в ту же папку. Есть команды для преобразования во все другие поддерживаемые форматы: SaveJPG, SaveDDS, SaveTGA, SavePNG, SaveTIF.
Текстура подсистем может быть сохранена в любом формат, в том числе JPEG, потому что в ней нет альфа-канала.

8) Можно редактировать скрипт модели и её текстуры во время работы SpaceEngine и обновлять модель “на лету”. Для этого выберите галактику/туманность, которую вы редактируете, перейдите в режим редактирования (нажмите клавишу [*] дважды) и нажмите [Ctrl]+[Shift]+[F5]. Модель объекта, который в данный момент выбран, обновится.

Хорошие фотографии галактик могут быть взяты с сайта космического телескопа им. Хаббла. Выбирайте фотографии, которые содержат галактику целиком, и были сняты в видимом диапазоне (в естественном цвете). Лучше качать фотографии в формате TIFF без сжатия, так что на них не будет артефактов от JPEG сжатия.