Elite Games - Свобода среди звезд!
.
ВНИМАНИЕ!
Наша конференция посвящена космической тематике и компьютерным играм.
Политические вопросы и происходящие в мире события в данный момент на нашем сайте не обсуждаются!

  » X2tools: Бинарные BOB --> BOD | страница 1
Конференция предназначена для общения пилотов. Для удобства она разделена на каналы, каждый из которых посвящен определенной игре. Пожалуйста, открывайте темы только в соответствующих каналах и после того, как убедитесь, что данный вопрос не обсуждался ранее.

Поиск | Правила конференции | Фотоальбом | Регистрация | Список пилотов | Профиль | Войти и проверить личные сообщения | Вход

   Страница 1 из 2
На страницу: 1, 2  След. | Все страницы
Поиск в этой теме:
Канал X2: The Threat: «X2tools: Бинарные BOB --> BOD»
CheckerTwo
 550 EGP


Рейтинг канала: 4(96)
Репутация: 103
Сообщения: 412
Откуда: Tomsk
Зарегистрирован: 18.08.2004
Добрый день, добрый! Улыбка

После некоторых колебаний хочу поделиться информацией по внутреннему содержанию бинарных BOB файлов. Колебаний, потому как работа не доведена до нормального состояния из-за острой нехватки времени и мозгов. На текущий момент написана программка, конвертирующая бинарник в стандартный текстовый BOD. Несмотря на то, что проблемы пока есть,
пользоваться уже можно.

Теоретическая часть

В бинарнике каждая структура заключена в операторные скобки. Почти как в паскале "begin" - "end". Например имя меша заключено в скобки "NAME" далее идет строка и заканчивается "/NAM".

Итак, бинарный боди-файл имеет следующую структуру:
Код:

BOB1
  INFO -- /INF         // может отсутствовать
  MAT5 -- /MAT
  BODY <cnt> : word
    for 1..cnt begin
      BONE -- /BON
      POIN -- /POI
      WEIG -- /WEI
      PART -- /PAR
    end;
  /BOD
/BOB


INFO - это поле содержит строку - информацию о файле

MAT5 содержит информацию о материале. В основном поля таблицы соответствуют тому, что выводится в текстовый файл. Есть битовые поля. (Спасибо SPeN23 за подробный разбор полей.)
Код:

MAT5 <cnt> : long
  for 1..cnt begin
    <idx> : word; <X1..X23> : word;
  end;
/MAT


Таблица вертексов POIN имеет сложную структуру, с плавающим форматом, некоторые вещи разобрать не удалось. Но на генерацию текстового файла эти поля (кажись) влияния не оказывают. Я надеюсь...
Код:

POIN <cnt> : long
  for 1..cnt begin
    <tag> : word;
       |0x19 : <F1..F3> : long;  <F4..F6> : long;  <F7> : long;
       |0x1B : <F1..F3> : long;  <F4..F5> : long; <F6..F8> : long;  <F9> : long;
       |0x1F : <F1..F3> : long;  <F4..F5> : long; <F6..F10> : long;  <F11> : long;
  end;
/POI

<F1..F3> - координаты вершины
<F4..F5> - текстурные координаты

Таблица полигонов PART состоит из нескольких секций. Их число определяется числом материалов, использованных в модели.
Код:

PART <tmp> : long; <tmp> : long; <cnt_sec> : word;
  for 1..cnt_sec begin
    <mat> : long; <cnt_faces> : long;
    for 1..cnt_faces begin
       <T1..T3> : long;       // индексы вершин
       <tag> : long;
    end;
  end;
/PAR

<cnt_sec> - число секций таблицы
<tmp> - фиг его знает
<mat> - номер материала
<cnt_faces> - число полигонов в секции

Форматы таблиц POIN и PART радикально отличаются от текстового представления. (В POIN находится информация о текстурных координатах и всевозможные теги, которые в текстовом представлении пишутся в PART...)
Из-за этого при конвертации таблиц (основное время работы программы) результат почти всегда отличается от того, что выдает егософтовский плагин. Хотя бы потому, что таблицы упорядочены по-разному.

