Создание звезд

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

Большинство звёзд в стандартной установке SpaceEngine хранятся в csv-файле data/catalogs/Catalogs0980.pak/stars/HIPPARCOS.csv - это звёздный каталог HIPPARCOS, содержащий около 110 000 звёзд. Другие звёзды, в том числе двойные системы, хранятся в нескольких sc-файлах в том же системном pak-файле. Эти системные файлы не должны редактироваться или изменяться каким-либо образом. Если вы хотите обновить звезду, удалить или добавить новую, создайте свой собственный sc или csv файл в папке addons/catalogs/stars/. SpaceEngine поддерживает функции для изменения и удаления звёзд и любых других объектов из стандартных каталогов, а так же для добавления новых.

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

Каталог звёзд

Допустим, вы хотите создать новую одиночную звезду с именем "Mono", чёрную дыру с аккреционным диском "Hole", и двойную звёздную систему "Bin", с компонентами "Bin А" и "Bin B". Допустим также, что звёзды "Bin А" и "Bin B" уже были описаны в каком-то каталоге как одиночные звёзды, и вы хотите удалить их, чтобы создать нормальную двойную звезду с орбитами каждого компонента. Перейдите в папку addons/catalogs/stars/ (создайте её, если она не существует) и создайте в ней новый текстовый документ. Переименуйте его в mystars.sc (имя файла не имеет значения, но убедитесь, что он не совпадает с каким-то существующим файлом, иначе ваш файл перекроет его). Откройте файл в блокноте и введите такой код:

Code

// Создать новый объект - одиночную звезду.
Star    "Mono"
{

RA       16 10 45 // прямое восхождение
Dec     -25 12 11 // склонение
Dist     100.0    // расстояние от Солнца
Class   "G5V"     // спектральный класс
Lum      0.86     // светимость, или
//AbsMagn  5.31   // абсолютная звёздная величина, или
//AppMagn  10.31  // визуальная звёздная величина
RadSol  0.95      // радиус в радиусах Солнца
MassSol 0.91      // масса в массах Солнца
Teff    5200      // температура поверхности в Кельвинах

}

// Создать новый объект - одиночную звезду (чёрную дыру) с дополнительными
// параметрами (аккреционный диск) в каталоге планет. Заметим, что
// имя звезды здесь - "Hole system", почему - см. ниже.
StarBarycenter    "Hole system"
{

RA       09 31 14 // прямое восхождение
Dec      64 16 38 // склонение
Dist     250.0    // расстояние от Солнца
Class   "X"       // спектральный класс - чёрная дыра
Lum      150      // светимость всей системы (включая аккреционный диск)

// Это всё, аккреционный диск будет описан в каталоге планет (см. ниже).

}

// Удалить одиночные звёзды из предыдущих каталогов
Remove "Bin A"
Remove "Bin B"

// Создать новый объект - барицентр двойной звёздной системы,
// компоненты которой будут описаны в каталоге планет (см. ниже).
StarBarycenter    "Bin"
{

RA       19 50 18 // прямое восхождение
Dec      28 18 47 // склонение
Dist     251.652  // расстояние от Солнца

// Это всё, тег StarBarycenter не может содержать другие параметры (см. ниже).

}

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

Чтобы удалить звезду из каталога, используйте параметр Remove или RemoveStar с именем этой звезды. Это полезно для замены двойных звёзд в стандартных каталогах SE, которые представлены в них как две одиночные звезды, на полноценную двойную звёздную систему с каждым компонентом на своей орбите. Примечание: параметр Remove влияет на все файлы каталогов, несмотря на их дату модификации. Это баг в текущей версии (0.9.8.0).

Обратите внимание, что компоненты двойной или кратной звёздной системы нельзя описать в звёздном каталоге, это делается в каталоге планет (см. ниже). Так что, строго говоря, звёздные каталоги в SE являются каталогами звёздных систем, а не самих звёзд (хотя они и позволяют описывать одиночные звёзды, не создавая каталоги планет для них). Визуальные параметры, такие как суммарная светимость системы, рассчитываются SpaceEngine автоматически на основе данных о компонентах системы, описанных в каталоге планет. Хотя они могут быть явно указаны в теге StarBarycenter с помощью параметров Luminosity, AppMagn и т.д.

Параметры скрипта звезды

Ниже описаны параметры, которые могут быть использованы в тегах Star и StarBarycenter.

RA - прямое восхождение в часах, в десятичном формате или в формате ЧЧ MM СС.ссс
Dec - склонение в градусах, в десятичном формате или в формате ГГ ММ СС.ссс
Dist - расстояние от Солнца в парсеках.

CenterOf - используется для замены процедурной сверхмассивной чёрной дыры в центре галактики или шарового звёздного скопления. Значением параметра является имя галактики или скопления, например, CenterOf "Milky Way". В галактике или скоплении может быть только одна центральная сверхмассивная чёрная дыра. Если она уже описана в каком-то каталоге, то оно будет заменена/обновлена вашим скриптом. Процедурная сверхмассивная чёрная дыра в соответствующем объекте будет отключена, а описанная в каталоге будет отображаться как обычная звёздная система. Поэтому по-прежнему необходимо указать параметры RA, Dec и Dist. Типичная система сверхмассивной чёрной дыры должна содержать чёрную дыру (возможно, с аккреционным диском) и несколько звёзд, вращающихся вокруг неё. Все они должны быть описаны в каталоге планет, звёздный каталог содержит только координаты системы и её спектральный класс - Class "X" или Class "BLACKHOLE".

NoPlanets - отключить генерацию процедурных планет, если он указано как NoPlanets true.

Lum, Luminosity, AppMagn, AbsMagn - можно использовать как один из этих параметров, так и их комбинацию (см звёздный калькулятор ниже):
Lum, Luminosity - светимость звезды в единицах светимости Солнца, или
AppMagn - визуальная (оптическая) величина звезды, или
AbsMagn - абсолютная (оптическая) величина звезды.
Дополнительно: AppMagnR, AppMagnr, AppMagnI, AppMagni, AppMagnJ, AppMagnH, AppMagnKs, AppMagnK, AppMagnW1, AppMagnW2, AppMagnW3 - визуальная величина звезды в соответствующей спектроскопической полосе. Используйте их только для коричневых карликов, если их визуальная величина в оптическом диапазоне неизвестна. SpaceEngine выполняет простое вычисление оптической визуальной величины, предполагая, что звезда является коричневым карликом или поздним M-карликом. Не используйте эти параметры для других классов звёзд.

Class - Строка со спектральным классом звезды:
Нормальные звёзды: O, B, A, F, G, K, M
Субкарлики: sdO, sdB, sdA, sdF, sdG, sdK, sdM (или O, B, A, F, G, K, M с классом светимости VI)
Коричневые карлики: L, T, Y
Белые карлики: DA, DB, DO, DQ, DZ, DC, DX, DAB, DAO, DAZ, DBZ или WD (общий класс)
Звёзды Вольфа-Райе: WN, WN/C, WC, WO
Циркониевые и углеродные звёзды: MS, S, SC, C-R, C-N, C-J, C-H, C-Hd, C, R, N
Специальные классы: Q, NEUTRON - нейтронная звезда, X, BLACKHOLE - чёрная дыра, Z, WORMHOLE - червоточина, P - планемо (блуждающая планета)
Все классы, перечисленные выше, могут иметь индекс подкласса - число от 0 до 9 в десятичном формате (от 0 до 11 для звёзд Вольфа-Райе). В SpaceEngine используется только один десятичный знак, т.е. 3.25 будет округлено до 3.2.
Все классы, кроме белых карликов, могут иметь индекс класса светимости: 0, Ia0, Ia+, Ia, Iab, Ib, II, III, IV, V, VI
Примеры: Class "G2V", Class "M5.2III", Class "DB3.1", Class "sdB5" (то де самое, что Class "B5VI" ).
Допускается использование пробела: Class "G2 V", Class "M5.2 III", Class "DB 3.1".
Индексы подкласса и светимость могут быть опущены: Class "G2", Class "M III", Class "K". В этом случае SpaceEngine попытается вычислить их на основе имеющихся данных (светимость или визуальная величина и расстояние, и т.д., см. звёздный калькулятор), либо присвоит класс светимости по умолчанию "V" (звезда Главной последовательности).

Mass - масса звезды в единицах массы Земли, или
MassSol - масса звезды в единицах массы Солнца. Имеет смысл только для одиночных звёзд (тег Star). Если указывается в теге StarBarycenter, эта информация может быть использована в звёздном калькуляторе (см ниже).

Radius - радиус звезды в километрах, или
RadSol, RadiusSol - радиус звезды в единицах радиуса Солнца. Имеет смысл только для одиночных звёзд (тег Star). Если указывается в теге StarBarycenter, эта информация может быть использована в звёздном калькуляторе (см ниже).

Teff, Temperature - температура фотосферы ("поверхности") звезды в Кельвинах. Имеет смысл только для одиночных звёзд (тег Star). Если указывается в теге StarBarycenter, эта информация может быть использована в звёздном калькуляторе (см ниже).

