Автор Тема: Разработка импорта-экспорта статичных .bin-моделей для Blender-а  (Прочитано 34997 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн StaticZ

  • Жулик
  • Сообщений: 41
  • -= Демиург и Квинтолог =-
Действительно, он как-то не к тому преклеился да и еще повернут не втом направлении.. Насколько я понял проблем с составными моделями из нескольких частей?

ЗЫ Разработчики делали формат для себя, так что они могли сделать как им удобнее, а не как правильно. К примеру меши возможно вообще не имеют такого понятия как "мама".
  Game isn't a dream, it is the reality, reality which is coming while we dream...

Оффлайн nemyax

  • Мастер Теней
  • Сообщений: 4187
  • Нёмыч
К примеру меши возможно вообще не имеют такого понятия как "мама".
Насколько я сейчас понимаю их систему, иерархические свойства у подобъектов такие (по мотивам названий в хедере):
  • parm — какая по счёту трансформация у объекта; если никакой, то -1
  • transform — 12 флотов: матрица 3х3 и вектор положения
  • motion— неподвижный подобъект (0), шарнир (1) или поршень (2)
  • min — может крутиться/скользить от сих...
  • max — ...до сих
  • child — первая дочка; при бездетности -1
  • next — следующая по списку сестра; если не было или кончились, то -1
Неподвижный вроде бы может быть только один, он же есть корень иерархии. У него parm == -1, в transform-е нули и нет сестёр. Шарнир или поршень не должен быть сиротой (иначе он повалит редактор).
Понятие мамы, как видишь, есть, хоть и опосредованное. Все штатные файлы, которые мне попадались, в эту картину укладываются. Но когда я записываю по этим же правилам, в редакторе проблемы. Возможно, парадигма в ближайшее время подвинется, и половина этого окажется хернёй. Но пока вот так.

Оффлайн StaticZ

  • Жулик
  • Сообщений: 41
  • -= Демиург и Квинтолог =-
Что-то не очень понимаю - если взять тотже пампс то там насколько я понимаю всего 2 дочки в одной мамке. С чего тогда второй поршень не туда лепится?
  Game isn't a dream, it is the reality, reality which is coming while we dream...

Оффлайн nemyax

  • Мастер Теней
  • Сообщений: 4187
  • Нёмыч
С чего тогда второй поршень не туда лепится?
Потому что в говнокоде баг =)
Исправлю попозже.

Оффлайн StaticZ

  • Жулик
  • Сообщений: 41
  • -= Демиург и Квинтолог =-
С чего тогда второй поршень не туда лепится?
Потому что в говнокоде баг =)
Исправлю попозже.
А вы как расковыриваете bin ? У меня есть большое подозрение, что в дедовском способе кое что упустили из виду из-за чего порой все и глючит. У некоторых объектов есть светящиеся поверхности. Уж не знаю как именно они сделаны - свойства это материалов или самих полигонов - но вроде именно такие объекты не всегда гладко конвертируются. К примеру вот что у меня вышло при открытии модельки обычной двери:



Таже самая фигня была и в другом редакторе при ручной конвертации дедовским способом (bin -> e, e -> 3ds, 3ds -> ....). В результате что получается?
* В двери вылез лишний куб, непонятно откуда.
* Текстуры перепутались (т.е. их названия не соответствуют поверхностям на которые они наложены), конечно мелочь, но показатель ошибочности =)
* После конвертации обратно в BIN ручки на двери перестали светится в темноте.


Глянул мельком формат е:

1,"Material1",PHONG,TMAP "EH_MSD_TOP_3.GIF",0,TRANSP 0,ILLUM 0;
2,"Material2",PHONG,TMAP "EH_MSD_BOT_3.GIF",0,TRANSP 0,ILLUM 0;
3,"Material3",PHONG,TMAP "EH_TECHSIDE.GIF",0,TRANSP 0,ILLUM 0;

Что значат числа в конце? TRANSP 0 - это понятно прозрачность текстуры, а остальные? и что такое PHONG,TMAP ?

  Game isn't a dream, it is the reality, reality which is coming while we dream...

Оффлайн nemyax

  • Мастер Теней
  • Сообщений: 4187
  • Нёмыч
вы как расковыриваете bin ?
По содержимому файла заголовка mds.h из утечных исходников, ссылку на которые любезно предоставили форумчане.

У некоторых объектов есть светящиеся поверхности. Уж не знаю как именно они сделаны - свойства это материалов или самих полигонов
У полигонов есть тип. Но так как он нигде не документирован, я тупо присваиваю тот, который встречается в бинках наиболее часто: 27. Видимо, отсюда и потеря свойств переэкспортированных полигонов и проявление невидимок. Кроме того, в 4-ой версии формата выставляется ещё один дополнительный байт в конце каждого полигона. Он тоже используется неведомо кем неведомо зачем.
Всё это интересно было бы поковырять, но для начала закончить бы банальный экспорт поверхностей, не имеющих особых талантов.

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

что такое PHONG,TMAP ?
Phong — это такая функция шейдинга поверхностей. Tmap — судя по всему texture map (вместо повершинной раскраски).

Оффлайн StaticZ

  • Жулик
  • Сообщений: 41
  • -= Демиург и Квинтолог =-
По содержимому файла заголовка mds.h из утечных исходников, ссылку на которые любезно предоставили форумчане.
А можно ссылочку, самому интересно как и что там....

У полигонов есть тип. Но так как он нигде не документирован, я тупо присваиваю тот, который встречается в бинках наиболее часто: 27.
Неужто там нет ни дифайнов ни енумов? Сомнительно что разработчики использовали какие-то числа с потолка просто так =)

Кроме того, в 4-ой версии формата выставляется ещё один дополнительный байт в конце каждого полигона. Он тоже используется неведомо кем неведомо зачем.
Скорее всего что то связанное с освещением или отражениями.

Phong — это такая функция шейдинга поверхностей. Tmap — судя по всему texture map (вместо повершинной раскраски).
Есть ли практический смысл их менять (ну Tmap судя по всему нет, а вот Phong)? и что такое "ILLUM 0" ?
  Game isn't a dream, it is the reality, reality which is coming while we dream...

Оффлайн nemyax

  • Мастер Теней
  • Сообщений: 4187
  • Нёмыч
А можно ссылочку, самому интересно как и что там....
https://gist.github.com/anonymous/6654070

что такое "ILLUM 0" ?
Светимость, вестимо.

Оффлайн StaticZ

  • Жулик
  • Сообщений: 41
  • -= Демиург и Квинтолог =-
Че-то интересненькое, а что с версиями? Есть какие-то строгие закономерности (ну встиле вор1 - 1я версия, вор2 - 2я, шок - 3я и тд?).
  Game isn't a dream, it is the reality, reality which is coming while we dream...

Оффлайн nemyax

  • Мастер Теней
  • Сообщений: 4187
  • Нёмыч
Че-то интересненькое, а что с версиями? Есть какие-то строгие закономерности (ну встиле вор1 - 1я версия, вор2 - 2я, шок - 3я и тд?).
См. пятый байт. В ворах и шоке встречаются только третья и четвёртая.

Оффлайн StaticZ

  • Жулик
  • Сообщений: 41
  • -= Демиург и Квинтолог =-
См. пятый байт. В ворах и шоке встречаются только третья и четвёртая.
Ну у меня вора нет, поэтому и спросил, а в шоке вроде вообще 4тая везде (хотя не проверял особо, но то что смотрел везде была 4я)...


Насчет 27, вот же все написано:

#define MD_PGON_PRIM_MASK  0x07
#define MD_PGON_LIGHT_ON   0x18
#define MD_PGON_COLOR_MASK 0x60

#define MD_PGON_PRIM_NONE    0  // no primitive drawn
#define MD_PGON_PRIM_SOLID   1  // vcolor lookup
#define MD_PGON_PRIM_WIRE    2  // wire
#define MD_PGON_PRIM_TMAP    3  // texture map

#define MD_PGON_COLOR_PAL  0x20  // palette color
#define MD_PGON_COLOR_VCOL 0x40  // vcolor lookup


27 это флаг MD_PGON_COLOR_PAL   | MD_PGON_PRIM_MASK  == MD_PGON_COLOR_PAL  | MD_PGON_PRIM_SOLID   | MD_PGON_PRIM_WIRE  | MD_PGON_PRIM_TMAP
короче vcolor lookup, wire, texture map, palette color...

Последние два судя по всему говорят об использовании текстуры и 8битной палитры. Первые два хз, с ходу не сообразить, но 1й судя по всему это ссылка на что-то.
  Game isn't a dream, it is the reality, reality which is coming while we dream...

Оффлайн nemyax

  • Мастер Теней
  • Сообщений: 4187
  • Нёмыч
Насчет 27, вот же все написано
Действительно, тут я протупил. Но как бы то ни было, это на потом. Ещё непонятно, какими грязными хаками помечать такие свойства в блендере при импорте и для экспорта.

Оффлайн StaticZ

  • Жулик
  • Сообщений: 41
  • -= Демиург и Квинтолог =-
Да я думаю достаточно помечать это для материалов, излишний микроменеджмент мало полезен, тем более это все вроде как связанно с текстурами =)
  Game isn't a dream, it is the reality, reality which is coming while we dream...

Оффлайн nemyax

  • Мастер Теней
  • Сообщений: 4187
  • Нёмыч
Да я думаю достаточно помечать это для материалов, излишний микроменеджмент мало полезен, тем более это все вроде как связанно с текстурами =)
Ну можно и для полигонов в принципе-то, через именованные группы вершин. То есть полигон меченый, если все его вершины в такой-то группе. Но во-первых, это некорректно (можно зацепить лишних полигонов), а во-вторых, и действительно "к чёрту подробности"©.

Оффлайн elvis

  • Мастер Теней
  • Сообщений: 2587
Мммм.... я почему в эту тему не влазил (хоть и читал ее кстати)  - для меня это китайская грамота. Я таки медик, а не программист.. ))) Вот и сейчас - где эту программную строку вызвать? БМП (Без малейшего понятия) Скорее всего со мной конструктивного диалога не получится.  :) 
Элвис не умер! Он просто улетел на свою планету....