Таблица BONE содержит список строк-имен bone-объектов. В таблице WEIG задаются весовые коэффициенты для bone-объектов. Формат таблицы такой:
Код:

  WEIG
    <cnt_point> : long;
    for 1..cnt_point begin
      <cnt> : word;
      for 1..cnt begin
        <idx> : word;  <cof> : long;
      end;
    end;
  /WEI


Общее число строк соответствует числу вертексов.
<cnt_point> - число вертексов
<cnt> - число зависимостей вертекса от bone'сов
<idx> - индекс bone
<cof> - коэффициент зависимости (вещественный)

Bone-объекты позволяют создавать сложные иерархические анимированные модели. Траектории движения всех частей персонажей описываются именно по этой технологии. Подробнее нужно копать Inverse Kinematic в 3d Max.

Теперь по-поводу бинарных scene-файлов.
Код:

CUT1
  INFO -- /INF  // может отсутствовать
  <ver> : long;  <cnt> : long;
  for 1..cnt begin
    PATH -- /PAT
  end;
/CUT

<ver> - номер версии scene-файла

То, что видно в текстовых scene-файлах в виде строчек типа
"P 0; B -1; N Camera01; c" - вот это и описано в заголовке структуры PATH Улыбка
Код:

PATH
  <заголовок>
  NAME -- /NAM
  CONS -- /CON
  NOTE -- /NOT

  BOB1 -- /BOB
  STAT -- /STA
/PAT

NAME - поле содержит строку - имя (в примере выше "Camera01")

CONS - таблица содержащая дополнительные параметры меша сюда вставляются параметры IK Chain Object, заданные в Максе. Например, в нижеследующей строке, параметры после K описываются именно этой таблицей:
P 23; B 100023; N IK Chain01; K 3; 20;0.499985; 12;0.099991; 13;0.299988;

NOTE - это таблица содержит список событий для организации интерактива взаимодействия с игроком, диалогов и пр... Как генерить в Максе пока не понятно. Позволяет управлять последовательностью загрузки отдельных кусков/мешей, запускать саунд-треки, реагировать на мышу и пр...

STAT - таблица анимационных кадров. Формат таблицы разобрать до конца не удалось. Число и формат параметров зависит от тега. Тег, похоже, представляет собой битовую маску. В связи с дикой нехваткой времени Расстроен, все известные теги тупо перечислены в конфиге программы, так чтобы можно было дополнять/редактировать. Требуется творческий анализ и доработка... и выведения общего алгоритма на все случаи.

Кроме перечисленных здесь возможностей в scene-файлах существует возможность запускать/вставлять саунд-треки (предположительно). Для этого специально существует команда SND1 -- /SND. Формат незвестен. Как это описывается в Максе я не нашел. Расстроен

Практическая часть.

Программка в стадии пред-альфа версии. Сама разбирает бод/сцене/комбинед... Использовать сконвертированные файлы в игре я не пытался... Однако BODViewer исправно все казал. Текстурные координат вставляются верно.


Чего не сделано, не доделано.

1. Как бы расковырять алгоритм формирования анимационных кадров. Можно, конечно, попробовать дизассемблировать плагин егософта, но времени - увы Расстроен

2. Возможны просто ошибки... Улыбка Работаем, когда есть время...


PS
В качестве отмазки на вопрос "Нафига это надо?" сразу отвечу:

1. Существуют модели кораблей/станций, которые наличиствуют только в виде BOB. Иногда интересно посмотреть как они сделаны, может быть даже использовать некоторые детали.

2. Особый интерес вызывают scene-файлики. Там есть чему поучиться. Улыбка
Интересно посмотреть на выдранные модели БенДанов и др... И озадачиться наличием 15 пальцев прописанных у персонажей Улыбка

