Показать все 9 сообщений этой темы на одной странице |
HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Наши проекты (https://hlfx.ru/forum/forumdisplay.php?forumid=1)
-- S2GConverter: перенос моделей с Source на Goldsource (https://hlfx.ru/forum/showthread.php?threadid=5811)
S2GConverter: перенос моделей с Source на Goldsource
Что за утилита?
Автоматический конвертер моделей с движка Source на GoldSource. Поддерживает модели с большим количеством полигонов (на тестах максимум был 80K полигонов, потом у меня закончились высокополигональные модели). Кроме того, конвертер переносит и все анимации.
На данный момент не поддерживаются следующие типы моделей:
1) Модели с анимациями больше 64Кб
2) Модели с числом костей больше 128
Примеры результатов:
Как использовать?
1) У вас должен быть установлен Python версии 3.*
2) Установите пакет Pillow, введя в командной строке следующее:
code:
pip install Pillow
code:
python S2GConverter.py -i путь\к\модели.mdl
Спасибо огромное. Работает. Очень пригодится.
__________________
Мой мод на Xash
Такой вопрос: переносит ли эта штука сорс-специфичные возможности, которые я добавил в своём расширенном формате?
Ну навскидку:
- развесовку
- мультислойные анимации
- параметры позы
- инверсную кинематику
- группы хитбоксов
- джиггл-кости
- интерполяцию костей по кватернионам
Потому что корректно сдекомпилировать сорсовские модели как правило невозможно, особенно если там есть дельта-анимации.
А вот переконвертить без потери данных - реально.
Добавлено 20-03-2022 в 16:51:
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Что касается сорс-специфичных возможностей, то я такого не добавлял (честно признаться, я из вашего списка не понял ни пункта, уж в таком не шарю, извините).
По поводу "на данный момент" есть у меня пара мыслей на решение сей проблемы. Для П1 можно пытаться как-то пытаться группировать кости в одну (результат будет сомнительный), так же можно пытаться как-то определять кости, используемые (условно) для контроля поведения волос (видел такое в модели Орнштейна из Dark Souls аддона к GMod'у) или нечто подобное и выпиливать их.
Для П2 можно попробовать безбожно вырезать фреймы. Для Idle анимаций такое может и прокатывает (сам при конвертировании моделей Doom Eternal из GMod'a так делал), однако если речь идёт о каких-то сложных анимациях - приведёт черт знает к чему.
А мне казалось, что в сорсе и так лимит на 128 костей
1 | struct mstudioboneweight_t |
2 | { |
3 | DECLARE_BYTESWAP_DATADESC(); |
4 | float weight[MAX_NUM_BONES_PER_VERT]; |
5 | char bone[MAX_NUM_BONES_PER_VERT]; |
6 | byte numbones; |
7 | }; |
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Запускаю на семерке, питон 3.8
code:
C:\Users\HOME>python c:\users\home\downloads\s2gconverter\s2gconverter.py -i c:\ users\home\downloads\s2gconverter\sonic\sonic.mdl Analyzing .vmt files Detected material: _Tail Detected material: chr_sonic_cloth_dif Detected material: chr_sonic_scarf_dif Detected material: body Detected material: _Tail Detected material: chr_tails_eye_white Detected material: chr_tails_eye_white Detected material: _Tail Detected material: _Tail Detected material: _Tail Detected material: _Tail Detected material: _Tail Detected material: _Tail Detected material: chr_tails_eye_white Detected material: chr_tails_eye_white Detected material: _Tail Detected material: _Tail Detected material: _Tail Detected material: _Tail Detected material: _Tail Detected material: _Tail VTX Detected: True VTF Detected: True VMT Detected: True VVD Detected: True Traceback (most recent call last): File "c:\users\home\downloads\s2gconverter\s2gconverter.py", line 374, in <mod ule> main() File "c:\users\home\downloads\s2gconverter\s2gconverter.py", line 371, in main convert_model(input_data) File "c:\users\home\downloads\s2gconverter\s2gconverter.py", line 241, in conv ert_model convert_to_bmp_folder(os.path.dirname(path_to_model)) File "c:\users\home\downloads\s2gconverter\s2gconverter.py", line 46, in conve rt_to_bmp_folder subprocess.call(args) File "C:\Users\HOME\AppData\Local\Programs\Python\Python38\lib\subprocess.py", line 340, in call with Popen(*popenargs, **kwargs) as p: File "C:\Users\HOME\AppData\Local\Programs\Python\Python38\lib\subprocess.py", line 858, in __init__ self._execute_child(args, executable, preexec_fn, close_fds, File "C:\Users\HOME\AppData\Local\Programs\Python\Python38\lib\subprocess.py", line 1311, in _execute_child hp, ht, pid, tid = _winapi.CreateProcess(executable, args, FileNotFoundError: [WinError 2] Не удается найти указанный файл
У Питона вообще чудесный вывод ошибок, он меня ещё в кварке пугал.
Столько мусора выдаёт не поделу.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Ему нужны абсолютные пути чтобы запустить эксешники.
Пересел с 7 на 10ку.
Студиомодел надо оба раза вызывать по абсолютному пути(иначе он записывает путь к директории юзера с двойными бакслешами и ищет там студиомодел):
shutil.copy("e:\s2gconverter\studiomdl.exe ", os.getcwd() )
arguments = "e:\s2gconverter\studiomdl.exe " + qc_file
Тогда он доходит до упаковки мешей и падает с out of memory, командная строка потребляет 110 мб.
code:
Part 59 of sumbodel 0 was successful written ==================================================================================================== Writing part: 1 Part 1 of sumbodel 0 was successful written Writing part: 2 Part 2 of sumbodel 0 was successful written WARNING! SMD data parsing error! It can cause some problems! Excepted: e:\s2gconverter\sonic\mdldecompiler_delta.smd Writing part: 1 Part 1 of sumbodel 0 was successful written WARNING! SMD data parsing error! It can cause some problems! Excepted: e:\s2gconverter\sonic\sonic_physics.smd Writing part: 1 Part 1 of sumbodel 0 was successful written P2:Savior Studio Model Compiler XashXT Group 2018(c) grabbing: sonic_decompiled_part_nr_1_submodel_0.smd [mesh] grabbing: sonic_decompiled_part_nr_2_submodel_0.smd [mesh] grabbing: sonic_decompiled_part_nr_3_submodel_0.smd [mesh] grabbing: sonic_decompiled_part_nr_4_submodel_0.smd [mesh] grabbing: sonic_decompiled_part_nr_5_submodel_0.smd [mesh] grabbing: sonic_decompiled_part_nr_6_submodel_0.smd [mesh] grabbing: sonic_decompiled_part_nr_7_submodel_0.smd [mesh] (тут все примерно одинаково) grabbing: sonic_lod3_decompiled_part_nr_4_submodel_0.smd [mesh] grabbing: scarf_lod3_decompiled_part_nr_1_submodel_0.smd [mesh] grabbing: hand_r_lod3_decompiled_part_nr_1_submodel_0.smd [mesh] grabbing: hand_l_lod3_decompiled_part_nr_1_submodel_0.smd [mesh] grabbing: shoes_r_lod3_decompiled_part_nr_1_submodel_0.smd [mesh] grabbing: shoes_r_lod3_decompiled_part_nr_2_submodel_0.smd [mesh] grabbing: shoes_l_lod3_decompiled_part_nr_1_submodel_0.smd [mesh] grabbing: shoes_l_lod3_decompiled_part_nr_2_submodel_0.smd [mesh] grabbing: sonic_lod4_decompiled_part_nr_1_submodel_0.smd [mesh] grabbing: sonic_lod4_decompiled_part_nr_2_submodel_0.smd [mesh] grabbing: sonic_lod4_decompiled_part_nr_3_submodel_0.smd [mesh] grabbing: scarf_lod4_decompiled_part_nr_1_submodel_0.smd [mesh] grabbing: hand_r_lod4_decompiled_part_nr_1_submodel_0.smd [mesh] grabbing: hand_l_lod4_decompiled_part_nr_1_submodel_0.smd [mesh] grabbing: shoes_r_lod4_decompiled_part_nr_1_submodel_0.smd [mesh] Fatal Error: out of memory!
Временная зона GMT. Текущее время 01:23. | Показать все 9 сообщений этой темы на одной странице |
На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024