Комментарии 8
Было бы интересно смоделировать гравитацию, путем разбиения массивной ленты на элементарные объемы с последующим интегрированием для произвольной точки пространства вокруг ленты
Были мысли изначально реализовать что-то такое, более точное. Численное интегрирование - здорово, но надо не упустить баланс между точностью и объемом вычислений.
Текущая логика определения центра притяжения хорошо (с высокой точностью) работает лишь для частных случаев, хоть и для очень многих: объем пространства, для которого она работает точно, многократно превышает объем пространства, для которого она работает неточно, при сколь угодно строгих допустимых ошибках (но есть важный нюанс). При этом вычислений делается довольно мало для одного фрейма, даже если бы гравитация действовала на десятки тел, и считалось все это на одной не очень современной машине.
А по ощущениям - боюсь представить себе того игрока, который вот в этой модели по-настоящему почувствует, что гравитация не соответствует реальной физике (конечно, говорю о варианте с ускорением по закону всемирного тяготения). Или поставим задачу так: сравнит с вариантом игры, в котором модель корректная, и четко определит, что есть что.
Но есть некий спортивный интерес что-ли... Сделать более точную физику, и чтобы в это можно было играть.
Еще "во внутреннем пространстве", то есть в торе, местная гравитационная вертикаль будет все сильнее отклоняться от местной нормали к поверхности ленты по мере приближения к ее краям. Это будет как бы ходьба по склону горы с повышением крутизны по мере приближения к краю пропасти. В общем, должно выйти довольно странно.
А если для "открытого космоса", за пределами тора, то численно проинтегрировать вроде не проблема: конечные элементы или Монте-Карло... Проблема делать это в каждом фрейме.
Напрашивается решение проинтегрировать однажды, но для всех точек пространства. Тогда две новых проблемы: во-первых, это может быть слишком затратно даже если вынести задачу в процедуру инициализации, а во-вторых, результат вычислений надо где-то хранить. Трехмерный массив 3D-векторов для интерполяции в рантайме? Прикидочно на глаз... Очень много.
Как вариант: множественная нелинейная регрессия по результатам вычислений с получением аналитического апроксимирующего уравнения (точнее, трех уравнений, для каждой координаты по одному). Хранить придется только коэффициенты, а в каждом фрейме считать всего лишь полином.
Чтобы в этом деле претендовать на какое-то подобие правдоподобия, надо очень толстую ленту, во много ростов игрока. Иначе она будет такая плотная... Подошву ботинка не оторвать при зазоре меньше сантиметра. Игрока мы ведь тоже должны будем разбить и проинтегрировать)))
При нынешних параметрах геометрии ленты значение TOR_GRAVITY_COEF, то есть произведения G и условной массы ленты, у меня вышло около 100 (м^3)/(c^2), чтобы как-то интересно было играть. 10^12 кг примерно выходит масса ленты, а объем ее не столь уж велик, очевидно, что плотность огромная. И она сейчас довольно тонкая, то есть при точном моделировании подошвы действительно должны прилипать: львиная доля веса тела будет приходиться на ступни и голени. Нужна другая механика ходьбы, с тяжелыми шагами.
Но если говорить о "внешнем пространстве", за пределами ограничивающего тора, то почему бы и не проинтегрировать даже как есть сейчас.
интересно спасибо, ротейтов нету, игрок(камера тоже) позиционируется своей матрицей куда входит кручение или rotate, у Юнити это вынесено на панельку, тоесть тут общий подход там еще с кватернионом что-то полюбому мне кажется, если у Юнити есть двойной кватернион тоже интересно, типо в двойном кватернионе чуть меньше операций пишут
Блин, чем дальше и чем больше нюансов, тем интереснее ^___^
Можно сделать нормальную (не гукову) гравитацию, причём достаточно сильную, чтобы ходить по мёбиусной планете как хотя бы по Луне. А геймплей построить не только и не столько на кирке, воронках и продаже тонн тростниковой бумаги хмыкающим разумным кальмарам, сколько на запуске спутников, сборе солнечной энергии, передаче её лучами, установлению связи между отдельными спутниками… при таких обожемой-траекториях (первое слово, конечно, должно было быть менее цензурным) — это будет само по себе уже мозголом, не считая строительства ответной «земной» инфраструктуры :)
А больше всего мне нравится то, что сия планета математически приводится к плоской двухсторонней мимокрафт-поверхности, в каждой из локальных областей которой всё просто, плоско и имеет верх, низ и планетарные недра %) и только на глобальных масштабах начинаются чудеса %) хорошо бы ещё с толщиной ленты поиграться, кстати.
кручение от гравитации врятли будет удобно игроку то что мы идём ровной поверхности это мир стоит ровно, а так лента и получается либо игрок на мониторе не заметит еффект за счет особенностей кватерниона, либо игрок на мониторе будет наблюдать кручение персонажа что тоже не удобно, это работает именно что наблюдая отдаленно как персонаж на американских горках едет потом слез и пошел делать активности
1-я, 2-я и 3-я космические скорости на ленте Мёбиуса