3. (Этак мечтательно) Вот бы нарисовать супер-пупер заставку к ЕГешному моду. Вместо nVidea. От нее все равно толку никакого! И станцию вставить в игру, на верхней площадке которой ездит манипулятор и ящики переставляет Гы-гы


Итак, если есть у кого силы/время посмотреть-потестить - пишите. Улыбка)
    Добавлено: 17:31 05-11-2004   
Tnax
 270 EGP


Рейтинг канала: 1(3)
Репутация: 52
Сообщения: 930
Откуда: Russia, Voronezh
Зарегистрирован: 20.01.2004
Scene файлы для хааков можно посмотреть уже сейчас, они в обычном bod. И сразу видно, что чёткой структуры нетути Улыбка (т.е. что и после чего идёт).
А может Бенданна потом в монстра превратится Улыбка
с 1. согласен, удобнее было бы чуть подправить, чем заново самому перерисовывать.
_________________
Люблю когда прицел... вдруг синевеет! :)
    Добавлено: 11:08 09-11-2004   
DFX4200
 55 EGP


Репутация: 8
Сообщения: 43
Откуда: Сергиев Посад
Зарегистрирован: 11.08.2004
Пробовал создавать Scene-файл - в игре корабль из труб(стандартных частей) получается, вроде все правильно делал... Совсем запутался...
Неработает и с обычным, и с бинари - Может я, что то пропустил??? Менял имена объектов и названия файлов - нехочет, причем трубы все те же!!! а имена 10580, 10581... - это для bod... А для scene - 04438 и пробовал за 10500... Одно и тоже получается. Расстроен и некоторые оъекты видно только в космосе, а в меню они невидимые! Расстроен Как исправить? Или ссылку если это есть, я не нашел... Да, и еще иногда треугольники мерцают... Это с чем связано??? И можно привязать анимацию к процессу, например высота элемента зависит от скорости???
Заранее спасибо!
    Добавлено: 14:48 09-11-2004   
CheckerTwo
 550 EGP


Рейтинг канала: 4(96)
Репутация: 103
Сообщения: 412
Откуда: Tomsk
Зарегистрирован: 18.08.2004
DFX4200:
Цитата:
Неработает и с обычным, и с бинари

Увы, я не умею моделировать корабли. Расстроен
Помочь с этим не смогу.

Цитата:
И можно привязать анимацию к процессу, например высота элемента зависит от скорости???


К процессу - вряд ли. Анимация идет во времени.
    Добавлено: 17:10 09-11-2004   
Breeze
 222 EGP


Рейтинг канала: 3(30)
Репутация: 90
Сообщения: 703
Откуда: Donetsk, Ukraine
Зарегистрирован: 05.12.2003
DFX4200 пересылай мне свои файлы на alex_2002_mailbox@zmail.ru, посмотрю чё у тя там Улыбка (а насчёт мерцания - так это из-за бампа, или отражений, это типа нормально Улыбка)
CheckerTwo вот это круто Улыбка очень полезная инфа, обязательно надо всё довести до ума Улыбка
_________________
'Слова искажают правду' ©
    Добавлено: 17:17 09-11-2004   
CheckerTwo
 550 EGP


Рейтинг канала: 4(96)
Репутация: 103
Сообщения: 412
Откуда: Tomsk
Зарегистрирован: 18.08.2004
На текущий момент все проверил, погонял по всем доступным bob-файлам. Вроде работает. Бинарные боди-файлы восстанавливает "на ура".

Со сцене-файлами остались 2 проблемы:
Первая - как бы разгрызть формат параметров анимационных кадров в зависимости от тега.
Где целые, где - вещественные...

Вторая - существует дополнительный тег в строке описания
меша, ставится после имени (N). Например:

P 0; B -1; N Camera01; c - тег 'c' указывает на класс CAMERA_CLASS_ID и имеет значение 0x01
P 2; B 1375; N B1375sc; l - тег 'l' указывает на класс OMNI_LIGHT_CLASS_ID = 0x0A (источник света)

