| Конструктор 3D FPS игр MG FPS Creator |
|
Конструктор |
Дата: Воскресенье, 05.06.2011, 08:50 | Сообщение # 1 |
[ Администратор ]
( Админь )
Сообщений: [1386]
|
При разработке конструктора пока встал в ступор с коллизиями. Разработал свой двиг коллизий, но он работает на боудинг боксах, проще говоря все объекты для коллизии с внешним миром и игроком имеют квадрат, для определения столкновений. Это довольно не очная проверка коллизий. В том смысле что Объект может быть в виде сферы, а коллизии будут как у квадрата.
Поискал движки для определения коллизий. Опробовал ODE , но так до конца и не смог с ним разобраться. В примерах присутствует его работа коллизий со сферами и боксами, но не нашел примера коллизий сферы с массивом треугольников. (сфера - игрок, ну а массив треугольников окружающий мир).
Вообще нужны коллизии Сфера VS массив треугольников.
Кто может помочь в этом вопросе?
|
 |
| | |
|
LestaD |
Дата: Вторник, 16.08.2011, 23:57 | Сообщение # 2 |
[ Пользователь ]
Сообщений: [33]
|
Возьми движок Source Engine посмотри исходники. Там коллизии - компилированные модели.
|
 |
| | |
|
Кольмар |
Дата: Среда, 17.08.2011, 00:05 | Сообщение # 3 |
[ Пользователь ]
( Его Величество Кольмар )
Сообщений: [462]
|
Насколько я понял , движок пишется на Делфи , а Source Engine на Си++. Но думаю сам метод можно перенести. З.Ы. Source Engine платен.
|
 |
| | |
|
DerToteWolf_ |
Дата: Суббота, 27.08.2011, 12:27 | Сообщение # 4 |
[ Забанен ]
Сообщений: [647]
|
Конструктор все же, попробуй рейкастинг)
|
 |
| | |
|
Int64 |
Дата: Пятница, 30.12.2011, 14:48 | Сообщение # 5 |
[ Пользователь ]
Сообщений: [12]
|
ODE это не движок для определения коллизий, это физический движок как Newton или PhysX например. А для столкновения 2х объектов лучше использовать рейкаст, для столкновения со сферой совсем все просто, пускаем луч от исходной сферы и проверяем на пересечение с поверхностью и если растояние от точки пересечения меньше либо равно радиусу сферы, то мы имеем столкновение, вот и все. Так же посоветовал бы почитать математику, а именно аналитическую геометрию, думаю полезно будет, раз вы свой конструктор игр пишите.
|
 |
| | |
|
Конструктор |
Дата: Пятница, 30.12.2011, 15:27 | Сообщение # 6 |
[ Администратор ]
( Админь )
Сообщений: [1386]
|
Quote (Int64) ODE это не движок для определения коллизий, это физический движок как Newton или PhysX например. Это физический движок, в том числе и для определения столкновений объектов... Какая же физика в них без определения столкновения, смешно.
Математику и геометрию не раз перечитывал, поэтому и написал уже способ определения коллизий. И да, речь идет о 3Д пространстве. Поэтому сначала нужно рассчитать направление Нормали треугольника. А уже потом проверять столкновения... А способ который был описан Вами годится для 2Д измерения.
|
 |
| | |
|
Int64 |
Дата: Четверг, 05.01.2012, 10:01 | Сообщение # 7 |
[ Пользователь ]
Сообщений: [12]
|
логично, но движок для колизий содержал бы функции типа IsCollision (..), А использовать физический движок чисто для коллизий затратно, может производительность упасть прилично, во многих случаях можно обойтись простыми средствами.
Нормали треугольников обычно задана в самой модели. Рекаст - это пускание луча из одного объекта по направлению, направление обычно выбирается то, куда движется объект, вот пример на картинке:
здесь мы видим, что если есть пересечение с луча с треугольником (или с октри), то нужно проверить растояние от позиции сферы (X,Y,Z) до точки пересечения, и если растояние <= радиуса сферы, то имеем столкновение. Математика же нам здесь понадобиться для проверки пересечения луча с треугольником. можешь почитать здесь
|
 |
| |
|