forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Алгоритмика (http://forum.boolean.name/forumdisplay.php?f=21)
-   -   Проблема с коллизией. Камера проходит сквозь объекты. (http://forum.boolean.name/showthread.php?t=13951)

cahekp 28.12.2010 03:11

Проблема с коллизией. Камера проходит сквозь объекты.
 
Привет всем.
Ух, помогите пожалуйста! Целую неделю уже с этой проблемой маюсь! :(

Решил начать изучать OpenGL, учусь по этим (http://masandilov.ru/opengl/) урокам. Проблема возникла конкретно вот с этой штукой: http://masandilov.ru/opengl/camera-world-collision

Если скорость движения камеры относительно быстрая, а ее радиус маленький, то может случиться так, что центр камеры проскочет через плоскость какого-нибудь полигона. В результате алгоритм, который описан в этой статье, не сможет правильно "вытолкнуть" камеру обратно и она так и останется там... Где-то по ту сторону. Конец.

Что можно сделать, чтобы такая неприятная вещь не происходила? Какие существуют способы/алгоритмы, лишенные этой проблемы?

Amatsu 28.12.2010 11:30

Ответ: Проблема с коллизией. Камера проходит сквозь объекты.
 
В OpenGL есть проверка коллизии по линии, по типу LinePick как в блитце? Если да, то вращаешь не камеру, а эту линию, если линия пересекается с уровнем - помещаешь чуть ближе к объекту относительно точки пересечения камеру.

.Squid 28.12.2010 11:50

Ответ: Проблема с коллизией. Камера проходит сквозь объекты.
 
Цитата:

Сообщение от Amatsu (Сообщение 173410)
В OpenGL есть проверка коллизии по линии, по типу LinePick как в блитце? Если да, то вращаешь не камеру, а эту линию, если линия пересекается с уровнем - помещаешь чуть ближе к объекту относительно точки пересечения камеру.

OpenGL - это Open Graphics Library. Какие нафиг коллизии?
По теме, кури Continuous Collision Detection.

cahekp 28.12.2010 12:02

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

В принципе, идею я понял, нужно будет попробовать реализовать.
Но, может быть, есть какие-то более простые и быстрые алгоритмы?

cahekp 28.12.2010 12:04

Ответ: Проблема с коллизией. Камера проходит сквозь объекты.
 
to .Squid: Continuous Collision Detection... Всё, пошел искать в этом направлении. :)

Amatsu 28.12.2010 12:09

Ответ: Проблема с коллизией. Камера проходит сквозь объекты.
 
Цитата:

Сообщение от .Squid (Сообщение 173411)
OpenGL - это Open Graphics Library. Какие нафиг коллизии?
По теме, кури Continuous Collision Detection.

Я про программную реализацию, в OpenGL реально проверить пересечение полигона с определенной линией?
to cahekp а зачем тебе вообще OpenGL? У него же поддержка слабая со стороны аппаратной части.

pax 28.12.2010 14:25

Ответ: Проблема с коллизией. Камера проходит сквозь объекты.
 
Если хочется самому написать, то
Цитата:

Сообщение от .Squid (Сообщение 173411)
По теме, кури Continuous Collision Detection.

Если лень, то подключай какую-либо библиотеку с детекцией столкновений/физикой (ODE, Newton, PhisX, Bullet).

cahekp 28.12.2010 21:21

Ответ: Проблема с коллизией. Камера проходит сквозь объекты.
 
Всё, проблема решена. Решил пойти другим хитропопым путем. Вроде работает. :)


Цитата:

Сообщение от Amatsu (Сообщение 173417)
to cahekp а зачем тебе вообще OpenGL? У него же поддержка слабая со стороны аппаратной части.

Это кто тебе такое сказал? :4to:
OpenGL рулит! Direct3D - бяка. С радостью вступлю в холивар по этому поводу, если что. ;) OpenGL намного удобнее, на мой взгяд, чем Direct3D. Да и приятно осознавать, что твое приложение чисто теоретически можно с легкостью перенести на Linux и MacOS. По скорости работы особой разницы между ними не увидел. Один фиг всё на видеокарте выполняется. :)

А началось все с того, что в универе лабу задали написать. Суть: создать 3D-приложение на DirectX, либо на OpenGL. Должно быть реализовано кручение-верчение камеры, какая-нибудь модель, освещение и текстуры.
Сперва начал делать на DirectX'е, причем на управляемом. Делал недели 2, потом бросил. Очень уж мне он не понравился. Он какой-то... Фу. Насчет неуправляемого DirectX'а ничего не скажу, но, думаю, мне он тоже не по нраву.
Решил делать на OpenGL. Узнал о библиотеке GLUT. О, чудо! Это просто божественно! Я теперь поклонник OpenGL, прям как Кармак! :)

Knightmare 28.12.2010 21:30

Ответ: Проблема с коллизией. Камера проходит сквозь объекты.
 
Цитата:

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

Узнал о библиотеке GLUT. О, чудо!

cahekp 28.12.2010 22:46

Ответ: Проблема с коллизией. Камера проходит сквозь объекты.
 
to Knightmare: а чем тебе GLUT не устраивает? Согласись, для учебных целей это одна из самых популярных и удобных библиотек.

Knightmare 28.12.2010 22:51

Ответ: Проблема с коллизией. Камера проходит сквозь объекты.
 
Цитата:

Сообщение от cahekp (Сообщение 173510)
to Knightmare: а чем тебе GLUT не устраивает? Согласись, для учебных целей это одна из самых популярных и удобных библиотек.

lolwut? Посмотри исходники этого говна.

Amatsu 28.12.2010 23:00

Ответ: Проблема с коллизией. Камера проходит сквозь объекты.
 
"OpenGL намного удобнее, на мой взгяд, чем Direct3D"
удобнее - не значит лучше. Впрочем тебе виднее


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot