Заказать Сервер Заказать Плагин Контакты Поиск

[ вход ]
[ последние сообщения ]

Страница 1 из 212»
Форум » SourceMod - Counter Strike Source && CS GO » Обсуждение » Координаты определенной кости (или аттача) 3D модели?
Координаты определенной кости (или аттача) 3D модели?
tonline_kms65 Дата: Вторник, 19.04.2016, 04:40:24 | Сообщение # 1
Сообщений: 179
Репутация: 2 [ +/- ]
Всем доброго дня.
У меня возникла такая проблема - я не могу сообразить как узнать координаты кости 3D модели.
То что сам SourcePawn видит эти кости (и аттачи) сомнений нет. Проверенно при паренте. А вот как узнать их координаты? Может быть можно как то именно через парент это сделать?
Если есть те кто такую практику имел, напишите пожалуйста. Мне не нужен сам код - нужна логика - как это сделать. Хотя и от кода не откажусь.
 
BarD Дата: Среда, 20.04.2016, 11:07:36 | Сообщение # 2
Сообщений: 944
Репутация: 132 [ +/- ]
Как вариант: Создаешь какое-нибудь ентити, привязываешь к своему аттачу, получаешь ее координату.
 
tonline_kms65 Дата: Суббота, 23.04.2016, 19:58:01 | Сообщение # 3
Сообщений: 179
Репутация: 2 [ +/- ]
Цитата BarD ()
Как вариант: Создаешь какое-нибудь ентити, привязываешь к своему аттачу, получаешь ее координату.


:klas:
Прикольная мысль. Я бы в жизнь не догадался. Припарентить. Сделать прозрачной. И оставить.

GetEntPropVector(невидимый_парент, Prop_Send, "m_vecOrigin", Pos);
Получится тогда при движении кости будет двигаться и невидимый парент, и уже координаты парента будут координатами кости. Я твою мысль правильно понял?
Выходные будут - обязательно попробую. На свежую голову.

Добавлено (23.04.2016, 19:39:58)
---------------------------------------------
Попробовал. Результат такой.

Если использую m_vecAbsOrigin определяет координаты более-менее.
При использовании m_vecOrigin координаты не определяет вообще ( 0 0 0 ) Все по нулям.

m_vecAbsOrigin - это как бы кешированные координаты.
m_vecOrigin - это уже текущие координаты.

В чем может быть причина?

Добавлено (23.04.2016, 19:58:01)
---------------------------------------------
Пробовал создавать динамиком и физиком. Всё так же остается.
Если получать данные так GetEntPropVector(невидимый_парент, Prop_Send, "m_vecOrigin", Pos); то спустя какое то время появляется ошибка.
Меняю Prop_Send на Prop_Data все становится нормально.

Для информации - сам проверил:
Prop_Send для "m_vecOrigin"
Prop_Data для "m_vecAbsOrigin"

Подозреваю что m_vecOrigin не работает на движущихся объектах.
Видимо нужно самому попробовать отслеживать изменение координат, может быть в цикле или еще как то.
Не могу просто представить как это сделать на анимированой 3D модели. Припарентеная модель держится отлично.

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


Сообщение отредактировал tonline_kms65 - Воскресенье, 24.04.2016, 09:02:00
 
barcelona58341 Дата: Воскресенье, 24.04.2016, 07:01:46 | Сообщение # 4
Сообщений: 18
Репутация: 0 [ +/- ]
читай Hats | Шапки v 3.0 плагин
 
BarD Дата: Воскресенье, 24.04.2016, 11:10:09 | Сообщение # 5
Сообщений: 944
Репутация: 132 [ +/- ]
Цитата tonline_kms65 ()
Если использую m_vecAbsOrigin определяет координаты более-менее.

А чем не устраивает такое определение?
 
tonline_kms65 Дата: Воскресенье, 24.04.2016, 15:23:09 | Сообщение # 6
Сообщений: 179
Репутация: 2 [ +/- ]
Цитата BarD ()
А чем не устраивает такое определение?


Модель двигается - а координата стоит на месте. На каждую анимацию своё положение. Но во время анимации движения нет.
Я уточню - нет движения. Сама мриатаченная энтитя двигается с костью как будто там и была.

Добавлено (24.04.2016, 15:23:09)
---------------------------------------------
Кстати интересно - если попробовать полуцчить координаты летящей гранаты, получится или нет.


Сообщение отредактировал tonline_kms65 - Понедельник, 25.04.2016, 23:09:37
 
BarD Дата: Понедельник, 25.04.2016, 13:04:11 | Сообщение # 7
Сообщений: 944
Репутация: 132 [ +/- ]
Цитата tonline_kms65 ()
Кстати интересно - если попробовать полуцчить координаты летящей гранаты, получится или нет.

Должно.

Цитата tonline_kms65 ()
Модель двигается - а координата стоит на месте.

Странно. По идее, если проп привязывается к кости, то он должен двигаться вместе с самой костью во время анимации. Следовательно, и координата должна меняться.
 
tonline_kms65 Дата: Вторник, 26.04.2016, 06:34:12 | Сообщение # 8
Сообщений: 179
Репутация: 2 [ +/- ]
Может быть при создании энтитьки я что то не так делаю.

DispatchSpawn(ent) При задании этой команды (на паренте), модель пропадает (я пока не знаю где она появляется и появляется вообще).
Если задаю команду TeleportEntity(ent, pos, angle, NULL_VECTOR) без DispatchSpawn(ent), модель (парент) держится как влитая, там куда я её прилепил. При любой анимации.
Может быть именно при объявлении команды DispatchSpawn(ent) (рождении энтитьки) объявляются и все её свойства в том числе и координаты.

