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

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

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D > 3D-программирование

3D-программирование Вопросы, касающиеся программирования 3D мира

Ответ
 
Опции темы
Старый 30.06.2012, 14:28   #1
Eugenes
AnyKey`щик
 
Регистрация: 30.06.2012
Сообщений: 12
Написано 0 полезных сообщений
(для 0 пользователей)
Смущение 3D в 2D проекции

Суть проблемы: игра происходит только в двух измерениях, но для отображения используются 3D модели. Необходимо рассчитывать столкновения не исходя из реальной 3D коллизии, а того, как видит объекты игрок. Поясню: предположим, у нас астероид неровной формы - передняя часть его шире, чем задняя. Ставим его и корабль игрока в одинаковые координаты по оси Z. Однако, положение центра астероида относительно центра корабля будет зависеть от размеров и формы астероида.

Предположим, корабль сталкивается с астероидом в задней части последнего - т.е. игрок видит, что корабль залетает за астероид и только там останавливается. Пока вижу решение - подбирать координату по Z для каждого объекта индивидуально, но это слишком трудоемкий процесс. Есть ли способ, который бы спроецировал 3D объект в 2D проекцию и позволил бы рассчитать столковение?

Заранее спасибо за ответы
(Offline)
 
Ответить с цитированием
Старый 30.06.2012, 15:29   #2
polopok
ПроЭктировщик
 
Регистрация: 17.07.2009
Сообщений: 182
Написано 51 полезных сообщений
(для 71 пользователей)
Ответ: 3D в 2D проекции

так как ты используешь 3д среду ,используй linePick от твоего корабля до астероида(ов) ,получишь координаты из pick-а дистанцию проверяешь ,как-то так ...
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Eugenes (30.06.2012)
Старый 30.06.2012, 16:57   #3
Eugenes
AnyKey`щик
 
Регистрация: 30.06.2012
Сообщений: 12
Написано 0 полезных сообщений
(для 0 пользователей)
Смех Ответ: 3D в 2D проекции

Сообщение от polopok Посмотреть сообщение
так как ты используешь 3д среду ,используй linePick от твоего корабля до астероида(ов) ,получишь координаты из pick-а дистанцию проверяешь ,как-то так ...
т.е., если я правильно понимаю, LinePick показывает первый попавшийся объект, который пересекает линия с координатами x y z и x+dx y+dy z+dz?
Т.е. я ставлю минимальные значение dx, dy, dz, и если какой-то объект попадает на пересечение, то значит корабль с ним столкнется? И dz=0, т.к. у меня просчитываются только плоские столкновения, я правильно понял?
(Offline)
 
Ответить с цитированием
Старый 30.06.2012, 21:13   #4
polopok
ПроЭктировщик
 
Регистрация: 17.07.2009
Сообщений: 182
Написано 51 полезных сообщений
(для 71 пользователей)
Ответ: 3D в 2D проекции

LinePick . почитай в справке ...
там ещё радиус проверки можно задать .
(Offline)
 
Ответить с цитированием
Старый 01.07.2012, 00:06   #5
ANIK123
Знающий
 
Аватар для ANIK123
 
Регистрация: 29.11.2010
Сообщений: 244
Написано 31 полезных сообщений
(для 49 пользователей)
Ответ: 3D в 2D проекции

может EntityPick? выдает ближаишее энтити, и если мы "словим" столкновение то тогда еще и LinePick во все стороны пустить дабы проверить нет ли еще столкновений кроме уже только что произошедшего

и еще: почему не используешь физику? можно запрсто заставить физ обьекты "существовать" только в двух или даже одной осях)))
xEntitySetLinearFactor(модель_с_физ_телом, 1.0f, 1.0f, 0.0f); - и все, по оси z никуда не свалит)
__________________
Intel Core i3-4005U (1.7 ГГц), 4 ГБ ОЗУ, nVidia GeForce 940M 4 ГБ, Win8.1
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Eugenes (01.07.2012)
Старый 01.07.2012, 08:40   #6
polopok
ПроЭктировщик
 
Регистрация: 17.07.2009
Сообщений: 182
Написано 51 полезных сообщений
(для 71 пользователей)
Ответ: 3D в 2D проекции

Можно и так ,а можно и формулами
(Offline)
 
Ответить с цитированием
Старый 01.07.2012, 10:41   #7
Eugenes
AnyKey`щик
 
Регистрация: 30.06.2012
Сообщений: 12
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: 3D в 2D проекции

Сообщение от ANIK123 Посмотреть сообщение
xEntitySetLinearFactor(модель_с_физ_телом, 1.0f, 1.0f, 0.0f); - и все, по оси z никуда не свалит)
А это команда какого движка? Есть ли такая команда для ODE? (его планирую использовать)
(Offline)
 
Ответить с цитированием
Старый 01.07.2012, 11:41   #8
Hartmann1
AnyKey`щик
 
Регистрация: 24.06.2012
Сообщений: 16
Написано 5 полезных сообщений
(для 6 пользователей)
Ответ: 3D в 2D проекции

Сообщение от ANIK123 Посмотреть сообщение
может EntityPick? выдает ближаишее энтити, и если мы "словим" столкновение то тогда еще и LinePick во все стороны пустить дабы проверить нет ли еще столкновений кроме уже только что произошедшего
Eugenes
После EntityPick LinePick делать ненужно, это одно и тоже практически. Более того, в EntityPick тоже нет необходимости. Надо поставить коллизию игрока с объектами в режим "эллипсоид-треугольники" + режим поведения "остановка" ( см. Collisions ), чтобы после столкновения игрок не сьехал в сторону и не нарушил условие "Z = 0" ( либо вручную корректировать позицию по Z после UpdateWorld() ). Ну и подобрать оптимальный радиус ( EntityRadius ) для игрока.

Сообщение от Eugenes Посмотреть сообщение
А это команда какого движка? Есть ли такая команда для ODE? (его планирую использовать)
Это функция Xors3D, отдельный движок, т.к. ты его не юзаешь, забудь.
Ну а раз ты физический движок решил заюзать, то проверяй коллизии через него, а не через блиц. ( Collisions, LinePick, EntityPick, CameraPick это все одна и та же подсистема блица, если юзаешь физ. движок, то они тебе не понадобятся )
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
ANIK123 (01.07.2012)
Ответ


Опции темы

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

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


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


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