Всем здрасте, давно я сюда не заходил....
Началось всё так: что-то стукнуло мне по башке и я решил написать свой физдвижок. Причём на ФПС и т.д. мне было наплевать Мне для начала хотелось написать просто физику, которая бы была похожа на настоящую. Сначало всё шло хорошо, колижн детектор очень хорошо получился. Но дальше надо было писать солвер. Так как я только в 9 класе, у меня нету необходимых знаний по физике. Но всё же, я решил сделать для начала физку хотябы без учёта угловой скорости. Вот что из этого получилось: http://rghost.ru/42319766
Да, знаю, это физикой назвать сложно, но всё же она почти как в ХЛ =)
Потом я всё таки попытался добавить вращение, и получилось из этого нечто нехорошее: http://rghost.ru/42320019
А теперь просьба к знающим людям ( к ксероксу, в волатиле помойму норм физика, или к ДМу, ведь в ксаше тоже есть физика ), помочь мне доделать мой физдвижок, а именно вращения, или хотябы обьяснить, как высчитываеться угловая скорость и привести все необходимые формулы
Зарание спасибо
Добавлено 17-12-2012 в 22:03:
Сомневаюсь, но возможно в поиске проблем вам поможет кусок кода:
вы уже определились что мы подразумеваем под "angular velocity" ?
Я надеюсь это значение потом не берется как углы эйлера?
А насчёт написания собственной физики - бесполезное занятие. Никто не оценит. Симуляторы физики очень плотно привязаны к ряду негативных факторов, таких как конечная точность вычисления чисел с плавающей точкой, проблемы округления чисел из сопроцессоров до "форматных" дабла и флоата, таймер и влияние фризов на его работу, собственно тип солвера, метод работы коллижен детектора и еще сотни других тонкостей. Обычно эти самописные движки либо проваливают тела при каждом удобном случае либо конструкции составленные из тел крайне нестабильны либо это всё дико тормозит, а чаще - всё вместе.
Но кое-какая практическая польза всё же наличествует. Понимая что ты делаешь тебе будет потом проще прикрутить готовый физ.двиг к своему движку. А практика показывает, что там еще поверх придется дописать тонны кода. Да вот пример из практики, так сказать. Допустим PhysX - коробки, ящики, всё хорошо. Мы хотим взаимодействовать с игроком тоже.
Мало этого - игрок хочет взаимодействовать с окружением тоже. Я напомню что это две абсолютно разные вещи. Т.е. когда игрок толкает ящики - это одно, а когда ящики толкают игрока - совершенно другое.
Но при этом конечно хочется сохранить оригинальную халфовскую физику, лазанье по лестницам и прочее. И как быть? В Физиксе нету нормальных методов для управления игроком. То, что есть, назвать нормальной реализацией язык не поворачивается. Игрок постоянно стрянет в этих объектах, либо упорно их выдавливает куда попало.
Причём в своих же собственных демках (я про PhysX). Что делать?
Я над этой проблемой размышлял почти три недели. И надо признать, без ложной скромности - разрешил, хотя и не до конца, но лучше чем в Source.
Во всяком случае, многие мне говорили, что в ксаш-моде взаимодействие игрока и физтел приятнее реализовано. Вот для всего этого - действительно надо знать и понимать как оно устроено. А своё писать - да ну нафиг.
Ну а что ты хотел? Вращение - это всегда непросто. Это же не взаимодействие одного тела с со статической геометрией. Это взаимодействие двух тел, и каждое столкновение влияет на оба тела.
В результате система либо идёт вразнос (когда кубики "взрываются"), либо успокаивается через определенное время. ЧСХ, успокоить систему без слипера крайне непросто. И очень мало движков может этим похвастаться.
Если так уж хочется писать свою физику - пиши её персонально для халфы либо для всех Quake-движков. Народ переодически пытается прикрутить её к кваке, и каждый раз фейлит, поскольку это вообщем достаточно непростое дело. А если бы был специальный физ. движок заточенный для использования с квакой, то очень бы много народу его с удовольствием использовало, не сомневайся.