Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 08.10.2010, 19:21   #1
Zver1993
Новичок
 
Регистрация: 23.06.2010
Сообщений: 0
Репутация: 10
По умолчанию Столкновения 3D моделей

Как просчитывать столкновения 3D моделей ландшафта и игрока .
Если можете выложить примеры кода плиз.
Пишу на Delphi
графическая библиотека OpenGl
Заранее спасибо.

Последний раз редактировалось Zver1993; 08.10.2010 в 19:42.
Zver1993 вне форума   Ответить с цитированием
Старый 08.10.2010, 19:34   #2
Selestis
Участник клуба
 
Аватар для Selestis
 
Регистрация: 21.01.2009
Адрес: Самара
Сообщений: 719
Репутация: 268
По умолчанию

Пересечения самих моделей почти никогда не просчитывают. Ибо затратно. Вместо этого используют ограничивающие объёмы, например, капсулу, в которую заключают игрока и для которой уже считают столкновения. А как именно считать, зависит от формы представления ландшафта. Можно интерполировать значения карты высот в зависимости от положения игрока (http://www.gamedev.ru/code/faq/?id=3631) и сравнить положение игрока с этой высотой.

На голом OpenGL пишете или движок какой? В таком случае, что представлюет из себя модель ландшафта и игрока? И хотелось бы знать о задаче побольше...
__________________
Изобретатель велосипедов

Последний раз редактировалось Selestis; 08.10.2010 в 20:00.
Selestis вне форума   Ответить с цитированием
Старый 09.10.2010, 13:19   #3
RomiKon
Форумчанин
 
Регистрация: 11.04.2010
Сообщений: 143
Репутация: 35
По умолчанию

Просчитывать столкновение игрока с ландшафтом не так уж и сложно. Главное здесь это не большие знания по школьной геометрии. Задачу столкновения игрока с ландшафтом можно разбить на несколько не сложных задач. Во первых будет удобно представить игрока как сферу с каким то радиусом. Потом достаточно проверить пересечение сферы с треугольниками из которых состоит ландшафт. Если пересеклись с треугольниками то и с ландшафтом пересеклись. Чтобы узнать пересеклись ли мы с треугольником, нужно знать пересеклись ли мы с его плоскостью. Тут вам поможет уравнение плоскости. Затем проецируем сферу на плоскость треугольника и проверяем пересечение получившейся окружности с рёбрами треугольника. Не так уж и сложно. По крайней мере я такую штуку реализовывал. Тут правда один минус. Нужно чтобы сфера была больше самого большого треугольника. Хотя и тут можно обойти эту проблему. Ну а оптимизации думаю сам сделаешь какие нужно. Например можно карту разбить на блоки, что бы не проверять пересечение со всеми треугольниками.
RomiKon вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
столкновения без Delphix somebody94 Помощь студентам 0 29.06.2010 12:10
Открытие 3d моделей в VC++ Corrat Помощь студентам 2 04.05.2010 22:41
создать программу столкновения шаров execute Помощь студентам 4 23.10.2009 13:59
Расчет столкновения шариков. belomorinka Общие вопросы Delphi 3 02.06.2009 18:54
Сопоставление моделей cartoongirl Microsoft Office Excel 6 21.04.2008 14:35


00:31.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru