Грамотное создание субмоделей оружия

Сообщения
106
Реакции
7
Всем привет, решил наклепать субмоделей для своего пака оружия. Банальным спихиванием референсов в один бодигрупп нынче никого не удивишь. Но я обратил внимание на w субмодель из одного плагина. Там помимо этого в qc прописаны все хитбоксы, в айдл-анимации прописаны все кости всех стволов и их координаты, есть в этом смысл? В голову лезет лишь точность касания игрока к модели и регистрации тача. Но самое непонятное, зачем прописывать все кости всех стволов в каждом smd самих орудий? Потом я начал разбираться с p моделями, гайдов и примеров подробно сделанной субмодели p_ с такими нюансами я не нашел. Делал по наитию, пришел к тому, что анимация всего лишь одна (Айдл), а одинаковых костей с разными координатами в этой анимации много, поэтому назвал группы этих костей по-разному для каждого ствола. После 9ого ствола количество костей превысило лимит 128, как я могу обойти эту неприятность?
 
Сообщения
75
Реакции
21
1. По моему скромному опыту, кажется, кости в w_ не имеют применения, но были оставлены допустим потому, что моделлер для w_ модели скопировал reference v_ модель вместе с костями в ней. А разные хитбоксы у каждой субмодели действительно имеют место быть, их можно использовать для наиточного регистрирования прикосновения к weaponbox путём тысячи и одного «костыля». Как по мне, слишком много труда при создании подобного «с нуля» для такой незаметной детали, понадобится только перфекционисту.
2. По моему скромному опыту, это вполне возможно использовать одни и те же кости в нескольких анимациях. Не понимаю, откуда у вас в p_ модели много костей, оставляете одну кость, к которой крепится модель игрока при держании оружия в руках, берёте модель, которая изначально хорошо лежит в руках у игрока, берёте из неё эту базу, эту единственную кость, и потом уже можно сохранить это как базу, и к ней грамотно подгонять референсы различных оружий, которые будут переключаться в рамках бадигруппу. Единственной проблемой будет кость, которую игра использует как позицию для отображения muzzleflash.
3. По моим скромным знаниями, вы можете попробовать добавлять p_ модели как бадигруппу модели игрока. Это вполне возможно.
 
Сообщения
923
Реакции
548
Помог
13 раз(а)
w_ модели скопировал reference v_ модель вместе с костями в ней
1. не совсем правда - челы просто копируют весь файл w_ модели в другую модель, закидывают .QC и компилят "как есть"
отсюда и появляется множество костей
еще этот способ полезен, если внутри другой модели есть анимация, а соединить модели нужно

А разные хитбоксы у каждой субмодели действительно имеют место быть, их можно использовать для наиточного регистрирования прикосновения к weaponbox
1. хитбокс, исходя из названия, нужен только для регистрации урона. Размеры для тача определяются кодом
 
Сообщения
75
Реакции
21
хитбокс, исходя из названия, нужен только для регистрации урона. Размеры для тача определяются кодом
C основным применением "ящиков для попадания" я знаком :D . Помнится, видел я в обсуждении Hitbox Fixer'a здесь, что кто-то до патча модуля имел проблему с неправильным просчётом колизии игрока с энтити-моделью открытого шкафа. Короче, можно для таких энтити в модель(.mdl) добавить флаг STUDIO_TRACE_HITBOX и игра будет для всех SOLID_BBOX энтити для колизии с этой моделью использовать хитбоксы модели вместо бэбоксов(bbox, bounding box). Источник этой информации ‒ этот тред на "аленях".
 
  • Funny
