Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование в широком смысле слова > Алгоритмика

Алгоритмика Об алгоритмах вообще; методы, обсуждения способов решения

Ответ
 
Опции темы
Старый 28.12.2010, 03:11   #1
cahekp
Разработчик
 
Аватар для cahekp
 
Регистрация: 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
Amatsu
Дэвелопер
 
Аватар для Amatsu
 
Регистрация: 24.07.2008
Сообщений: 1,544
Написано 1,095 полезных сообщений
(для 2,706 пользователей)
Ответ: Проблема с коллизией. Камера проходит сквозь объекты.

В OpenGL есть проверка коллизии по линии, по типу LinePick как в блитце? Если да, то вращаешь не камеру, а эту линию, если линия пересекается с уровнем - помещаешь чуть ближе к объекту относительно точки пересечения камеру.
(Offline)
 
Ответить с цитированием
Старый 28.12.2010, 11:50   #3
.Squid
Дэвелопер
 
Аватар для .Squid
 
Регистрация: 06.04.2009
Адрес: Запорожье
Сообщений: 1,500
Написано 1,011 полезных сообщений
(для 4,642 пользователей)
Ответ: Проблема с коллизией. Камера проходит сквозь объекты.

Сообщение от Amatsu Посмотреть сообщение
В OpenGL есть проверка коллизии по линии, по типу LinePick как в блитце? Если да, то вращаешь не камеру, а эту линию, если линия пересекается с уровнем - помещаешь чуть ближе к объекту относительно точки пересечения камеру.
OpenGL - это Open Graphics Library. Какие нафиг коллизии?
По теме, кури Continuous Collision Detection.
__________________

(Offline)
 
Ответить с цитированием
Эти 5 пользователя(ей) сказали Спасибо .Squid за это полезное сообщение:
cahekp (28.12.2010), den (28.12.2010), Hurrit (28.12.2010), pax (28.12.2010), Reks888 (29.12.2010)
Старый 28.12.2010, 12:02   #4
cahekp
Разработчик
 
Аватар для cahekp
 
Регистрация: 14.12.2008
Адрес: Томск
Сообщений: 530
Написано 270 полезных сообщений
(для 883 пользователей)
Ответ: Проблема с коллизией. Камера проходит сквозь объекты.

to Amatsu:
OpenGL, насколько я знаю, умеет только выводить треугольники с текстурой. Коллизии, отражения, тени, правильная полупрозрачность, отсечение по пирамиде видимости, вывод текста и т.д. - это уже задача программиста.

В принципе, идею я понял, нужно будет попробовать реализовать.
Но, может быть, есть какие-то более простые и быстрые алгоритмы?
__________________
(Offline)
 
Ответить с цитированием
Старый 28.12.2010, 12:04   #5
cahekp
Разработчик
 
Аватар для cahekp
 
Регистрация: 14.12.2008
Адрес: Томск
Сообщений: 530
Написано 270 полезных сообщений
(для 883 пользователей)
Ответ: Проблема с коллизией. Камера проходит сквозь объекты.

to .Squid: Continuous Collision Detection... Всё, пошел искать в этом направлении.
__________________
(Offline)
 
Ответить с цитированием
Старый 28.12.2010, 12:09   #6
Amatsu
Дэвелопер
 
Аватар для Amatsu
 
Регистрация: 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
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Проблема с коллизией. Камера проходит сквозь объекты.

Если хочется самому написать, то
Сообщение от .Squid Посмотреть сообщение
По теме, кури Continuous Collision Detection.
Если лень, то подключай какую-либо библиотеку с детекцией столкновений/физикой (ODE, Newton, PhisX, Bullet).
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
cahekp (28.12.2010)
Старый 28.12.2010, 21:21   #8
cahekp
Разработчик
 
Аватар для cahekp
 
Регистрация: 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
Knightmare
Дэвелопер
 
Регистрация: 14.02.2007
Сообщений: 1,471
Написано 824 полезных сообщений
(для 2,920 пользователей)
Ответ: Проблема с коллизией. Камера проходит сквозь объекты.

Да и приятно осознавать, что твое приложение чисто теоретически можно с легкостью перенести на Linux и MacOS.

Узнал о библиотеке GLUT. О, чудо!
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
pax (30.12.2010)
Старый 28.12.2010, 22:46   #10
cahekp
Разработчик
 
Аватар для cahekp
 
Регистрация: 14.12.2008
Адрес: Томск
Сообщений: 530
Написано 270 полезных сообщений
(для 883 пользователей)
Ответ: Проблема с коллизией. Камера проходит сквозь объекты.

to Knightmare: а чем тебе GLUT не устраивает? Согласись, для учебных целей это одна из самых популярных и удобных библиотек.
__________________
(Offline)
 
Ответить с цитированием
Старый 28.12.2010, 22:51   #11
Knightmare
Дэвелопер
 
Регистрация: 14.02.2007
Сообщений: 1,471
Написано 824 полезных сообщений
(для 2,920 пользователей)
Ответ: Проблема с коллизией. Камера проходит сквозь объекты.

Сообщение от cahekp Посмотреть сообщение
to Knightmare: а чем тебе GLUT не устраивает? Согласись, для учебных целей это одна из самых популярных и удобных библиотек.
lolwut? Посмотри исходники этого говна.
(Offline)
 
Ответить с цитированием
Старый 28.12.2010, 23:00   #12
Amatsu
Дэвелопер
 
Аватар для Amatsu
 
Регистрация: 24.07.2008
Сообщений: 1,544
Написано 1,095 полезных сообщений
(для 2,706 пользователей)
Ответ: Проблема с коллизией. Камера проходит сквозь объекты.

"OpenGL намного удобнее, на мой взгяд, чем Direct3D"
удобнее - не значит лучше. Впрочем тебе виднее
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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


Часовой пояс GMT +4, время: 18:40.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com