ENG Новый сайт

Расширенный поиск

[ Новые сообщения · Пользователи · Правила ]
Страница 1 из 11
Форум » SpaceEngine » Архив » ИНСТРУКЦИЯ: Добавление кораблей 0.97 (Как добавить свою модель корабля)
ИНСТРУКЦИЯ: Добавление кораблей 0.97
SpaceEngineerДата: Суббота, 15.06.2013, 21:28 | Сообщение # 1
Автор Space Engine
Группа: Администраторы
Российская Федерация
Сообщений: 5547
Награды: 54
Статус: Offline
Последнее обновление: 21 мая 2013 (версия 0.9.7.1)

Внимаение! Текстура свечения (EmisMap) и бликов (SpecMap) будут реализованы в 0.9.7.1, в текущей версии 0.9.7.0 они работать не будут! Всё остальное работает.

Модель корабля в SpaceEngine состоит из:

  • Файла модели с расширением *.sm, находящегося в папке models/spacecrafts/default/ (стандартные модели) или models/spacecrafts/addons/ (аддоны).
  • Файла скрипта материалов и других параметров модели с расширением .cfg и именем, совпадающим с именем .sm файла модели, и находящегося в той же папке.
  • Одной или нескольких текстур, находящихся в одной из подпапок папки textures/spacecrafts/default/ (стандартные текстуры) или models/spacecrafts/addons/ (аддоны). Модель может быть и без текстур.
  • Скрипта, находящемся в файлеconfig/spacecrafts.sc. Этот скрипт один на все корабли. В нём описаны различные параметры корабля, ссылки на модель, а также сохраняются координаты и скорость корабля при выходе из игры.

    Сначала опишу формат скрипта, это понадобится для дальнейшего понимания.

    Скрипт корабля

    Для добавления нового корабля откройте в блокноте файл config/spacecrafts.sc и наберите код типа приведённого ниже. Самый простой способ - скопировать один из уже существующих там скриптов кораблей, а затем изнемть нужные параметры. Обычно всё что требуется - изменить имя, размер и массу корабля, а также ссылку на модель.

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

    Код

    Spacecraft  "SHW-X"  // Имя корабля
    {
        Class   "Starship"    // Класс (отображается в инфо о корабле в SE)
        Length   516.504    // Длина (в метрах)
        Mass     2.2e11  // Масса (в кг)
        Unit     1.0  // длина юнита, использовавшегося в редакторе (в метрах)

        Model   "Default/SHW-X.cfg"    // путь к скрипту модели корабля (в папке models/spacecrafts/)

        Color  ( 1.00, 1.00, 1.00 )    // цвет частицы, которая рисуется вместо модели, когда корабль далеко
        Albedo   0.07    // альбедо (влияет на яркость частицы)
        Exposure 3.0    // экспозиция (яркость модели при рендере)

        // ID системы, в которой находится корабль:
        CurSystemID "-1.-1.-1.-1.-1.-1.-1.-1.73568.-1"

        // абсолютные координаты корабля:
        UnivPos     (-00000000000000006B311C1B1171DF1E, -00000000000000012B594A135111D87A, -0000000000000000801D958E64F79275)
           
        // кватернион ориентации корабля:
        Orientation ( 4.372458102572852e-001, -2.635311454258399e-001, 5.414986945934603e-001, 6.679420637724303e-001 )
           
        // вектор скорости корабля:
        Velocity    ( -6.467827617104238e-001, 1.435022437905325e+000, 6.953008028984461e-001 )
           
        // вектор угловой скорости (скорости вращения) корабля:
        AngVelocity ( 0.000000000000000e+000, 0.000000000000000e+000, 0.000000000000000e+000 )

        // "парковочная орбита" (пока не используется)
        Orbit
        {
       Period          1.71119e-4
       SemiMajorAxis   4.927139e-5
       Eccentricity    0.0
       Inclination     0.0
       MeanAnomaly     135.27
       AscendingNode   125.08
       ArgOfPericen    318.14
        }
    }


    Class
    Класс корабля - отображается в инфо о корабле в SpaceEngine. Допустимые классы:
    "Probe" - зонд
    "Shuttle" - шаттл
    "Starship" - звездолёт
    "Planetship" - межпланетный корабль
    "Station" - станция

    Length, Unit
    Длина корабля в метрах или длина юнита 3D редактора. Если указана длина юнита, длина корабля вычисляется и автоматически сохраняется в скрипт в параметр Length. Если длина юнита неизвестна, нужно просто указать приблизительную длину корабля в параметре Length (а параметр Unit не использовать).

    Model
    Путь к скрипту модели корабля относительно папки models/spacecrafts/

    Color
    RGB цвет частицы, которая рисуется вместо модели, когда корабль находится далеко.

    Albedo
    Среднее альбедо (отражательная способность) корабля. Влияет на яркость частицы.

    Exposure
    Экспозиция, применяется для всех материалов корабля. Задаёт общую яркость модели.

    CurSystemID, UnivPos, Orientation, Velocity, AngVelocity, Orbit
    Эти параметры перезаписываются при выходе из SpaceEngine. Их можно не менять, но заданы они должны быть.

    Бинарный формат модели *.sm

    SE имеет свой бинарный формат модели *.sm. Ниже приведена техинческая информация о структуре формата для тех, кто хочет сделать свой конвертер или редактор.



    Импорт модели из формата *.obj

    SpaceEngine поддерживает импорт модели из формата *.obj с автоматической конвертацией в формат *.sm. Для импорта модели надо сохранить её из вашего 3D редактора в формат *.obj с библиотекй материалов *.mtl (опционально) и поместить эти файлы в папку models/spacecrafts/addons/. Имена обоих файлов должны совпадать. При экспорте модели в *.obj в настройках 3D редактора необходимо выбрать экспорт треугольниками (triangles), а также поставить галочки - сохранять вершины (vertex), нормали (noramls) и текстурные координаты (texture coordinates), и создавать библиотеку материалов (Create mat-library).



    При экспорте должно получиться два файла - с расширениями *.obj (геометрия модели) и *.mtl (библиотека материалов, текстовый файл с описанием).

    После того, как будет добавлен скрипт корабля (см. выше), надо просто запустить SpaceEngine - он загрузит файлы *.obj и *.mtl и автоматически создаст файлы *.sm и *.cfg в той же папке. После этого файлы *.obj и *.mtl можно удалить. В зависимости от количества полигонов, загрузка *.obj может длиться довольно долго. Если надо обновить модель на новую версию, просто удалите *.sm и скопируйте в папку новый *.obj.

    Если библиотеки материалов *.mtl нет или она не была экспортирована, SpaceEngine всё равно создаст файл *.cfg, но он будет содержать лишь параметр MeshEulerAngles, без описания материалов. Их надо будет добавить вручную.

    Формат скрипта материалов *.cfg

    В начале скрипта идёт параметр, не имеющий отношения к материалам:

    MeshEulerAngles (180.000000 270.000000 90.000000)
    Это эйлеровы углы ориентации модели. Если корабль в SpaceEngine летит хвостом вперёд или лежит на боку, нужно правильно задать эти углы. Они могут быть установлены в режиме редактирования в SpaceEngine (два раза нажать кнопку *) с помощью стерлок и кнопок < и > (шаг изменения угла - 90°, с зажатым Shift - 1°). При редактировании изменения не сохраняются, углы надо переписать в скрипт вручную с показанй на экране.

    После этого идёт один или несколько тэгов Material, содержащих описание материалов:

    Код

    Material    "Default"
    {
               DiffMap        "Default/SHW-diff-transp-2.*"
               NormMap        "Default/SHW-norm-2.*"
               SpecMap        "Default/SHW-spec-2.*"
               EmisMap        "Default/SHW-emis-2.*"
               DetDiffMap     "Default/Detail-blocks-bump.*"
               DetBumpMap     "Default/Detail-blocks-diff.*"
               DetDiffScale    8.0
               DetBumpScale    8.0
               DetBumpHeight   0.3
               DiffMapAlpha   "Transp"
               TwoSided        true
               DiffColor      (1.000 1.000 1.000)
               SpecColor      (2.000 2.000 2.000)
               SpecPower       0.0
               EmisColor      (1.000 1.000 1.000)
               EmisBright      0.5
    }


    SpaceEngine поддерживает модель, состоящую из нескольких мешей. Каждому мешу назначается один материал, содержащий от 0 до 6 текстур, и тэга Material, описывающего способы использования этих текстур (если текстуры не назначены, тогда меш будет просто закрашен равномерным цветом). Тэги материалов в файле *.cfg идут в том порядке, в котором они использовались в *.obj. Почти все параметры тэга материала аналогичны параметрам из библиотеки *.mtl.

    Описание параметров:

    Material "Default" - заголовок тэга, "Default" - это имя материала. Имя может быть любым, оно не используется в SpaceEngine. При импорте из *.obj + *.mtl имя материала будет таким же, как в *.mtl, для удобства идентификации материала.

    DiffMap
    Текстура цвета, RGB или RGBA (если есть альфа канал, он интерпретируется как яркость блика или прозрачность, см. параметр DiffMapAlpha).

    BumpMap
    Текстура высот, Grayscale или RGB (лучше первое). Если указана только эта текстура, текстура нормалей генерируется по ней автоматически, используя параметр BumpHeight (см. ниже).

    NormMap
    Текстура нормалей в tangent space, RGB. Если указана эта текстура, то параметры BumpMap и BumpHeight игнорируются.

    SpecMap
    Текстура отражательной способности (specular), RGB или RGBA. Компоненты RGB задают цвет блика. Если есть альфа-канал, он интерпретируется как размер (экспонента) блика, таким образом можно задавать свой размер для каждого пикселя. Целочисельное значение альфы от 0 до 255 суммируется со значением параметра SpecPower. Таким образом, если вы хотите использовать только альфа канал, необходимо установить SpecPower 0.

    EmisMap
    Текстура свечения, RGB или RGBA. Альфа-канал пока не используется.

    DetailDiffMap
    Детальная диффузная текстура, т.е. мелкий цветной узор. Наносится на всю модель с повторениями, поэтому должна быть зациклена. Формат аналогичен DiffMap.

    DetailBumpMap
    Детальная карта высот, т.е. мелкие неровности поверхности. Наносится на всю модель с повторениями, поэтому должна быть зациклена. Формат аналогичен BumpMap.

    DetDiffScale, DetBumpScale
    Масштаб (частота) детальных текстур цвета и бампа.

    BumpHeight, DetBumpHeight
    Амплитуда (высота) бампа и детального бампа.

    DiffMapAlpha
    Способ интерпретации альфа-канала текстуры DiffMap, если он есть:

    • "None" - альфа-канал игнорируется
    • "Spec" - в альфа-канале задаётся яркость блика (specular). Она умножается на SpecColor. Если присутствует текстура SpecMap, то этот эффект блика складывается с эффектом от SpecMap.
    • "Transp" - в альфа-канале задаётся прозрачность. Если альфа меньше 0.5 (или 128 в целых единицах от 0 до 255), то пиксель отбрасывается и в этом месте в поверхности модели будет дырка. Используется для создания решётчатых/ферменных конструкций при минимуме полигонов (см. параметр TwoSided).


    TwoSided
    Если установлен в true, материал считается двухсторонним, отсечение нелицевых граней отключается. Таким образом внутренние (обратные) поверхности меша будут рендериться. Если вы создаёте ферменную конструкцию, используя DiffMapAlpha "Transp", необходимо использовать и этот параметр, иначе внутренние поверхности ферм не будут видны. При этом текстуры внешней и внутренней поверхностей совпадают. Другой вариант создания ферменных конструкций с разными текстурами на внешней и внутренней поверхности - дублирование геометрии, но с обратными нормалями и другими текстурными координатами (или другим материалом) для внутренней поверхности. При этом прозрачность должна быть включена (DiffMapAlpha "Transp"), а двусторонний материал отключен (параметр TwoSided не указывается).

    DiffColor
    Цвета диффузной компоненты. Если текстура DiffMap не назначена или ещё не загрузились, меш рисуется этим цветом.

    SpecColor
    Цвета блика. Если текстура SpecMap не назначена или ещё не загрузились, блик на меше рисуется этим цветом. Компоненты SpecColor могут быть больше 1.0, тогда блик будет ярким, с эффектом сияния (если в настройках графики включено HDR/Bloom).

    SpecPower
    Размер (экспонента) блика. Суммируется со значением альфа-канала пикселей текстуры SpecMap, если она есть.

    EmisColor
    Цвета свечения, при рендере цвет пикселей из текстуры свечения EmisMap умножаются на этот цвет. Если текстура свечения не назначена или ещё не загрузились, эффект свечения не рисуется. Компоненты EmisColor могут быть больше 1.0, тогда свечение будет ярким, с эффектом сияния (если в настройках графики включено HDR/Bloom).

    EmisBright
    Множитель для яркости эффекта свечения. Может быть больше 1.0, тогда свечение будет ярким, с эффектом сияния (если в настройках графики включено HDR/Bloom).

    Пути к текстурам в *.cfg и/или *.mtl должны быть указаны относительно папки textures/spacecrafts/. Т.е. если вы хотите, чтобы все текстуры вашей модели находились по адресу textuers/spacecrafts/Addons/MyShip/, нужно указывать имя текстуры в виде DiffMap "Addons/Myship/texture.jpg". Допустимо использовать автовыбор формата, т.е. указание DiffMap "Addons/Myship/texture.*" заставит SpaceEngine загрузить текстуру в одном из поддерживаемых форматов, в таком порядке приоритета: dds, png, jpg, tif, tga.

    В версии 0.9.7.1 желательно размещать текстуры новых кораблей (аддонов) в папке textuers/spacecrafts/Addons/, а модели - в папке models/spacecrafts/Addons/. Папки textuers/spacecrafts/Default/ и models/spacecrafts/Default/ зарезервированы для стандартных текстур и моделей кораблей. Ваши корабли могут использовать стандартные текстуры из папки textuers/spacecrafts/Default/, например - детальные текстуры.

    Текстуры лучше сохранять в формате PNG или DDS (поддерживается DDS со сжатием DXT1, DXT3, DXT5, LATC1 и LATC2). Но помните, что фотошоп странно сохраняет PNG текстуры с альфа каналом - зачем-то умножает RGB на альфу и сохраняет как RGB. Чтобы это обойти, сохраняйте RGBA текстуры в формат TGA, и затем преобразуйте их в правильный PNG с помощью SpaceEngine. Для этого надо в консоли набрать команду:

    SavePNG имя_текстуры.tga.
  • AtillaДата: Пятница, 21.06.2013, 01:01 | Сообщение # 2
    Космический пилот
    Группа: Пользователи
    Украина
    Сообщений: 140
    Награды: 0
    Статус: Offline
    подскажите что делаю не так. кидаю как и раньше модель в obj и mtl, создает sm (модель в spaceengine отображается) но файла cfg не создает. хотя вроде должнет.
    (автоматически создаст файлы *.sm и *.cfg в той же папке.)

    не пойму где править текстуры
    SpaceEngineerДата: Пятница, 21.06.2013, 17:41 | Сообщение # 3
    Автор Space Engine
    Группа: Администраторы
    Российская Федерация
    Сообщений: 5547
    Награды: 54
    Статус: Offline
    Если не создаёт, создайте сами с одним только параметром MeshEulerAngles, и повторите импорт (удалите sm).

    Dizel777Дата: Понедельник, 12.08.2013, 12:20 | Сообщение # 4
    Строитель Миров
    Группа: Модераторы
    Российская Федерация
    Сообщений: 800
    Награды: 4
    Статус: Offline
    Оставлю здесь...



    Win 7 Ultimate 64-bit SP1
    AMD Phenom II X4 945 Processor
    4GB RAM, NVIDIA GeForce GTS 250
    JaegerДата: Пятница, 23.08.2013, 13:32 | Сообщение # 5
    Нет аватара
    Космический турист
    Группа: Пользователи
    Российская Федерация
    Сообщений: 38
    Награды: 0
    Статус: Offline
    По поводу размеров корабля, даже если в 3д редакторе он не того размера, то параметром можно установить чёткий размер?

    Как добавить эффект двигателей?


    Если кто-то светится, это не значит что он святой, может быть он радиоактивный.

    Сообщение отредактировал Jaeger - Пятница, 23.08.2013, 15:07
    KludДата: Среда, 28.08.2013, 22:03 | Сообщение # 6
    Космический пилот
    Группа: Пользователи
    Российская Федерация
    Сообщений: 117
    Награды: 4
    Статус: Offline
    Цитата (Jaeger)
    параметром можно установить чёткий размер?


    Можно. В файле \SpaceEngine 0.97\config\spacecrafts.cfg
    Например:
    Spacecraft "Shuttle-01"
    {
    Class "Shuttle"
    Length 25.0317 !!!!!! Это и есть тот параметр.
    Mass 18000

    Unit 0.01

    Model "Default/Shuttle.cfg"

    Albedo 0.07
    Exposure 3.0
    Color ( 1.00, 1.00, 1.00 )
    и т.д.

    Что касается эффекта выхлопа двигателей, то его пока нет.
    imageline1Дата: Понедельник, 18.11.2013, 13:22 | Сообщение # 7
    Космический турист
    Группа: Пользователи
    Украина
    Сообщений: 32
    Награды: 0
    Статус: Offline
    У меня такая вот проблема.

    Я скинул OBJ и MTL файлы в Addons.
    В spacecraft.cfg прописал параметры, и путь models "Addons/Galka.obj"

    Запустив Space Engine все появилось, и корабль, все параметры работают, только корабль не отображается!

    Корабль просто прозрачный, блики и тому подобные эффекты отсутствуют...
    SpaceEngineerДата: Понедельник, 18.11.2013, 13:35 | Сообщение # 8
    Автор Space Engine
    Группа: Администраторы
    Российская Федерация
    Сообщений: 5547
    Награды: 54
    Статус: Offline
    Как это прозрачный? Не рендерится вообще что ли? Что в логе?

    Darkness9724Дата: Понедельник, 18.11.2013, 14:15 | Сообщение # 9
    Космический пилот
    Группа: Пользователи
    Российская Федерация
    Сообщений: 99
    Награды: 1
    Статус: Offline
    Цитата imageline1 ()
    Корабль просто прозрачный, блики и тому подобные эффекты отсутствуют...


    У меня было тоже самое. Видно вы забыли написать скрипт Any name.сfg


    Процессор - AMD FX-9590 @4.70 GHz(куплен 27.12.13)
    Видеокарта - ATI Radeon HD 7990 6ГБ
    Оперативка - 16 GB RAM
    Операционая система - Windows 7 Ultimate x64
    Форум » SpaceEngine » Архив » ИНСТРУКЦИЯ: Добавление кораблей 0.97 (Как добавить свою модель корабля)
    Страница 1 из 11
    Поиск:

    >