Mafia-Game Forum

Mafia-Game Forum (https://mafia-game.ru/forum/index.php)
-   Модификации (https://mafia-game.ru/forum/forumdisplay.php?f=9)
-   -   Конвертер мешей в окклюдеры для 4ds (https://mafia-game.ru/forum/showthread.php?t=679)

GOLOD55 17.05.2023 23:58

А, О! хех. А структурка окклюдера в 4дс где-то описана?
Флаг 0x0C, все верно, должен быть.


Инфа из моих записок_натуралиста:

sub_10019210 вторая программа генерации(невизуалы)

...
lea eax, [ecx-2] ; ecx=лонг на входе
cmp eax, 0Fh ; switch 16 cases


case obj class метка

case0 = light 10097C28 (id=2, size=1F0); +154=3(тип лайта, 5=фог)
case1 = camera\GameCamera 10097690 (id=3, size=4F4); хмм
case2 = sound? 10098E10 (id=4, size=1EC)
case3 = sector 10098A28 (id=5, size=234)
case4 = dummy 100978C0 (id=6, size=19C)
case5 = target 10098EF0 (id=7, size=154)
case6 = 10098F90 (id=8, size=144); user(?) не найдено в игре
case7 = model_obj 10098100 (id=9, size=158)
case8 = bone(?) 10097A48 (id=0A,size=20C)
case9 = 100990F0 (id=0B,size=174); Frame_volume(?) не найдено в игре
case10= occluder 100983B8 (id=0C,size=5EC)
case11= scene 10098898 (id=0D,size=33C); Frame_scene. примсектора описаны. один объект.
case12= city_music 10097420 (id=0E,size=17C)
case13= shadow 10098AE0 (id=0F,size=214); +1D4=метка SHD. почему в невизуалах??
case14= 10097B88 (id=10,size=62144); Frame_landscap(?) не найдено в игре
case15= Car_particle 100984D0 (id=11,size=1F0)

Прим: строка 1140 в сцене2 имеет парам типа_объекта(0C000000 у окклюдеров) – его в виде байта переносим в 4дс.
Объект 0E тогда в 4дс должен быть музик_ареей и т.п.

Firefox3860 18.05.2023 00:43

Вложений: 1
Цитата:

Сообщение от GOLOD55 (Сообщение 19986)
А, О! хех. А структурка окклюдера в 4дс где-то описана?

Хех :) Да, вот тут описана - https://mafia-game.ru/forum/showpost...&postcount=113
Или вот во вложении класс из моей проги на c# (если так удобнее) (в языке тип uint/int - 4 байта, а ulong/long - 8 байт).

Цитата:

Сообщение от GOLOD55 (Сообщение 19986)
Инфа из моих записок_натуралиста: ...

Это фрагмент на ассемблере прямо из кода игры, флаги оттуда же взяты?
Получается, можно вообще любой из этих типов запихать в 4ds, если поставить однобайтовый флаг и попасть в структуру? Даже model_obj - будет одна модель вызывать другую :D?

sector (5) - это я так понимаю, запись о звуковых параметрах при нахождении в одноимённом секторе 4ds. Можно было бы их встраивать прямо в модели своих локаций, а не в scene2 :)

shadow (0F) - прямо в модели машин, чтоб 6ds не класть отдельно :) В невизуалах, наверное, потому, что свою геометрию также не отображает, а только эффект даёт, как и окклюдер.

А scene (0D) - это что? Car_particle (11) и Frame_volume (0B) - не одно и тоже?)

GOLOD55 18.05.2023 01:06

Фрагмент - резалт анализа программы генерации невизуалов(из лс3дф судя по всему).

sector (5) дак енто лайт_сектор и есть. в 4дс у него ж флаг 05.

Тень машины, пожалуй, удобно перенести в саму ее. Думаю, схема примерно та же: в самом теле объекта сперва 2 чексуммы(вертексов и фейсов) пишем, затем оба блока. ли как-то так. попробуй.

По scene (0D) коммент есть, прокомментировать доп-но уже не могу, не помню. скорее всего выискивал в памяти и смотрел че там в кешированной форме напихано(примсекторы описаны как-то).
Frame_volume не найдено в игре. хз че. может думми-вертикальный цилиндр?

grandshot 18.05.2023 01:34

Цитата:

Сообщение от Firefox3860 (Сообщение 19987)
Хех Да, вот тут описана - https://mafia-game.ru/forum/showpost...&postcount=113

Да вот же нормально читаемый C-код из шаблонов к 010 Editor'у https://github.com/RoadTrain/mafia-f.../master/4ds.bt

Scene2.bin энтити описаны в HD2 Wiki: https://hd2.fandom.com/wiki/Entities


Цитата:

Сообщение от Firefox3860 (Сообщение 19987)
Получается, можно вообще любой из этих типов запихать в 4ds, если поставить однобайтовый флаг и попасть в структуру? Даже model_obj - будет одна модель вызывать другую ?

Нужно знать точную структуру чтобы заработало. В Scene2.bin структура Энтити другая. Там все разделено на блоки и подблоки. Перед каждым блоком указывается размер в байтах (На жаргоне Голода - чексумма). Просто удалить эти размеры и сформировать из энтити 4ds фреймы не получится, так как может отличаться и количество значений-данных, и их порядок. Я когда то пытался угадать структуру Frame Model, добавляя строку с именем стороннего 4ds как "дату" нода. Но так и не получилось, игра такой нод не воспринимала.

Добавлено через 1 минуту
Цитата:

Сообщение от GOLOD55 (Сообщение 19988)
Frame_volume не найдено в игре. хз че. может думми-вертикальный цилиндр?

У меня предположение, что это репрезентаций примитивов коллизии из klz.

Добавлено через 3 минуты
Цитата:

Сообщение от Firefox3860 (Сообщение 19984)
grandshot, значит, в итоге неизвестных версий в тех играх тоже не нашлось?

Да, никаких неизвестных фреймов. Ни Landpatch, ни Area, ни Shadow, ни Projector'a.

GOLOD55 18.05.2023 01:39

Цитата:

Сообщение от grandshot (Сообщение 19990)
репрезентаций примитивов коллизии из klz

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

Firefox3860 18.05.2023 01:40

Цитата:

Сообщение от GOLOD55 (Сообщение 19988)
sector (5) дак енто лайт_сектор и есть. в 4дс у него ж флаг 05.

А, он же тоже невизуал, ну да :D

Цитата:

Сообщение от GOLOD55 (Сообщение 19988)
Тень машины, пожалуй, удобно перенести в саму ее. Думаю, схема примерно та же: в самом теле объекта сперва 2 чексуммы(вертексов и фейсов) пишем, затем оба блока. ли как-то так. попробуй.

Ладно, надо будет попробовать. Правда, если в машины класть, то, новерное, будет с carindex-ом конфликтовать...

Цитата:

Сообщение от grandshot (Сообщение 19990)
Да вот же нормально читаемый C-код из шаблонов к 010 Editor'у https://github.com/RoadTrain/mafia-f.../master/4ds.bt

Ну да, они у меня есть, но ссылки не было под рукой.

Цитата:

Сообщение от grandshot (Сообщение 19990)
Нужно знать точную структуру чтобы заработало. В Scene2.bin структура Энтити другая. Там все разделено на блоки и подблоки. Перед каждым блоком указывается размер в байтах (На жаргоне Голода - чексумма). Просто удалить эти размеры и сформировать из энтити 4ds фреймы не получится, так как может отличаться и количество значений-данных, и их порядок.

Ага, ну я и говорю, что надо попасть в структуру, со Scene2 тоже знаком.

А я ещё знаете, что хотел спросить, геометрия city_music может быть невыпуклой? И могут ли в одном таком фрейме быть фактически 2 области? Я как-то пробовал так сделать (не в 4ds, а только в scene2). Есть 2 области (оаквуд в городе и около мотеля за городом), где одна и та же музыка звучит. Вот хотел их объединить, чтоб дополнительно музыкальный файл в мод не класть. Но почему-то не работало нормально. Вот и думаю, может, она работает только когда геометрия выпуклая (когда нету как-бы углублений). Но может и ошибок наделал при соединении, не знаю.

И у лайт-сектора требуется ли определённый жёсткий порядок перечисления вершин/фейсов? Если, допустим, просто перенести их блоки из стандартного визуала (исключив из вершин нормали), то будет сектор работать? Или придётся переделывать?

GOLOD55 18.05.2023 01:44

Цитата:

Сообщение от Firefox3860 (Сообщение 19994)
будет с carindex-ом конфликтовать

надо тестить, ставя машину через сцену2 с нерегенным именем модели. для этого и удобна мб такая тень будет, иначе ж тени у таких машин нету.
Цитата:

Сообщение от Firefox3860 (Сообщение 19994)
у лайт-сектора требуется ли определённый жёсткий порядок перечисления вершин/фейсов?

да.

grandshot 18.05.2023 01:47

Firefox3860, вероятно, структура frame_area точно такая же как у окклюдеров. Потому что их энтити в 4ds схожи.

Firefox3860 18.05.2023 01:55

Цитата:

Сообщение от grandshot (Сообщение 19996)
Firefox3860, вероятно, структура frame_area точно такая же как у окклюдеров. Потому что их энтити в 4ds схожи.

Я тогда даже её понял, сделал в занозе свою область по нужной форме и перенёс в scene2 по его структуре. Но работало очень криво. Посмотрел на форму, многоугольник в её проекции на x-z был невыпуклый. Тогда раздедил на несколько выпуклых - и всё стало отлично. Поэтому, наверное, и объединение не сработало...

Цитата:

Сообщение от GOLOD55 (Сообщение 19995)
да.

Круто :D А какой этот порядок, известно?

GOLOD55 18.05.2023 02:05

Цитата:

Сообщение от Firefox3860 (Сообщение 19997)
А какой этот порядок, известно?

а хрен знат. я када делал в гексе то копировал с оригинала порядки.
Но может самому мешу пофиг как(можно с занозы взять его), но с лайт_окнами сложнее.


Текущее время: 11:08. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.11 Release Candidate 2
Copyright ©2000 - 2025, vBulletin Solutions Inc. Перевод: zCarot