Но cуществуют еще по-крайней мере 2 тега со значениями 0x02 и 0x20.
И пока для них не известно текстовое представление.
Первый (0x02), предположительно, как-то связан с Direct-объектами.
Кто-нибудь встречал?

Желающим могу отправить программку по почте...
Улыбка
    Добавлено: 17:25 09-11-2004   
DFX4200
 55 EGP


Репутация: 8
Сообщения: 43
Откуда: Сергиев Посад
Зарегистрирован: 11.08.2004
Brize :
DFX4200 пересылай мне свои файлы на alex_2002_mailbox@zmail.ru, посмотрю чё у тя там (а насчёт мерцания - так это из-за бампа, или отражений, это типа нормально )

Пока отсылать толком нечего - все в процессе. Это я эксперементирую с тем, что пока есть и на ус мотаю Улыбка -заодно и спрашиваю, чего не понятно.
А про мерцание, это странно, многие стандартные модели имеют это и не мерцают, наверное надо какие то правила соблюдать. Может размер текстур или колво метериалов? Хотя не должно... Неужели движок такой глючный Совсем запутался...
А ты с нормалями разобрался??? -там тоже есть свои фишки, если проигнорируешь - получишь не то, что надо... А вообще мощный инструмент!!! Правда, когда качество просчета ставишь на максимум, то оооочень долго считает Хы...

CheckerTwo Во времени, это значит только зацикленная анимация??? А как же хвосты от двигателей работают, или шлюзы??? Неужели в ехе прошито? Опять облом... Задница Еще очень надо с pivot разобраться, а то, как я понял,переставить pivot и создать ключи, не значит, что получится что надо...
    Добавлено: 19:30 09-11-2004   
Breeze
 222 EGP


Рейтинг канала: 3(30)
Репутация: 90
Сообщения: 703
Откуда: Donetsk, Ukraine
Зарегистрирован: 05.12.2003
CheckerTwo Есть желающие, есть, есть! Хы...

DFX4200 [offtop]
Цитата:
А ты с нормалями разобрался???
ну, наверно да, на уровне подсознания Гы-гы ... У многих эгософтовских моделей тоже такая фигня есть... Я заметил что сильнее всего бамп и отражения мерцают при околонулевых углах зрения и при "пересечении" с системами частиц - выхлопами от двигателей, туманом nebulaes. Они (Эгосовтовцы) разносят двигатели как можно дальше от корпуса, и, видимо, у них возникли проблемы с отражениями т.к. они их используют на очень малых участках... Я понял что меньше всего мерцания будет если не делать "овальных поверхностей"... Ну, типа поверхность делать не так
/----------\
а так
/-----------
а ещё лучше так Улыбка
------------
(т.е. типа так чтоб нормали не поворачивались более чем на 180, да?..)
Мне пока тока максовский хэлп доступен, в инете времени искать ответы нету Рыдания.
[/offtop]
_________________
'Слова искажают правду' ©
    Добавлено: 11:48 10-11-2004   
CheckerTwo
 550 EGP


Рейтинг канала: 4(96)
Репутация: 103
Сообщения: 412
Откуда: Tomsk
Зарегистрирован: 18.08.2004
To Breeze:
Цитата:
Есть желающие, есть, есть!


Отправил Улыбка

All:
На текущий момент известен единственный bob-файл, содержащий расщепленную
таблицу PART. Это модель сплитского дракона 10923.bob. Так как получить
подобный формат искусственно не удалось, то эта часть программы практически
осталась неотлаженной. При этом в выходной файл пишется сообщение:
"Note: Ращепленная таблица PART."
Если вдруг попадется какой-нибудь файл, просьба сообщить в конфу или приват.
Надо еще поизучать...
    Добавлено: 10:05 11-11-2004   
Breeze
 222 EGP


Рейтинг канала: 3(30)
Репутация: 90
Сообщения: 703
Откуда: Donetsk, Ukraine
Зарегистрирован: 05.12.2003
CheckerTwo ОК tnx. скачал, щас принесу домой буду тестить Улыбка
_________________
'Слова искажают правду' ©
    Добавлено: 10:32 11-11-2004   