А так как я создаю энтитю и просто телепортирую её в точку привязки (без DispatchSpawn(ent))возможно что и свойства энтитя не получает. Просто появляется как картинка.
У меня просто времени мало, пока не могу проверить. На выходных займусь. Я поэтому и спросил про гранату. Что бы не изобретать велосипедов.



Добавлено (25.04.2016, 23:45:48)
---------------------------------------------
А нет.
Прошу прощения. DispatchSpawn(ent_rocket_attach) включено. Это просто старый код был. Так что вопрос пока повис. Дело не в создании энтити.
На скрине видно что начало лазера чуть чуть в стороне от центра. Анимация уже началась и модель немного сместилась.
Но это начало анимации. Т.е. эта точка так на этом месте и останется до следующей анимации.

Добавлено (26.04.2016, 06:34:12)
---------------------------------------------
Цитата BarD ()
Странно. По идее, если проп привязывается к кости, то он должен двигаться вместе с самой костью во время анимации. Следовательно, и координата должна меняться.


Вот как-раз сам проп держится там где нужно как приклеенный. Проблема именно с перехватом его координат, и именно в движении..

Прикрепления: 6604809.jpg(123Kb) · 6236568.jpg(110Kb) · 6543466.jpg(139Kb)


Сообщение отредактировал tonline_kms65 - Вторник, 26.04.2016, 06:55:59
 
BarD Дата: Вторник, 26.04.2016, 11:16:54 | Сообщение # 9
Сообщений: 944
Репутация: 132 [ +/- ]
Т.е. у тебя лазер не двигается вместе с пропом?
 
tonline_kms65 Дата: Вторник, 26.04.2016, 16:45:33 | Сообщение # 10
Сообщений: 179
Репутация: 2 [ +/- ]
Цитата BarD ()
Т.е. у тебя лазер не двигается вместе с пропом?


Я о чем и толкую. Конечно нет.
При начальном движении анимации координаты видимо захватывает и оттуда начинается луч, при следующей анимации также начальные координаты захватывает. Но во время движения самого пропа (от первого фпейма до последнего ) его координаты где то теряются.
Видимо во время движения сами функции отключены для уменьшения нагрузки на процессор. Есть только начальные и конечные координаты. (Это моё предположение) Я поэтому про перехват координат гранаты спрашивал.


Сообщение отредактировал tonline_kms65 - Вторник, 26.04.2016, 16:51:44
 
BarD Дата: Среда, 27.04.2016, 08:36:47 | Сообщение # 11
Сообщений: 944
Репутация: 132 [ +/- ]
Как ты создаешь лазер? И как часто ты его создаешь?
 
TorresSs Дата: Среда, 27.04.2016, 10:46:01 | Сообщение # 12
Сообщений: 23
Репутация: 1 [ +/- ]
как у вас все сложно..(
 
tonline_kms65 Дата: Суббота, 30.04.2016, 18:15:34 | Сообщение # 13
Сообщений: 179
Репутация: 2 [ +/- ]
Цитата TorresSs ()
Как ты создаешь лазер? И как часто ты его создаешь?


Создаю самым простым способом TE_SetupBeamPoints(ПроgсOrigin, EnemyPos, g_LightningSprite, ........ через таймер, примерно 2 раза в секунду, если есть противник естественно. Даже нет. Не через таймер. Таймером задаю задержку, так вернее.

1. Я уже думал создать не временную энтитьку. На выходных попробую. Её можно просто приаттачить к кости.
2. Попробую ловить координаты в цикле или OnGameFrame() (это то-же самое что void Update() по моему).

Добавлено (30.04.2016, 18:15:34)
---------------------------------------------
Я сразу не сообразил - даже если я энтитьку приаттачу - толку-то. Там нужны так же начальные координаты.



Пробовал сегодня в цикле отловить координаты. Сама модель (родитель) координаты отлавливаются отлично m_vecOrigin.
А вот с аттачем проблемы. m_vecOrigin стоят координаты по нулям. Если отлавливать с помощью m_vecAbcOrigin вроде неплохо отлавливается, но идет задержка.
Во головняк так головняк. Нужно смотреть сами функции. Как они работают.


Сообщение отредактировал tonline_kms65 - Суббота, 30.04.2016, 18:21:30
 
Scarface_slv Дата: Воскресенье, 01.05.2016, 18:17:52 | Сообщение # 14
Сообщений: 749
Репутация: 61 [ +/- ]
tonline_kms65, Ты не первый кто пробует отловить координаты http://world-source.ru/forum/102-3834-1
 
inklesspen Дата: Среда, 04.05.2016, 21:39:56 | Сообщение # 15
Сообщений: 21
Репутация: 3 [ +/- ]
Йа нашел ответ! Щас напишу код

Добавлено (04.05.2016, 21:32:55)
---------------------------------------------
Я нашел его, пока баловался с плагином [CSGO] Tools

Добавлено (04.05.2016, 21:38:43)
---------------------------------------------
Код


Добавлено (04.05.2016, 21:39:56)
---------------------------------------------
Суть в том, что при ClearParent, ентити возвращается на место, где была во время инпута.


Сообщение отредактировал inklesspen - Пятница, 06.05.2016, 17:25:35
 
Форум » SourceMod - Counter Strike Source && CS GO » Обсуждение » Координаты определенной кости (или аттача) 3D модели?
Страница 1 из 212»
Поиск: