Конвертер мешей в окклюдеры для 4ds
Собственно сабж скачать без регистрации и смс https://cloud.mail.ru/public/2g9Y/5E9EhRSPN или https://yadi.sk/d/O6504YbbvxOhYQ
попробовал я таки поиграться с окклюдерами в 4ds и понял, что конвертирование ручками - вот вообще не моё :D вспомнил, что когда-то писал что то для 4ds и забросил, когда осознал, что структура значительно сложнее, чем описано на вики (был там раньше раздел, посвященный мафии, не знаю как щас). открыл, пришел в ужос, переписал, благо сейчас у меня есть шаблоны hdmaster'a c разжеванной структурой :) ну и вот результат. открывает медленно (особенно заметно на больших файлах - scene.4ds фрирайда или тестаросса Staghound'a), сохраняет быстрее :) по поводу поиграться с окклюдерами. имхо, эксперимент прошел успешно! :D видео с результатами: https://cloud.mail.ru/public/5Jmy/2Um4fJd8t за качество видюхи прошу не бить, у меня отказалась грузиться оригинальная запись на 1.1 гб, у которой качество тоже было не ахти :D пришлось еще пережимать на видео видно, что дым состоит из кусочков, которые по очереди прячутся за окклюдером. окклюдеры стоят по периметру двора в больших зданиях, и размером чуть меньше самих домов. и по горизонтали проблем не возникает, но вот по крышам... по дыму видно, что граница действия окклюдера явно выше крыши. или по горизонтали его распирает - хз. и еще - окклюдер работает, пока он между камерой и объектом. если камера попадает внутрь окклюдера - он отключается Развернуть для просмотра ну и самое главное - окклюдер работает, только если моделька с ним вставлена в scene2.bin. в кэше не работает. зато скорее всего заработает в scene.4ds. понимаю что это очевидно, но я вечер потратил чтобы добыть это знание :D
[свернуть] Добавлено через 10 минут и мне лень делать новую тему, поэтому тут https://cloud.mail.ru/public/2fFG/KWDgCR6eX или https://yadi.sk/d/Tuob9ghecmDtdw это Rotation Calculator - конвертер человеческих ротаций (которые в градусах по трем осям) в квантернион - 4 флоат-значения, как оно есть в 4ds. автор не я, нашел на каком то сайте по гта. пара моментов: 1. писался явно для гта, так что выдает xyzw вместо wxyz, нужных мафии, но это мелочи 2. хуже то, что при повороте по всем трем осям выдает неправильный результат (хз, мож в гта оно и правда иначе считается). в таких случаях помогают онлайн конвертеры. я вот этим пользуюсь: https://quat.zachbennett.com/ он во первых выдает как надо wxyz, а во вторых умеет не только градусы в wxyz, но и обратно ------------- upd от 10.05.2023: новая версия |
Вот это дело, спасибо :)
а размер окклюдеров не изменяет программа при конвертировании? вершины берёт какие есть в объекте, без смешения? я вот сделал одинаковые кубы, и один из них сконвертировал. как будто сам окклюдер стал меньше, а верхняя граница - почему-то выше. или игра так отрисовывает?.. https://mafia-game.ru/forum/imgcache...teukyeksjs.jpg https://mafia-game.ru/forum/imgcache...egzpjeret3.jpg https://mafia-game.ru/forum/imgcache...vxytqfxmup.jpg Конвертер квата тоже пригодится, жаль что только онлайновый правильный. помню, один раз мне вообще пришлось вручную кват считать :D (хорошо одна ось была). а в оснвном я мве использую для этих целей :) |
перепроверил. вроде всё норм, вершины копируются как есть. побайтово сравнил исходник и конверт - совпадает. так что я склонен валить всё на игру :D
а так да, тоже с этим столкнулся. рабочая зона окклюдера явно не совпадает с размерами :( чтоб не заслонялся оак хилл на видео, я соответствующий окклюдер опускал с -6 до -15 |
Можно на другой файлообменник загрузить? У меня с мэйл.ру не хочет скачиваться, почему то.
|
Цитата:
|
не прошло и 5 лет, и подъехала новая версия :) теперь это не узкоспециализированный конвертер, а еще один редактор 4ds (ведь это именно то, чего не хватало в 2023?)
mail.ru yandex.ru архив защищен мегапаролем 1234, потому что mail.ru находит там вирус и не дает расшарить. вирусов там нет (ну, я не добавлял), верьте мне! :D антивирусы от мс не находят ничего, других антивирей под рукой нет https://mafia-game.ru/forum/imgcache...ywcugcdytw.jpg из умений программы: - прочитать и сохранить 4ds файл :) - скопировать/удалить объект(ы) - поправить position объекта(ов) - поменять properties объекта(ов) - сконвертировать первый лод visual object'a в окклюдер - посмотреть/поменять флаги материала - посмотреть/поменять текстуры материала (нужна папка с текстурами) - удалить материал (с обязательной заменой на другой) Развернуть для просмотратут будет немного лирики, читать необязательно. некоторые особенности ("не баг, а фича"): - на вкладке с объектами разрешено множественное выделение (в т.ч. с шифтом или контролом), на вкладке с материалами - только одиночное (так надо. возможно, потом поправлю) - при длительном использовании отъедает память - дочерние окна меньше определенного размера увеличиваются до этого самого размера при перетаскивании - изменение флагов материалов напрямую не влияет на сами материалы. но некоторые флаги влияют на структуру файла, это всплывет при сохранении - снизилась скорость чтения/записи по сравнению с occl_converter'ом. взамен функция чтения/записи стала одним целым (раньше было 2 разных, с соответствующим количеством ошибок), часть параметров вынесена в отдельный массив (мне стало проще править код :D) - кнопка рефреш не дает ничего полезного, просто пересчитывает отображаемые массивы материалов/объектов (да, отображается не совсем то, что прочиталось с файла) и перерисовывает гуи - наверное, есть еще что то, но сейчас не помню насчет "прочитать и сохранить 4ds файл" - на самом деле, именно это главная фича. серьезно. не было бы ее - не было бы и всего остального. и именно она заняла больше всего времени и сил. за структуру 4DS спасибо RoadTrain'у и его шаблонам для 010EDITOR, без них я бы не справился. вообще, еще когда начал ковырять мафию (году в 2015-2016), захотел редактор, которого тогда не было - с блэкджеком редактируемой табличкой-списком материалов/объектов. и вот именно редактируемой таблички пока не получилось, так что, наверное, будут новые версии. TODO: - editable listview - кнопки undo/redo - в чтение/запись добавить оставшиеся типы объектов - конвертер в другие типы объектов - пофиксить проблемы с памятью (обнулять локальные массивы в конце функций?) написано на autoit v3.3.14.5. почему на нем? потому что я могу :D если вдруг кому интересно - могу выложить исходник, для запуска нужен сам autoit v3.3.14.5 [свернуть] |
Autoit это ругательство :D
Полезнее будет изучить Python и переписать прожку на модуле TKinter :) |
Питон это ругательство :D (ну, по крайней мере, для меня, уж извините :D)
admpos, круто. Кажется, программы с функций удаления и копирования объектов ещё не было. Будет полезно :) Ты тут даже меня опередил - я тоже делаю программу для 4ds, вот тут показывал - https://mafia-game.ru/forum/showpost...&postcount=110 C# и winforms. Недавно как раз только сохранение в ней дописал. Я пока ещё не все функции твоей проги просмотрел, но как понял, типы объектв она должна все читать, включая части тел людей и животных, их кости и target-объекты. Пока увидел, что открывает не все файлы нормально. Некоторые локации с лайтсекторами, например, - объекты прочитать не может. Модель Тома не открывает - на каком-то из объектов сбивается. На морфинге в одной из локаций тоже сбилась. Не знаю, это из-за тех шаблонов ли, сам их ещё не рассматривал подробно. Ещё, кстати, последний байт (один или несколько) в модели не обязателен, его может и не быть. ____ А, морфинг вроде и не разобран, ну понятно, тогда на будущее. |
Цитата:
Теперь я тоже напишу свой 4ds менеджер на Питоне :D |
Цитата:
|
вот слов нет, одни эмоции. и где вы все были раньше? у меня есть пачка пожеланий к будущим редакторам! :D
питон, конечно, лучше, когда его знаешь. а вот еще sql хорош, и его я даже знаю, а толку. кстати, структура 4дс вообще отлично легла бы в базу данных, но я не смог sqlite прикрутить Цитата:
если в файле нет последнего байта - считается, что там 0. при записи после последнего байта дописывается еще один 0. о, вот еще что забыл. если выбираешь "сохранить как" - в timestamp принудительно проставляется 0xFFFFFFFFFFFFFFFF, аналогично 4ds_unlocker'у, иначе заноза отказывается открывать файл |
Цитата:
Там как раз питон |
Kardini, Я лучше с нуля свою версию сделаю, чтобы разобраться как писать плагины для блендера :)
|
Цитата:
Пожелания всегда готов выслушать ;) Цитата:
Цитата:
|
Цитата:
|
Вложений: 1
|
Цитата:
А у тебя есть информация по всем битовым флагам материала, за что конкретно они отвечают? |
Да, читает все. Теперь буду писать экспорт.
Цитата:
|
хы движуха какая-то движится:)
|
Вложений: 3
Цитата:
Там много всего интересного. К примеру, фрейм объект Landscape, представляющий собой интерпретацию террейна из первого H&D () (Принимает четыре текстуры и одну текстуру детализации). Или другой объект Particle element, представляющий собой аналог партикла из scene2. Либо объект тени(I3D_VISUAL_SHADOW), который может быть как аналогом 6ds файла, так и лайтмапом. А еще интересно, что при определенном типе сектора в нем мог идти настоящий снег, использующий текстуру Snow.tga, а не имитация из дождя. 4ds моделей с этими объектами в играх на двиге не встречается, поэтому единственный вариант остается получить структуры реверсом. Псевдокод в этом деле не помощник, придется дизассемблировать. Кто умеет? :) |
LS3DF.dll занимается лишь рендерингом, сами объекты-то(фреймы) подсовывает екзе.
Landscape вроде только и неизвестен как фрейм ога, но вряд ли там че тересное. |
Вложений: 1
GOLOD55, судя по названиям функций, которые мне удалось восстановить из дебаг принтов, лоадеры структур находятся в LS3DF'е.
И раз фреймов нет в шаблонах hdmaster'a\RoadTrain'a, значит они считаются не разобранными. Другой инфой-то никто публично не делился, если она и есть. |
Вложений: 1
Интересную штуку обнаружил: файл tvoda01.4ds совершенно иной версии 58 (в Мафии 29), использует текстуры tvoda и tvoda1, и был создан 15 марта 2000-го. Движок игры его не воспринимает, так как структура другая. Вероятно, представляет из себя блок воды, возможно даже с морф анимацией как в порту.
|
Вложений: 1
Цитата:
Сделал ещё у себя отображение временной метки :) А ты знаешь, как точно в ней указывается, заблокирован файл или нет? Вроде для разблокировки необязательно все 8 байт 0xFF, unlocker там всего какой-то один бит меняет... |
Цитата:
Скоро скачаю все игры на двиге и проверю. Из мафии дампнул все модели. Вот, например, таблица с названиями моделей и текстурами: https://docs.google.com/spreadsheets...it?usp=sharing Поздновато, вероятно, так как ретекстуры уже давно сделаны. Но пусть будет ) Цитата:
|
Дампы из Hidden & Dangerous 2: https://docs.google.com/spreadsheets...it?usp=sharing
Дампы из Хамелеона: https://docs.google.com/spreadsheets...it?usp=sharing Подтвердилось, что неизвестных типов фреймов в играх не встречается. Обнаружил лишь сломанную модельку jd_mother.4ds в Хамелеоне, и на этом все (побит фрейм VisualSingleMorph в конце). Wings of War пока не закачалась, но не думаю что в ней чего нового найдется. |
Ребят, вы меня простите, а про что вы тут говорите? Ничего не понял, но очень интересно))). Если не сложно, правда, скажите о чем разговор идет?
|
Chicago1920, об игровых 3д моделях в специальном формате *.4ds :)
|
А какой там тип фрейма в 4дс кто-то запихал не так давно, не помню?
|
Цитата:
Добавлено через 54 секунды grandshot, значит, в итоге неизвестных версий в тех играх тоже не нашлось? |
А, О! хех. А структурка окклюдера в 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дс должен быть музик_ареей и т.п. |
Вложений: 1
Цитата:
Или вот во вложении класс из моей проги на c# (если так удобнее) (в языке тип uint/int - 4 байта, а ulong/long - 8 байт). Цитата:
Получается, можно вообще любой из этих типов запихать в 4ds, если поставить однобайтовый флаг и попасть в структуру? Даже model_obj - будет одна модель вызывать другую :D? sector (5) - это я так понимаю, запись о звуковых параметрах при нахождении в одноимённом секторе 4ds. Можно было бы их встраивать прямо в модели своих локаций, а не в scene2 :) shadow (0F) - прямо в модели машин, чтоб 6ds не класть отдельно :) В невизуалах, наверное, потому, что свою геометрию также не отображает, а только эффект даёт, как и окклюдер. А scene (0D) - это что? Car_particle (11) и Frame_volume (0B) - не одно и тоже?) |
Фрагмент - резалт анализа программы генерации невизуалов(из лс3дф судя по всему).
sector (5) дак енто лайт_сектор и есть. в 4дс у него ж флаг 05. Тень машины, пожалуй, удобно перенести в саму ее. Думаю, схема примерно та же: в самом теле объекта сперва 2 чексуммы(вертексов и фейсов) пишем, затем оба блока. ли как-то так. попробуй. По scene (0D) коммент есть, прокомментировать доп-но уже не могу, не помню. скорее всего выискивал в памяти и смотрел че там в кешированной форме напихано(примсекторы описаны как-то). Frame_volume не найдено в игре. хз че. может думми-вертикальный цилиндр? |
Цитата:
Scene2.bin энтити описаны в HD2 Wiki: https://hd2.fandom.com/wiki/Entities Цитата:
Добавлено через 1 минуту Цитата:
Добавлено через 3 минуты Цитата:
|
Цитата:
Сложно только определить, поняла ли оное игра, ведь енто невизуал :) Ну если мафа прочитает объект, следующий за ним в 4дс, и скрипт-компас в игре волумю тоже увидит(в ненулевых коордах), то норм. |
Цитата:
Цитата:
Цитата:
Цитата:
А я ещё знаете, что хотел спросить, геометрия city_music может быть невыпуклой? И могут ли в одном таком фрейме быть фактически 2 области? Я как-то пробовал так сделать (не в 4ds, а только в scene2). Есть 2 области (оаквуд в городе и около мотеля за городом), где одна и та же музыка звучит. Вот хотел их объединить, чтоб дополнительно музыкальный файл в мод не класть. Но почему-то не работало нормально. Вот и думаю, может, она работает только когда геометрия выпуклая (когда нету как-бы углублений). Но может и ошибок наделал при соединении, не знаю. И у лайт-сектора требуется ли определённый жёсткий порядок перечисления вершин/фейсов? Если, допустим, просто перенести их блоки из стандартного визуала (исключив из вершин нормали), то будет сектор работать? Или придётся переделывать? |
Цитата:
Цитата:
|
Firefox3860, вероятно, структура frame_area точно такая же как у окклюдеров. Потому что их энтити в 4ds схожи.
|
Цитата:
Цитата:
|
Цитата:
Но может самому мешу пофиг как(можно с занозы взять его), но с лайт_окнами сложнее. |
Текущее время: 23:36. Часовой пояс GMT +3. |
Powered by vBulletin® Version 3.8.11 Release Candidate 2
Copyright ©2000 - 2024, vBulletin Solutions Inc. Перевод: zCarot