Разработка движка игровой физики (комментарии)
Это сообщение сгенерировано автоматически.
Буду рад комментариям, замечаниям и пожеланиям :)
Комментарий 1:
Хотел немного почитать статью, обрадовал тег "На пальцах", но прочитав "Спешу разочаровать - наивно реализовывать интегратор Рунге-Кутта для интегрирования позиции и при этом использовать итеративные солверы, дискретный collision detection и прочие допущения, которые вносят ну просто несравнимо бОльшую ошибку, чем тот же интегратор Эйлера или Ньютона", - дальше читать не смог, т.к. текст видно подразумевает знакомство с этими интеграторами.
Voltt
Нет, не беспокойся :) Я же сказал, что интегратор Рунге-Кутта нам не понадобится, а интегратор ньютона разжёван в первом же майлстоуне :) Спасибо за отзыв.
Сейчас статью "почитывать" опасно, потому что я сперва решил расписать самые нетривиальные вещи, которые мало кто вообще полностью понимает, и объяснять их достаточно тяжело. А проблем ещё очень много и большинство из них значительно проще и интереснее, чем то, что уже написано, поэтому при беглом прочтении сейчас может сложиться мысль вроде "ну нихрена себе", хотя на самом деле всё не так уж страшно - нужно просто написать весь материал, тот, что попроще, и продумать, как его структурировать.
Не осилил. Для кого эта статья? Если для балбесов типа меня то слегка заумно, хоть ты и пытался попроще. Если для тех кто и так разбирается, то для них наверно ничего нового. Хотя если бы мне нужна была физика, то я был бы чуть более в теме, имел бы конкретные проблемы и может взял бы отсюда что-то полезное.
C2Architector
Хух, в принципе, статья ориентирована на тех, кто не совсем с нуля решил разобраться в том, как это всё рабоатет и почему инменно так. Проблема в том, что вопросы, поднятые в статье "просто" объяснить достаточно сложно :) Надеюсь, что все остальные прикладные вопросы будут значительно проще(начал с самого сложного) и будут полезны более широкому кругу людей.
Давно пора :) я вот начал и так и не закончил, наверное меня теперь все ненавидят :)
удачи тебе и постарайчя довести дело до конца, да.
ЗЫ. текст пока не читал подробно, пока времени нет; как прочту - еще отпишусь.
XperienS
экспо, будь добр, прочитай. "возможно ли это вообще понять" - вопрос который меня сейчас терзает :)
Думаю если кто-то не знает физики, то он точно не станет писать физ движок, так что расписывание банальных вещей на первых двух страницах не имело особого смысла. Лучше добавь просто физические формулы которые собираешься использовать. Не мешает более детально расмотреть joint'ы, с красочными илюстрациями, получение линейных уравнений, и какие-нибудь хитрости по их быстрому решению.
2 Suslik
никого не слушай, аффтар пиши еще. :)
написано нормальным языком, термины там всякие, алогритмы, заставляет подумать, что не так уж все и невозможно и black box'ово.
а вопрос не совсем в тему:
+если предположить что читать \ понимать \ пробовать такой обьем материала (размером со статью). То сколько таких статей надо втыкнуть, чтобы написать Box2D?, а чтобы Bullet? ну или аналогичные движки.
Tomat
Спасибо за поддержку.
По поводу вопроса:
Да на самом деле написать что-то, что будет выглядеть как бокс2д, не так уж сложно - надеюсь, что даже одной моей статьи будет достаточно(десяток не слишком тяжёлых страниц). Одна из основных сложностей при разработке двига - это орхетектурные изыскания, качетсво которых - куда более субъективная вещь, чем производительность :) Я очень хочу написать статью по этому делу, но, чувствую, слишком многие со мной будут не согласны =(
а еще пожелание, про degree of freedom
там в примерах ты пишешь:
Hinge Joint:
Джойнт по типу двери на петлях. Чтобы однозначно задать положение системы дверь+стена, мы можем сказать, где находится стена(шесть флотов) + угол, на который открыта дверь, итого семь числел. Значит, hinge joint ограничивает пять степеней свободы.
я правильно понял, что количество степеней свободы которое оганичивает джоинт = 6(кол-во степеней свободы тела) * 2(количество тел в джоинте) - (free1(количество степеней свободы 1ого тела с джоинтом) + free2(количество степеней свободы 2ого тела с джоинтом))
те вышецитируемом примере hinge joint ограничивает пять степеней свободы = 6 * 2 - (6 + 1).
?
просто во всех примерах в результате суммирований получаются числа 9, 7, 6. а тут же ты пишешь "* ограничивает" 3, 5, 6 "степени свободы" соответсвенно.
ну или я не понял или что то еще.
На самом деле, вопросы архитектуры меня более всего и беспокоят. И в основном с учетом сильных сторон C++ и ограничений, налагаемых мной и стандартом.
Так что дерзай... а несогласные могут идей подкинуть новых ;).
Tomat
>я правильно понял, что количество степеней свободы которое оганичивает джоинт = 6(кол-во степеней свободы тела) * 2(количество тел в джоинте) - (free1(количество степеней свободы 1ого тела с джоинтом) + free2(количество степеней свободы 2ого тела с джоинтом))
нет, ты что-то напутал. количество степеней свободы, которое ограничивает джойнт = (6(количество степеней свободы тела) * 2(количество тел в системе))(количество степеней свободы системы дверь + косяк) - 7(количество степеней свободы у системы дверь + косяк + петли(джойнт)) = 5
vonrims
>На самом деле, вопросы архитектуры меня более всего и беспокоят. И в основном с учетом сильных сторон C++ и ограничений, налагаемых мной и стандартом.
На самом деле больше всего меня интересуют тоже именно они. Я очень долго занимался архитектурой двига физики(более пяти лет). Архитектура, которую я за это время выработал, представлена в текущем Destruction SDK, но, к сожалению, слишком многим пользователям просто не нужны сложные иерархии прокси геометрий, совместное сожитие твёрдых и мягких тел, кастомизируемые коллайдеры и прочие радости. Часто людям хочется просто иметь функцию AddBox(...), и ничего более. Меня это просто убивает - судя по всему, нужно будет писать вспомогательные библиотечки - мини-тул-хелпер-врапперы над достаточно сложными движковыми системами. Пока дело находится достаточно далеко от стадии изложения моих архитектурных изысканий в статье, поэтому было бы очень интересно поболтать в асе.
>Так что дерзай... а несогласные могут идей подкинуть новых ;).
Обычно действия несогласных ограничиваются выражением несогласия.
Тема в архиве.