CheckerTwo
 550 EGP


Рейтинг канала: 4(96)
Репутация: 103
Сообщения: 412
Откуда: Tomsk
Зарегистрирован: 18.08.2004
Breeze:
Цитата:

Кстати, сделал ещё три(+одну станцию) модельки боронов, через неделю всю боронскую расу перемоделю Улыбка...


А посмотреть можно? Улыбка
    Добавлено: 13:15 21-11-2004   
Ur Quan
 510 EGP


Рейтинг канала: 1(3)
Репутация: 86
Сообщения: 728
Откуда: Арк-а-Зной
Зарегистрирован: 25.11.2003
Цитата:
Да, и еще иногда треугольники мерцают... Это с чем связано???

Это бывает когда плоскости двух треугольников находятся в одной и той-же точке пространства.
Цитата:
На текущий момент написана программка, конвертирующая бинарник в стандартный текстовый BOD.

И гдеж такую раздобыть Подозрение. ? Улыбка
_________________
Рад видеть тебя на борту. Здесь Дом Свободы — можешь плевать на ковер и называть кота ублюдком.
    Добавлено: 22:53 21-11-2004   
CheckerTwo
 550 EGP


Рейтинг канала: 4(96)
Репутация: 103
Сообщения: 412
Откуда: Tomsk
Зарегистрирован: 18.08.2004
Ur Quan:
Цитата:
И гдеж такую раздобыть ?


Улыбка
Выложить пока-что некуда, могу выслать почтой.
Размер архива 60К.
    Добавлено: 07:52 22-11-2004   
DFX4200
 55 EGP


Репутация: 8
Сообщения: 43
Откуда: Сергиев Посад
Зарегистрирован: 11.08.2004
Цитата:
Это бывает когда плоскости двух треугольников находятся в одной и той-же точке пространства.


Нет, в этом случае мерцания другие, а тут такое впечатление, что глючит свет, т.е. некоторые треугольники освещены, а некоторые-нет, потом меняется... иногда освещены все. Странно, но сейчас все нормально...

Цитата:
На текущий момент написана программка, конвертирующая бинарник в стандартный текстовый BOD.


Милости просим на dfx4200@yandex.ru !!! Улыбка Плиз!

А наоборот конвертировать будет?
    Добавлено: 11:02 22-11-2004   
Breeze
 222 EGP


Рейтинг канала: 3(30)
Репутация: 90
Сообщения: 703
Откуда: Donetsk, Ukraine
Зарегистрирован: 05.12.2003
CheckerTwo к среде(ориентировочно) выложу мод со всеми боронскими кораблями Улыбка (в субботу и воскресенье усиленно отлаживал Гы-гы )
_________________
'Слова искажают правду' ©
    Добавлено: 11:46 22-11-2004   
CheckerTwo
 550 EGP


Рейтинг канала: 4(96)
Репутация: 103
Сообщения: 412
Откуда: Tomsk
Зарегистрирован: 18.08.2004
Ur Quan:
Завсегда - пожалуйста... Улыбка

DFX4200:
Цитата:
А наоборот конвертировать будет?

М-м-м... как-то не думал об этом. Пока - вряд ли получится. Информации о файлах маловато. А есть такая необходимость?
ЗЫ: Отправил. Улыбка

Я программку писал несколько с другой целью. Улыбка
А именно - разобраться в возможностях движка Х2. А возможности там богатые! Улыбка
Сейчас на работе загрузили по уши, немного расхлебаюсь - продолжу ковыряния...
Блин, хоть бы помог кто, что ли... Гы-гы
    Добавлено: 15:33 22-11-2004   
DFX4200
 55 EGP


Репутация: 8
Сообщения: 43
Откуда: Сергиев Посад
Зарегистрирован: 11.08.2004
Цитата:
ЗЫ: Отправил.


Поймал, огромное СПАСИИИБО! -будем смотреть! Гы-гы