FeH - металличность звезды. Не используется на данный момент, но будет использоваться в будущем, так что стоит добавлять её в каталог уже сейчас, если есть такая возможность.

Можно включить лог звёздного калькулятора, чтобы обнаружить ошибки в каталоге звёзд (см. Звёздный калькулятор и Проверка ошибок в Введение в скрипты SE).

Каталог планет

Давайте продолжим наш пример создания аддона. Звезда "Mono" не должна быть описана в каталоге планет, все нужная информация уже содержится в каталоге звёзд. В каталоге планет должна быть описана чёрная дыра "Hole" и компоненты двойной звёздной системы "Bin": "Bin A" и "Bin B". Перейдите в папку addons/catalogs/planets/ (создайте её, если она не существует) и создйте в ней новый текстовый документ. Переименуйте его в myplans.sc (как было отмечено в разделе "каталог звёзд", имя файла не имеет значения, но убедитесь, что оно не совпадает с каким-то уже существующим файлом, в противном случае ваш файл перекроет его). Откройте его в блокноте и введите такой код:

Code

// Создать новый объект - одиночную чёрную дыру с аккреционным диском
Star    "Hole"
{

ParentBody      "Hole system" // = имя соответствующего StarBarycenter в каталоге звёзд
Class           "X"     // "спектральный класс" чёрной дыры
MassSol         15.0    // масса в солнечных массах, радиус будет вычислен автоматически
// Lum          0.0     // сама чёрная дыра имеет нулевую светимость - просто не указываем её здесь

// параметры осевого вращения
Obliquity       16
EqAscNode       64
RotationPeriod  1.0e-7  // чёрные дыры вращаются очень быстро!

// аккреционный диск
AccretionDisk
{

Radius      0.00002 // в а.е.
Temperature 3000    // в Кельвинах
Luminosity  150     // в светимостях Солнца
Brightness  1       // яркость рендера модели
Density     8       // некое магическое число
TwistMagn   60      // некое магическое число

}

// тег Orbit опущен, это означает, что звезда должна быть помещена в центр системы

}

// Создать новый объект - первый компонент двойной звезды
Star    "Bin A"
{

ParentBody      "Bin"   // = имя соответствующего StarBarycenter в каталоге звёзд
Class           "G1V"
Luminosity      1.02
MassSol         1.09
RadiusSol       1.1

// параметры осевого вращения
Obliquity       82.2
EqAscendNode    67.726
RotationPeriod  923.6
RotationOffset  64.7

// орбита вокруг барицентра
Orbit
{

// взаимная большая полуось орбиты 23.52 а.е.,
// но принято во внимание отношение масс 1.09:0.92
SemiMajorAxis   10.765 // в а.е.
Period          79.914 // в годах
Eccentricity    0.5179
Inclination     82.986
AscendingNode   67.726
ArgOfPericenter 3.772
MeanAnomaly     200.119

}

}

// Создать новый объект - второй компонент двойной звезды
Star    "Bin B"
{

ParentBody      "Bin"   // = имя соответствующего StarBarycenter в каталоге звёзд
Class           "K0V"
Luminosity      0.29
MassSol         0.92
RadSol          0.90

// параметры осевого вращения
Obliquity       82.6
EqAscendNode    67.726
RotationPeriod  850.5
RotationOffset  127.4

// орбита вокруг барицентра
Orbit
{

// взаимная большая полуось орбиты 23.52 а.е.,
// но принято во внимание отношение масс 1.09:0.92
SemiMajorAxis   12.755 // в а.е.
Period          79.914 // в годах
Eccentricity    0.5179
Inclination     82.986
AscendingNode   67.726
ArgOfPericenter 183.772
MeanAnomaly     200.119

}

}

Рассмотрим подробнее этот скрипт. Он называется "каталог планет", потому что в первую очередь предназначен для описания планет и лун. Но "тело" звезды само по себе, особенно в двойных системах, также описывается здесь. Есть общее правило: любой объект, имеющий орбиту, должен быть описан в каталоге планет. Компоненты двойной звезды имеют орбиты, так что они должны находиться в каталоге планет. Он также позволяет описать гораздо больше параметров, чем каталог звёзд (параметры осевого вращения, аккреционный диск, корона, текстуры поверхности и орбита), поэтому даже одиночные звёзды, такие как Солнце, также могут быть описаны в каталоге планет. Чтобы узнать больше о параметрах, используемых в каталоге планет, а также о создании самих планет, читайте руководство Создание планет.

