Разработка импорта-экспорта статичных .bin-моделей для Blender-а

Автор nemyax, 22 августа 2013 23:30:35

« назад - далее »

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

StaticZ

Действительно, он как-то не к тому преклеился да и еще повернут не втом направлении.. Насколько я понял проблем с составными моделями из нескольких частей?

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

nemyax

Цитата: StaticZ от 19 сентября 2013 02:39:13
К примеру меши возможно вообще не имеют такого понятия как "мама".
Насколько я сейчас понимаю их систему, иерархические свойства у подобъектов такие (по мотивам названий в хедере):

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

StaticZ

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

nemyax

Цитата: StaticZ от 19 сентября 2013 04:24:45
С чего тогда второй поршень не туда лепится?
Потому что в говнокоде баг =)
Исправлю попозже.
Желаю тебе из тысячи рулеток одну — самую русскую!
Желаю тебе из тысячи надежд одну — самую крупскую!

StaticZ

Цитата: nemyax от 19 сентября 2013 09:21:36
Цитата: StaticZ от 19 сентября 2013 04:24:45
С чего тогда второй поршень не туда лепится?
Потому что в говнокоде баг =)
Исправлю попозже.
А вы как расковыриваете 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

Цитата: StaticZ от 22 сентября 2013 00:12:05
вы как расковыриваете bin ?
По содержимому файла заголовка mds.h из утечных исходников, ссылку на которые любезно предоставили форумчане.

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

Цитата: StaticZ от 22 сентября 2013 00:12:05
Текстуры перепутались (т.е. их названия не соответствуют поверхностям на которые они наложены)
Да, спасибо, починю.

Цитата: StaticZ от 22 сентября 2013 00:12:05
что такое PHONG,TMAP ?
Phong — это такая функция шейдинга поверхностей. Tmap — судя по всему texture map (вместо повершинной раскраски).
Желаю тебе из тысячи рулеток одну — самую русскую!
Желаю тебе из тысячи надежд одну — самую крупскую!

StaticZ

Цитата: nemyax от 22 сентября 2013 00:37:21По содержимому файла заголовка mds.h из утечных исходников, ссылку на которые любезно предоставили форумчане.
А можно ссылочку, самому интересно как и что там....

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

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

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

nemyax

Желаю тебе из тысячи рулеток одну — самую русскую!
Желаю тебе из тысячи надежд одну — самую крупскую!

StaticZ

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

nemyax

Цитата: StaticZ от 22 сентября 2013 01:07:11
Че-то интересненькое, а что с версиями? Есть какие-то строгие закономерности (ну встиле вор1 - 1я версия, вор2 - 2я, шок - 3я и тд?).
См. пятый байт. В ворах и шоке встречаются только третья и четвёртая.
Желаю тебе из тысячи рулеток одну — самую русскую!
Желаю тебе из тысячи надежд одну — самую крупскую!

StaticZ

Цитата: nemyax от 22 сентября 2013 01:12:34См. пятый байт. В ворах и шоке встречаются только третья и четвёртая.
Ну у меня вора нет, поэтому и спросил, а в шоке вроде вообще 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

Цитата: StaticZ от 22 сентября 2013 01:20:38
Насчет 27, вот же все написано
Действительно, тут я протупил. Но как бы то ни было, это на потом. Ещё непонятно, какими грязными хаками помечать такие свойства в блендере при импорте и для экспорта.
Желаю тебе из тысячи рулеток одну — самую русскую!
Желаю тебе из тысячи надежд одну — самую крупскую!

StaticZ

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

nemyax

Цитата: StaticZ от 22 сентября 2013 02:14:37
Да я думаю достаточно помечать это для материалов, излишний микроменеджмент мало полезен, тем более это все вроде как связанно с текстурами =)
Ну можно и для полигонов в принципе-то, через именованные группы вершин. То есть полигон меченый, если все его вершины в такой-то группе. Но во-первых, это некорректно (можно зацепить лишних полигонов), а во-вторых, и действительно "к чёрту подробности"©.
Желаю тебе из тысячи рулеток одну — самую русскую!
Желаю тебе из тысячи надежд одну — самую крупскую!

elvis

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