Цитата:
М-м-м... как-то не думал об этом. Пока - вряд ли получится. Информации о файлах маловато. А есть такая необходимость?

Я программку писал несколько с другой целью.


Мне бы пригодилось... Многие мелкие исправления можно было бы вносить без повторного экспорта, например, после экспорта bod-файла, не раз приходится менять параметры материалов, а загружать мах - дольше! так же и LOD настраивать удобнее...


Про саундс - есть в максе TrackView - в нем можно ставить звуковые трэки для синхронизации их с будущим видео-рядом, может где то там...
    Добавлено: 16:28 22-11-2004   
Ur Quan
 510 EGP


Рейтинг канала: 1(3)
Репутация: 86
Сообщения: 728
Откуда: Арк-а-Зной
Зарегистрирован: 25.11.2003
Цитата:
т.е. некоторые треугольники освещены, а некоторые-нет, потом меняется... иногда освещены все

А такая фигня у меня была когда нормали были гигантские (не единичный вектор, т.к. объект масштабировал через glScale а нормализацию не влючил, в результате чего дико менялась яркость, а при влючении свойств материала Ambient, Diffuse и Specular вообще при определённых углах треугольники чёрные становились).
2CheckerTwo:
Большое нечеловеческое спасибо Улыбка .
_________________
Рад видеть тебя на борту. Здесь Дом Свободы — можешь плевать на ковер и называть кота ублюдком.
    Добавлено: 22:48 22-11-2004   
DFX4200
 55 EGP


Репутация: 8
Сообщения: 43
Откуда: Сергиев Посад
Зарегистрирован: 11.08.2004
Цитата:
А такая фигня у меня была когда нормали были гигантские (не единичный вектор, т.к. объект масштабировал через glScale а нормализацию не влючил, в результате чего дико менялась яркость, а при влючении свойств материала Ambient, Diffuse и Specular вообще при определённых углах треугольники чёрные становились).

Поясни пожалуйста, что значит "Нормализация" и "не единичный вектор"!!! Я думал каждый треугольник имеет только один нормаль. Подозрение.
    Добавлено: 23:20 22-11-2004   
Ur Quan
 510 EGP


Рейтинг канала: 1(3)
Репутация: 86
Сообщения: 728
Откуда: Арк-а-Зной
Зарегистрирован: 25.11.2003
Цитата:
Поясни пожалуйста, что значит "Нормализация" и "не единичный вектор"

"Единичный вектор" - вектор длина которого равна единице.
"Нормализация" - в OpenGL при масштабировании с помощью glScale, также трансформируются и нормали, чтобы они оставались неизменными включают нормализацию glEnable(GL_NORMALIZE).
Цитата:
Я думал каждый треугольник имеет только один нормаль.

Вобще-то, номаль можно задать каждой вершине и получить эффект сглаживания:
Нормаль к треугльнику:

Нормаль к вершине:

_________________
Рад видеть тебя на борту. Здесь Дом Свободы — можешь плевать на ковер и называть кота ублюдком.
    Добавлено: 16:55 24-11-2004   
Канал X2: The Threat: «X2tools: Бинарные BOB --> BOD»
На страницу: 1, 2  След. | Все страницы
  
Показать: 
Предыдущая тема | Следующая тема |
К списку каналов | Наверх страницы
Цитата не в тему: ...cкакал по сектору с одной батарейкой в трюме. (рассказывал VooDoo)

  » X2tools: Бинарные BOB --> BOD | страница 1
Каналы: Новости | Elite | Elite: Dangerous | Freelancer | Star Citizen | X-Tension/X-BTF | X2: The Threat | X3: Reunion | X3: Terran Conflict | X Rebirth | X4: Foundations | EVE Online | Orbiter | Kerbal Space Program | Evochron | VoidExpanse | Космические Миры | Онлайновые игры | Другие игры | Цифровая дистрибуция | play.elite-games.ru | ЗВ 2: Гражданская война | Творчество | Железо | Игра Мечты | Сайт
   Дизайн Elite Games V5 beta.18