В вышеприведённом примере кода мы сначала описали одиночную звезду (чёрную дыру) "Hole" с дополнительными параметрами, которые не могут быть описаны в каталоге звёзд (параметры осевого вращения и аккреционный диск). Чтобы указать их, необходимо описать звезду в каталоге звёзд как StarBarycenter, несмотря на то, что звезда одиночная, и сделать второе описание в каталоге планет с помощью тега Star. Параметр ParentBody этом теге Star должен быть установлен на имя того StarBarycenter, который вы описали в каталоге звёзд. Важное примечание: теги Star в каталоге планет и StarBarycenter в каталоге звёзд должны иметь разные имена. То есть, если звезда называется "Hole", то барицентр должен иметь имя "Hole system" или "Hole bar" или что-то подобное. При создании аддона с какой-то реальной звездой, которая имеют несколько обозначений в астрономических каталогах, можно одно из обозначений дать тегу StarBarycenter, а остальные - тегу Star.

В каталоге планет также можно указать светимость звезды, абсолютную или видимую звёздную величину, спектральный класс, массу, радиус и температуру - те же параметры, что и в каталоге звёзд. Вам решать, где указывать эти параметры - в каталоге звёзд или в каталоге планет, дублировать их и там, и там, не нужно.

Тег Orbit для одиночной звезды должен быть опущен, для такой звезды SpaceEngine сгенерирует статическое положение в центре системы. Вы можете использовать Orbit { Type "Static" } или StaticPosXYZ (0 0 0) с тем же эффектом, но это необязательно.

Барицентр также используется для создания двойных и кратных звёзд. В каталоге планет мы описали две звезды "Bin А" и "Bin B" с орбитами вокруг главного барицентра системы "Bin" (см описание тега Orbit в руководстве Создание планет). Для того, чтобы создать иерархическую кратную систему, опишите вторичный барицентр (используя тег Barycenter в каталоге планет), который обращается вокруг главного барицентра системы, а затем опишите две звезды, которые обращаются вокруг него. Вы можете повторить эту схему много раз для создания более сложных систем. SpaceEngine поддерживает неограниченное число уровней иерархии объектов, но реальные звёздные системы имеют не более 3-4 уровней.

Планеты для каждой звезды или вторичного барицентра также могут быть описаны в каталоге планет. Параметр ParentBody для каждой планеты/барицентра/звезды должен указывать на имя родительского объекта, вокруг которого она обращается. Если звезда одиночная, и в каталоге планет не описано ни одного её дочернего объекта (планеты), SpaceEngine сгенерирует планетную систему процедурно. Можно запретить это, указав в скрипте звезды NoPlanets true.

Параметры звезды/барицентра в звёздном каталоге определяет внешний вид системы, когда пользователь смотрит на неё из межзвёздного пространства, то есть, когда она рендерится точкой. Для кратной звёздной системы, SpaceEngine необходим «средний» спектральный класс, чтобы правильно показывать систему издалека. Для процедурных систем, SpaceEngine выбирает спектральный класс наиболее яркой звезды системы (см. звёздный калькулятор). Это работает хорошо в большинстве случаев, так как светимость звёзд различается на много порядков. Таким образом, при создании системы нескольких звёзд, вы можете задать тот же спектральный класс в StarBarycenter (в каталоге звёзд), что и класс самой яркой звезды в системе. В противном случае SpaceEngine сделает это автоматически. Светимость StarBarycenter должна быть равна суммарной светимости всех звёзд в системе (включая светимость аккреционных дисков), или не указана вовсе - тогда звёздный калькулятор вычислит её автоматически.

Обратите внимание на эти особенности, в противном случае код не будет работать или будет работать неправильно:

1) В каталоге звёзд, описывайте звезду с помощью тега StarBarycenter, если хотите задать для неё параметры вращения, аккреционного диска и т.д., или если вы создаёте двойную/кратную систему. В этом случае вы должны также создать каталог планет и описать там звезду или компоненты кратной системы. Если вам нужна только масса, радиус и температура, или вас удовлетворяют значения, сгенерированные/вычисленные SpaceEngine, описывайте звезду с помощью тега Star бирка, не создавая для неё описание в каталоге планет.
2) Имя звезды в каталоге планет не должны совпадать с именем StarBarycenter в каталоге звёзд. Имя StarBarycenter должно быть указано в параметре ParentBody описания звезды в каталоге планет.
3) Если звезда одиночная, не используйте тег Orbit для неё, или сделайте статическую орбиту (Orbit { Type "Static" } или StaticPosXYZ (0 0 0)), так что её положение будет совпадать с барицентром.
4) Если звезда двойная, опишите в каталоге планет две звезды с именем StarBarycenter в их параметрах ParentBody, и опишите соответствующие орбиты вокруг барицентра.

Можно включить лог звёздного калькулятора, чтобы обнаружить ошибки в каталоге планет, также как и для каталога звёзд (см. Звёздный калькулятор и Проверка ошибок в Введение в скрипты SE).

Звёздный калькулятор

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

- Полные 3D координаты звезды (RA, Dec, Dist). Если данные о расстоянии не указаны, звёздный калькулятор попытается вычислить его на основе видимой и абсолютной звёздной величины (или светимости) звезды. Если RA и Dec не указаны, для них будут сгенерированы случайные значения, потому вычислить их из других данных невозможно. Для расстояния также генерируется случайное значение, если звёздный калькулятор не смог вычислить его (см о логе ошибок ниже).

- Спектральный класс звезды. Без него SpaceEngine не будет иметь ни малейшего представления, что это за звезда, и не сможет рендерить её. Звёздный калькулятор может попытаться определить спектральный класс, используя радиус, массу и температуру, если они указаны. Для кратной звёздной системы, звёздный калькулятор возьмёт спектральный класс наиболее яркой компоненты (также либо вычисленный, либо взятый из каталога планет), и присвоит его всей системе (конечно, если он не был явно указан в теге StarBarycenter).

- Яркость звезды. Она может быть вычислена по светимости или абсолютной звёздной величине, или по визуальной звёздной величине и расстоянию. Если эти данные не приведены, звёздный калькулятор может приблизительно определить светимость из спектрального класса звезды. Если даже спектральный класс не указан, звёздный калькулятор попытается вычислить светимость, используя радиус и температуру, по уравнению Стефана-Больцмана. Для кратной звёздной системы, звёздный калькулятор суммирует светимость всех компонентов, и присваивает её светимости всей системы (конечно, если светимость или абсолютная звёздная величина была явно указан в теге StarBarycenter).

- Физические свойства звезды: масса, радиус и температура. Если они не указаны, звёздный калькулятор, как правино, вычислит их на основе спектрального класса. Температура может быть получена из спектрального класса непосредственно, а радиус вычисляется на основе температуры и светимости по уравнению Стефана-Больцмана. Так что если вы столкнётесь с неправильным или нереалистичным размером звезды, попытайтесь найти реальные данные о её радиусе и указать их в каталоге.

Как уже было сказано, звёздный каталог не может использоваться для задания параметров осевого вращения звезды (т.е. периода вращения, наклона оси и сплюснутости), а также внешнего вида поверхности (текстуры, размер грануляции и т.д.), короны, аккреционного диска и орбиты. Для этого используется каталог планет. Некоторые параметры могут быть сгенерированы процедурно, если они не указаны в каталоге планет. Планеты также могут быть описаны в каталоге планет или с генерируются процедурно, но только если в каталоге планет не описано ни одного объекта из системы этой звезды, а также если в скрипте звезды не указано NoPlanets true.

Звёздный калькулятор может писать сообщения о проделанных вычислениях, предупреждения и сообщения об ошибках в лог-файл system/se.log при загрузке SpaceEngine. Подробнее о проверке ошибок в скриптах см. Введение в скрипты SE.

Формат csv для каталогов звёзд

SpaceEngine поддерживает формат csv (Comma-separated variables - значения, разделённые запятыми) для больших каталогов звёзд и галактик. Это обычный текстовый формат описанием одной звезды в каждой строке, значения параметров в ней разделены запятой. В стандартной установке SpaceEngine есть один csv-каталог звёзд - data/catalogs/Catalogs0980.pak/stars/HIPPARCOS.csv, который содержит 112 523 звёзд, и имеет размер (несжатый) всего 7.5 МБ. Формат csv более компактный, чем sc, но имеет ряд ограничений:
1) Могут быть описаны только одиночные звёзды, аналог тега StarBarycenter использовать невозможно.
2) Описываются только эти параметры: Name, RA, Dec, Dist, AppMagn, SpecClass, MassSol, RadSol, Temperature.

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

Code
Name,RA,Dec,Dist,AppMagn,SpecClass,MassSol,RadSol,Temperature
HIP 14066/HD 18665,3.02094205,36.1179219,487.804884,7.24999999,K2V,,,
HIP 14775/HD 278329,3.17876994,36.5130485,505.050497,10.1093756,K0V,,,
HIP 12888,2.76132567,32.8238759,476.190497,9.64843834,K0V,,,

Обратите внимание, что имя звезды и её спектральный класс не заключены в кавычки, а отсутствующие параметры (MassSol, RadSol и Temperature) - пустые, но запятые, разделяющие их, по-прежнему необходимы.

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