Half-Life и Adrenaline Gamer форум http://aghl.ru/forum/ |
|
[TUT] Entity attaching (to unique model bone) http://aghl.ru/forum/viewtopic.php?f=39&t=731 |
Страница 1 из 1 |
Автор: | Turanga_Leela [ 29 мар 2012, 17:17 ] |
Заголовок сообщения: | [TUT] Entity attaching (to unique model bone) |
Цитата: 1) Открываем модель к которой хотите приаттачить энтитю 2) Открываем вкладку "render" 3) Ставим галочки напротив: Attachments + Bones 4) Находим единственную красную точку - ориджин модели Тут возникает не большая не стыковка, если к примеру взять привязку класса beam, то pev_body - будет отвечать за искажение луча, если же взять точечный обьект к примеру env_sprite, то pev_body - будет отвечать за определение точки привязки (об этом следующий пункт) 5) Находим желательную точку привязки - точки обозначены зеленым цветом 6) Начинаем считать вектора(оранжевые линии) связывающие синие точки от ориджина модели до точки привязки, на примере ниже 11-13(т.к. 3 точки привязки подряд) таких векторов (Player), на 2м примере (Turret) 2 вариации 1) Можно привязать к дулу пулемета 2) К его крыше Вложение: 7) Подставляем получившиеся значения в алгоритм set_pev(ent, pev_aiment, target) // target - индекс энтити для аттача (стартовой) set_pev(ent, pev_skin, target | (1 << X)) // Где Х - число векторов(смещений), можно получившееся значение (1 << X) перевести в hex, к примеру при 13 смещениях значение будет иметь вид - 0x2000 При аттаче точечного обьекта нужно задать верный body set_pev(ent, pev_body, Y) // где Y - порядковый номер точки привязки (нумерация начинается с 1) относительно ориджина (у игрока последняя точка привязки при 13 векторах = 3) И в заключении пример привязки спрайта к рукам игрока ▼ Код PS Во время тестинга точечного env_beam при попытке привязки к статичной энтите (на типо "monster_turret", при привязке к игроку глюков не обнаружилось) возникал стабильный глюк. Примерно в процентном соотношении - 50/50 спрайт не аттачился к модельке, причину пока установить не удалось. Менял мув тайп модельке, менял movetype ent - follow/noclip, пробывал создавать с задержкой и менять класс env_beam - info_target, но улучшений не наблюдалось ... |
Автор: | [WPMG]PRoSToTeM@ [ 06 июл 2017, 10:33 ] |
Заголовок сообщения: | Re: [TUT] Entity attaching (to unique model bone) |
Вообще это привязка к аттачментам, а не костям. И сразу оговорочка, привязывать можно только спрайты. Ничего считать не надо, надо просто как-то подсмотреть номер аттачмента или перебрать его, там всего-то 4 значения. Для привязки луча необходимо выставить skin равным entity | ((attachmentId + 1) << 12), attachmentId от 0 до 3. Для остальных skin равным entity и body равным attachmentId + 1. Впрочем, можно и в hlsdk глянуть и юзать код оттуда. Этот код вообще не несёт смысла для обычных энтити (не лучевых), т.к. движок вытаскивает из skin только номер энтити, да и вообще 0x1000 не дойдёт до клиента, т.к. в delta.lst только 9 бит указано. Код: #define hex_Offset 0x1000 // 1 << 12 - смещаем на кол-во пройденных векторов Цитата: В чем явный смысл такого переприсвоения с запросом текущего статуса - лично мне на момент написания статьи не понятен Он необходим в случае, когда тебе нужно поменять только номер аттачмента, не изменяя номер энтити, правда у тебя очень странная реализация.
|
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |