|
Алгоритмика Об алгоритмах вообще; методы, обсуждения способов решения |
28.12.2010, 03:11
|
#1
|
Разработчик
Регистрация: 14.12.2008
Адрес: Томск
Сообщений: 530
Написано 270 полезных сообщений (для 883 пользователей)
|
Проблема с коллизией. Камера проходит сквозь объекты.
Привет всем.
Ух, помогите пожалуйста! Целую неделю уже с этой проблемой маюсь!
Решил начать изучать OpenGL, учусь по этим ( http://masandilov.ru/opengl/) урокам. Проблема возникла конкретно вот с этой штукой: http://masandilov.ru/opengl/camera-world-collision
Если скорость движения камеры относительно быстрая, а ее радиус маленький, то может случиться так, что центр камеры проскочет через плоскость какого-нибудь полигона. В результате алгоритм, который описан в этой статье, не сможет правильно "вытолкнуть" камеру обратно и она так и останется там... Где-то по ту сторону. Конец.
Что можно сделать, чтобы такая неприятная вещь не происходила? Какие существуют способы/алгоритмы, лишенные этой проблемы?
|
(Offline)
|
|
28.12.2010, 11:30
|
#2
|
Дэвелопер
Регистрация: 24.07.2008
Сообщений: 1,544
Написано 1,095 полезных сообщений (для 2,706 пользователей)
|
Ответ: Проблема с коллизией. Камера проходит сквозь объекты.
В OpenGL есть проверка коллизии по линии, по типу LinePick как в блитце? Если да, то вращаешь не камеру, а эту линию, если линия пересекается с уровнем - помещаешь чуть ближе к объекту относительно точки пересечения камеру.
|
(Offline)
|
|
28.12.2010, 11:50
|
#3
|
Дэвелопер
Регистрация: 06.04.2009
Адрес: Запорожье
Сообщений: 1,500
Написано 1,011 полезных сообщений (для 4,642 пользователей)
|
Ответ: Проблема с коллизией. Камера проходит сквозь объекты.
Сообщение от Amatsu
В OpenGL есть проверка коллизии по линии, по типу LinePick как в блитце? Если да, то вращаешь не камеру, а эту линию, если линия пересекается с уровнем - помещаешь чуть ближе к объекту относительно точки пересечения камеру.
|
OpenGL - это Open Graphics Library. Какие нафиг коллизии?
По теме, кури Continuous Collision Detection.
__________________
|
(Offline)
|
|
Эти 5 пользователя(ей) сказали Спасибо .Squid за это полезное сообщение:
|
|
28.12.2010, 12:02
|
#4
|
Разработчик
Регистрация: 14.12.2008
Адрес: Томск
Сообщений: 530
Написано 270 полезных сообщений (для 883 пользователей)
|
Ответ: Проблема с коллизией. Камера проходит сквозь объекты.
to Amatsu:
OpenGL, насколько я знаю, умеет только выводить треугольники с текстурой. Коллизии, отражения, тени, правильная полупрозрачность, отсечение по пирамиде видимости, вывод текста и т.д. - это уже задача программиста.
В принципе, идею я понял, нужно будет попробовать реализовать.
Но, может быть, есть какие-то более простые и быстрые алгоритмы?
|
(Offline)
|
|
28.12.2010, 12:04
|
#5
|
Разработчик
Регистрация: 14.12.2008
Адрес: Томск
Сообщений: 530
Написано 270 полезных сообщений (для 883 пользователей)
|
Ответ: Проблема с коллизией. Камера проходит сквозь объекты.
to .Squid: Continuous Collision Detection... Всё, пошел искать в этом направлении.
|
(Offline)
|
|
28.12.2010, 12:09
|
#6
|
Дэвелопер
Регистрация: 24.07.2008
Сообщений: 1,544
Написано 1,095 полезных сообщений (для 2,706 пользователей)
|
Ответ: Проблема с коллизией. Камера проходит сквозь объекты.
Сообщение от .Squid
OpenGL - это Open Graphics Library. Какие нафиг коллизии?
По теме, кури Continuous Collision Detection.
|
Я про программную реализацию, в OpenGL реально проверить пересечение полигона с определенной линией?
to cahekp а зачем тебе вообще OpenGL? У него же поддержка слабая со стороны аппаратной части.
|
(Offline)
|
|
28.12.2010, 14:25
|
#7
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Проблема с коллизией. Камера проходит сквозь объекты.
Если хочется самому написать, то
Сообщение от .Squid
По теме, кури Continuous Collision Detection.
|
Если лень, то подключай какую-либо библиотеку с детекцией столкновений/физикой (ODE, Newton, PhisX, Bullet).
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
28.12.2010, 21:21
|
#8
|
Разработчик
Регистрация: 14.12.2008
Адрес: Томск
Сообщений: 530
Написано 270 полезных сообщений (для 883 пользователей)
|
Ответ: Проблема с коллизией. Камера проходит сквозь объекты.
Всё, проблема решена. Решил пойти другим хитропопым путем. Вроде работает.
Сообщение от Amatsu
to cahekp а зачем тебе вообще OpenGL? У него же поддержка слабая со стороны аппаратной части.
|
Это кто тебе такое сказал?
OpenGL рулит! Direct3D - бяка. С радостью вступлю в холивар по этому поводу, если что. OpenGL намного удобнее, на мой взгяд, чем Direct3D. Да и приятно осознавать, что твое приложение чисто теоретически можно с легкостью перенести на Linux и MacOS. По скорости работы особой разницы между ними не увидел. Один фиг всё на видеокарте выполняется.
А началось все с того, что в универе лабу задали написать. Суть: создать 3D-приложение на DirectX, либо на OpenGL. Должно быть реализовано кручение-верчение камеры, какая-нибудь модель, освещение и текстуры.
Сперва начал делать на DirectX'е, причем на управляемом. Делал недели 2, потом бросил. Очень уж мне он не понравился. Он какой-то... Фу. Насчет неуправляемого DirectX'а ничего не скажу, но, думаю, мне он тоже не по нраву.
Решил делать на OpenGL. Узнал о библиотеке GLUT. О, чудо! Это просто божественно! Я теперь поклонник OpenGL, прям как Кармак!
|
(Offline)
|
|
28.12.2010, 21:30
|
#9
|
Дэвелопер
Регистрация: 14.02.2007
Сообщений: 1,471
Написано 824 полезных сообщений (для 2,920 пользователей)
|
Ответ: Проблема с коллизией. Камера проходит сквозь объекты.
Да и приятно осознавать, что твое приложение чисто теоретически можно с легкостью перенести на Linux и MacOS.
|
Узнал о библиотеке GLUT. О, чудо!
|
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
28.12.2010, 22:46
|
#10
|
Разработчик
Регистрация: 14.12.2008
Адрес: Томск
Сообщений: 530
Написано 270 полезных сообщений (для 883 пользователей)
|
Ответ: Проблема с коллизией. Камера проходит сквозь объекты.
to Knightmare: а чем тебе GLUT не устраивает? Согласись, для учебных целей это одна из самых популярных и удобных библиотек.
|
(Offline)
|
|
28.12.2010, 22:51
|
#11
|
Дэвелопер
Регистрация: 14.02.2007
Сообщений: 1,471
Написано 824 полезных сообщений (для 2,920 пользователей)
|
Ответ: Проблема с коллизией. Камера проходит сквозь объекты.
Сообщение от cahekp
to Knightmare: а чем тебе GLUT не устраивает? Согласись, для учебных целей это одна из самых популярных и удобных библиотек.
|
lolwut? Посмотри исходники этого говна.
|
(Offline)
|
|
28.12.2010, 23:00
|
#12
|
Дэвелопер
Регистрация: 24.07.2008
Сообщений: 1,544
Написано 1,095 полезных сообщений (для 2,706 пользователей)
|
Ответ: Проблема с коллизией. Камера проходит сквозь объекты.
"OpenGL намного удобнее, на мой взгяд, чем Direct3D"
удобнее - не значит лучше. Впрочем тебе виднее
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 18:27.
|