Реакции: Arni
Сообщения
106
Реакции
7
Levka4, подзадержался с ответом я.
1) исключено, у модели, которую я изучал все изначальные модели w, это просто большая субмодель, которая хранит модели всего оригинального оружия и предметов из КС. А насчёт тача я так и предположил, иных альтернатив не вижу. Хотя ниже написали что это не так.
2) А в том и прикол, что анимация у p модели всего-то одна. И положение костей у каждого оружия в этой анимации разное. Сходные координаты там буквально у 10 костей, не более. Звучит как нереальный костыль, такое я видел только у неписей в модификации к ХЛ mastersword continued. Да и моделлер я никакой. Я подумал, что можно по идее оформить вторую анимацию idle, где будет прописано положение костей второй группы оружия, в таком случае два ствола смогут делить между собой одинаковые кости, но я не знаю как бы прописать включение второй анимации айдла при определенном оружии в руках, да и возможно есть способ ещё проще, поэтому я и тут. В любом случае, спасибо за ответ.
15 Янв 2025
BalbuR,
1) Я тоже так сначала подумал, но есть НЮАНС. В каждом референсе оружия из субмодели там имелся пронумерованный список костей всего пака айтемов и во всех референсах нумерация сохранялась. И корректно указывалась в сотнях мест в каждом из референсов. Чел буквально изменил стандартные нули в сотне мест каждого из 29 референсов, это не похоже на ctrl-c + ctrl-v от балды.
2) А зачем тогда вообще нужны хитбоксы в pvw моделях? У меня в субмоделях оружие лежит под разным углом, что тогда отвечает за точное прикосновение к нему?
 
Сообщения
923
Реакции
548
Помог
13 раз(а)
Чел буквально изменил стандартные нули в сотне мест каждого из 29 референсов, это не похоже на ctrl-c + ctrl-v от балды.
если он смержил все рутовые кости в одну - круто
только зачем? обычно такое нужно только для аттачментов, в остальных случаях фактически и не нужно

А зачем тогда вообще нужны хитбоксы в pvw моделях?
bounding box - определяет размер модели
например, если у чела невалидный бокс, сервер его не пустит на сервер с mp_consistency 1
были такие челы, которые p_ модели делали с полкарты (сами знаете для чего)

так же модель можно трейсить через engfunc_TraceModel

за тач он не отвечает, кроме как ссылки выше
там исключение из правил

углы движок плохо понимает, кстати
 
Сообщения
106
Реакции
7
BalbuR, получается, все расписывания координатов костей и хитбоксов в w модели лишнее? И где я могу найти гайды с прогонами по всем этим нюансам с аттачментом и тд, а также подробным расписыванием создания субмоделей? Я глянул v субмодели Сисы, меня нормально так тряхнуло.
 
Сообщения
923
Реакции
548
Помог
13 раз(а)
BalbuR, получается, все расписывания координатов костей и хитбоксов в w модели лишнее? И где я могу найти гайды с прогонами по всем этим нюансам с аттачментом и тд, а также подробным расписыванием создания субмоделей? Я глянул v субмодели Сисы, меня нормально так тряхнуло.
обычно все хб стираются и компилятор сам их генерирует
исключением может быть момент, когда у тебя пачка моделей и нужны разные хитбоксы под конкретный меш
там уже заморачиваешься и с костями и анимациями

гайдов не видел, увы
 
Сообщения
75
Реакции
21
обычно все хб стираются и компилятор сам их генерирует
Это напомнило мне момент годичной давности, который я могу не помнить во всех деталях, но суть была в том, что я работал с моделью ящика со снабжением, и заметил, что тач происходит поздно, словно bbox (тогда я ещё не особо отличал его от hbox 😅) у модели слишком маленький, поэтому начал чудить со всеми боксами модели что только мог, и помнится когда вообще удалил все боксы, скомпилировал, и после этого проверил модель в просмотрщике моделей, там чудом появлялись и hbox и bbox и, по-моему, даже sbox 😅. Только сейчас я понимаю, что границы прикосновения вообще нужно было править в коде)).
Я глянул v субмодели Сисы, меня нормально так тряхнуло.
Я тоже пару раз просматривал его исполнения бодигрупп в моделях. По идее это всё выполнено при помощи централизированной отправки сообщения WeaponAnim игроку и грамотного отслеживания и (если требуется)блокировки всех функций и переменных, что задействованы в обновлении и отправке боди и анимаций. Также важно создать удобный workflow и систему для контроля индексации всех значений дабы банально во всех них не потеряться. Неизвестно только (нужно экспериментировать), в какие ограничения движка упёрся SISA, что вынудило его все равно расгрупировать модели оружия по нескольким файлам.
 
Сообщения
106
Реакции
7
BalbuR, понял, чекнул, хитбоксы, ббоксы, аттачменты сами записываются, в референсах и анимациях кости другого оружия сами указываются, а место где у P модели появляется спрайт выстрела тоже в модели указывается? Поставил субмодель с использованием энтити вместо p модели, а спрайт выстрела появляется в центре винтовки, а не в конце дула.
21 Янв 2025
@Levka4,ну теперь я плюс-минус понял. А насчёт view субмоделей, у меня припасены фрагменты кода, там да, при каждом пуке надо посылать анимацию с нужной боди, заранее сделать дамми-анимацию и спамить ей в клиент апдейте или что-то типо того, если вспомню и найду у себя, то скорее всего смогу реализовать. А вот создание самой модели для меня проблема. Сделать субмодель двух одинаковых стволов с разной текстурой - проблем нет, но когда я попробовал с двумя немного отличающимися своими мешами, то у второго ствола крышка затвора начала закрываться не полностью во всех анимациях. Хотя 80 процентов костей идентичны и указаны на одинаковых координатах.
 
Сообщения
923
Реакции
548
Помог
13 раз(а)
Поставил субмодель с использованием энтити вместо p модели, а спрайт выстрела появляется в центре винтовки, а не в конце дула.
да
в этом случае аттачмент не наследуется на такую энтити
как вариант сделать пустую p_ модель с аттачментами и регулировать через var_controller'ы
посмотри как сделано, будет проще разобраться
 
Сообщения
106
Реакции
7
BalbuR, спасибо за наводку, но бл*...

ТРЕБОВАНИЕ:

Код:
native bool: api_wpn_player_model_set( const pPlayer, const szModel[ ] = "", const iBody = 0, const iSkin = 0, const iSequence = 0, const Float: flAttachment[ ] = { 0.0, 0.0 } );

А ИМЕННО: const Float: flAttachment[ ] = { 0.0, 0.0 }
ИСПОЛНЕНИЕ:


Код:
new const Float: PModelMuzzlePoint[][] =
{
    {37.604500, 0.211054},
    {34.716564, 0.211054},
    {36.174900, 1.584593},
    {38.136562, 0.190281},
    {38.136562, 0.190281},
    {40.616890, 1.584593}
};

В деплое:

api_wpn_player_model_set(pPlayer, WeaponModelPlayer, WeaponNumber, 0, PModelMuzzlePoint[WeaponNumber]);

WeaponNumber - индекс ресурсов для нужного ствола.
ЧТО МЫ ИМЕЕМ?

Код:
error 035: argument type mismatch (argument 5)
Вопрос к знатокам: в чем я неправ?
22 Янв 2025
А самое забавное, что у меня уже имеется аналогичная отправка массивов из матрицы в свой инклуд и ОНА РАБОТАЕТ, хотя разницы нет
 
Сообщения
78
Реакции
40
Помог
4 раз(а)
Ash Fever, внимательнее
1 - pPlayer
2 - szModel
3 - iBody
4 - iSkin
5 - iSequence
6 - flAttachment

api_wpn_player_model_set(pPlayer, WeaponModelPlayer, WeaponNumber, 0, 0, PModelMuzzlePoint[WeaponNumber]);
 
Сообщения
106
Реакции
7
CSBishop, Спасибо, в глаза долбился.
24 Янв 2025
В эти дни добавил в плагин еще пару винтовок и заметил, что p_ модели отображаются мегакриво, буквально поперек рук торчат. Глянул, а там така хрэновина:
 

Download all Attachments

Сообщения
106
Реакции
7
На первой пикче кривая модель, угол просмотра модели не менял, такая разница положения моделей. Глянул референсы, пенял,было, на координаты кости модели, но это не то. На ум пришло, что нужно исправлять положение кривого мэша в milkshape, или делать сабмодели по положению моделей. Но посмотрев старые исходники сабмодели я увидел, что некоторые нормально расположенные сейчас модели тогда были в неправильном положении, поэтому я снова здесь, в чем может быть дело?
24 Янв 2025
Пример:
 

Вложения

  • 117.3 KB Просмотры: 15
Сообщения
923
Реакции
548
Помог
13 раз(а)
На первой пикче кривая модель, угол просмотра модели не менял, такая разница положения моделей. Глянул референсы, пенял,было, на координаты кости модели, но это не то. На ум пришло, что нужно исправлять положение кривого мэша в milkshape, или делать сабмодели по положению моделей. Но посмотрев старые исходники сабмодели я увидел, что некоторые нормально расположенные сейчас модели тогда были в неправильном положении, поэтому я снова здесь, в чем может быть дело?
24 Янв 2025
Пример:
каждая модель регулирует свою анимацию под конкретный m_szAnimExtention
чтобы это исправить, создавайте еще одну анимацию с небольшим смещением под нужный anim extention

если что animExtention = анимация от третьего лица: rifle, onehanded, ak47, m249, dualhanded (в модели игрока это пачка анимаций ref_aim/shoot/reload_ak47, к примеру)
 
Сообщения
106
Реакции
7
BalbuR, в том-то и прикол, что все модели в моем паке это снайперские винтовки использующие анимацию rifle у игрока(ну может не все, насчёт sl8 или wa2000 не знаю, но до них ещё не дошел, но у parker hale m82 и remington 24 которые я сейчас добавил ну тооочно должна быть анимация rifle). Да и мосинка использующая анимацию rifle, раньше была кривой, а после ленивой перекомпиляции p субмодели из тех же ресурсов встала нормально.
 
Сообщения
923
Реакции
548
Помог
13 раз(а)
простыми словами у моделей под m249 extention угол пушки чуть приподнят вверх, у остальных одинаково
 
Сообщения
106
Реакции
7
Кстати, регулировка аттачмента флэша у Тёрки идёт только по одной оси, по длине самого оружия, из-за чего на больших пушках Флэш появляется криво, левее на 5-6 из 25 единиц от нужного, я попробовал сделать так, пока все пашет, но с акимбо оружием я ещё не тестил.

В модели p_null:

$controller 0 "rflash" X -25.000000 25.000000
$controller 2 "lflash" X -25.000000 25.000000
=>
$controller 0 "rflash" X -25.000000 25.000000
$controller 1 "rflash" Y -25.000000 25.000000
$controller 2 "lflash" X -25.000000 25.000000
$controller 3 "lflash" Y -25.000000 25.000000

В исходнике:

bool: CBasePlayer__WeaponPlayerModel( const pPlayer, const szModel[ ] = "", const iBody = 0, const iSkin = 0, const iSequence = 0, const Float: flAttachment[ ] = { 0.0, 0.0 } )
=>
bool: CBasePlayer__WeaponPlayerModel( const pPlayer, const szModel[ ] = "", const iBody = 0, const iSkin = 0, const iSequence = 0, const Float: flAttachment[ ] = { 0.0, 0.0, 0.0, 0.0 } )

UTIL_MoveController( pPlayer, 0, flAttachment[ 0 ], AttachmentMoveMinMax );
UTIL_MoveController( pPlayer, 1, flAttachment[ 1 ], AttachmentMoveMinMax );
=>
for (new i = 0; i < 4; i++)
UTIL_MoveController( pPlayer, i, flAttachment[ i ], AttachmentMoveMinMax );

В инклюде:

native bool: api_wpn_player_model_set( const pPlayer, const szModel[ ] = "", const iBody = 0, const iSkin = 0, const iSequence = 0, const Float: flAttachment[ ] = { 0.0, 0.0} );
=>
native bool: api_wpn_player_model_set( const pPlayer, const szModel[ ] = "", const iBody = 0, const iSkin = 0, const iSequence = 0, const Float: flAttachment[ ] = { 0.0, 0.0, 0.0, 0.0 } );
26 Янв 2025
@BalbuR,з
значит я правильно тебя понял, у меня пушки под один и тот же экстеншн, одни пашут, другие нет
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу