Дата: Воскресенье, 05.06.2011, 08:50 | Сообщение # 1
( Не ленимся =) )
Сообщений: [1854]
При разработке конструктора пока встал в ступор с коллизиями. Разработал свой двиг коллизий, но он работает на боудинг боксах, проще говоря все объекты для коллизии с внешним миром и игроком имеют квадрат, для определения столкновений. Это довольно не очная проверка коллизий. В том смысле что Объект может быть в виде сферы, а коллизии будут как у квадрата.
Поискал движки для определения коллизий. Опробовал ODE , но так до конца и не смог с ним разобраться. В примерах присутствует его работа коллизий со сферами и боксами, но не нашел примера коллизий сферы с массивом треугольников. (сфера - игрок, ну а массив треугольников окружающий мир).
Вообще нужны коллизии Сфера VS массив треугольников.
Кто может помочь в этом вопросе? Работаю над Каваей.
ODE это не движок для определения коллизий, это физический движок как Newton или PhysX например. А для столкновения 2х объектов лучше использовать рейкаст, для столкновения со сферой совсем все просто, пускаем луч от исходной сферы и проверяем на пересечение с поверхностью и если растояние от точки пересечения меньше либо равно радиусу сферы, то мы имеем столкновение, вот и все. Так же посоветовал бы почитать математику, а именно аналитическую геометрию, думаю полезно будет, раз вы свой конструктор игр пишите.
ODE это не движок для определения коллизий, это физический движок как Newton или PhysX например.
Это физический движок, в том числе и для определения столкновений объектов... Какая же физика в них без определения столкновения, смешно.
Математику и геометрию не раз перечитывал, поэтому и написал уже способ определения коллизий. И да, речь идет о 3Д пространстве. Поэтому сначала нужно рассчитать направление Нормали треугольника. А уже потом проверять столкновения... А способ который был описан Вами годится для 2Д измерения.
логично, но движок для колизий содержал бы функции типа IsCollision (..), А использовать физический движок чисто для коллизий затратно, может производительность упасть прилично, во многих случаях можно обойтись простыми средствами.
Нормали треугольников обычно задана в самой модели. Рекаст - это пускание луча из одного объекта по направлению, направление обычно выбирается то, куда движется объект, вот пример на картинке:
здесь мы видим, что если есть пересечение с луча с треугольником (или с октри), то нужно проверить растояние от позиции сферы (X,Y,Z) до точки пересечения, и если растояние <= радиуса сферы, то имеем столкновение. Математика же нам здесь понадобиться для проверки пересечения луча с треугольником. можешь почитать здесь