Параллельно с работой над подвеской решил заняться водичкой на Физиксе. По ходу возникла куча проблем.
1. Просто приложить силу Архимеда не получится, ведь тогда будет нереальное поведение тел, поскольку сила Архимеда прикладывается в данном случае к центру масс. На рисунке 1 нарисовано два случая. На рис. а) показано неправильное положение тела, которое плавает. Так получается если к центру масс просто прилаживать силу. Как должно быть показано на рисунке б).
2. приложенная сила зависит от погруженного объема, а этот обьём очень сложно и будет требовать много ресурсов если это как то оптимизировать. Особенно будут проблемы, если считать для сложных тел/
Поэтому у меня возникло пару идей, хочу посоветоваться перед тем как приступить к реализации. Ведь идея то может оказаться и бредовской, а может быть и наоборот. Может посоветуете, что то полезное.
В основе лежит быстродействие, ведь для Физикса это главное . А с реализацией уже как то справлюсь. Будет несколько алгоритмов. Каждый алгоритм будет для определенной формы тела. Покамись остановлюсь на кубике.
Беру у кубика все вершины, делю массу тела на количество вершин, получаю массу вершин. Теперь смотрим на рисунок:
К каждой вершине будет прикладываться сила в зависимости от глубины погружения, Точнее я буду считать все приложенные силы к вершинам, потом буду считать суммарную силу и относительное её положение от центра масс. После приложу эту силу в данной точке. Это должно обеспечить правильное поведение кубика в воде. К тому же будет учтена масса кубика. А самое главное, это будет очень быстро работать.
Со сферой будет всё проще. Там по радиусу можно считать погружоную часть и прикладывать в зависимости от погружения силу к центру масс, здесь как раз проблем не будет.
С капсулой расскажу в следующий раз, а покамись хочу послушать мнение насчёт этого метода. Также по алгоритму капсулы можно сделать плавание для тримешей и хуллов. Там алгоритм по вершинам не поможет.
Так же есть идеи сделать что-то типа поплавка. Поплавок – это невидимое и невлияющее на окружающую среду тело. Ему можно регулировать только плавучесть и привязать к телу. Тоесть, берём какую-то сложную форму и в контрольных точках привязываем поплавки. Получаем реалистично плавающее тело. Поскольку вода действует всего на пару точек, то будет очень быстрый просчёт, и ресурсов от проца почти не требует. Также можно создать любую модель плавающего тела, что даёт неограниченные возможности с учётом того, что каждый поплавок можно настроить на свой вкус . Да, и глючить, по идее, нечему. Как думаете, идея с поплавком стоит реализации?