Half-Life и Adrenaline Gamer форум

Всё об игре в Халф-Лайф и АГ
Текущее время: 29 мар 2024, 02:20

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
 Заголовок сообщения: [TUT] Entity attaching (to unique model bone)
СообщениеДобавлено: 29 мар 2012, 17:17 
Не в сети
Аватара пользователя
Зарегистрирован:
24 янв 2011, 03:32
Последнее посещение:
09 дек 2021, 03:04
Сообщения: 756
Откуда: Futurama
Цитата:
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) К его крыше
Вложение:
faq_2.jpg
faq_2.jpg [ 141.45 КБ | Просмотров: 6448 ]

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, но улучшений не наблюдалось ... :(


Вернуться к началу
 Профиль 
  
 Заголовок сообщения: Re: [TUT] Entity attaching (to unique model bone)
СообщениеДобавлено: 06 июл 2017, 10:33 
Не в сети
Зарегистрирован:
26 авг 2013, 04:36
Последнее посещение:
25 мар 2018, 03:51
Сообщения: 8
Вообще это привязка к аттачментам, а не костям. И сразу оговорочка, привязывать можно только спрайты.
Ничего считать не надо, надо просто как-то подсмотреть номер аттачмента или перебрать его, там всего-то 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 - смещаем на кол-во пройденных векторов
...
set_pev(ent, pev_skin, id | hex_Offset)
Цитата:
В чем явный смысл такого переприсвоения с запросом текущего статуса - лично мне на момент написания статьи не понятен
Он необходим в случае, когда тебе нужно поменять только номер аттачмента, не изменяя номер энтити, правда у тебя очень странная реализация.


Вернуться к началу
 Профиль 
  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB