Модераторы: Rickert

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Алгоритм взаимодействия с миром, Взаимодействия с окр. миром в 3д 
:(
    Опции темы
Kergan
Дата 27.8.2005, 09:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 159
Регистрация: 20.8.2005

Репутация: нет
Всего: 5



Доброго времени суток
предположим, пишу 3д-приложение. Кто-нибудь знает самый-самый хороший алгоритм взаимодействия с окружающим миром (управляемый юзверем чудик должен натыкаться на стены, взбираться по холмам, натыкаться на предметы и т.д.). Заранее прошу прощения у модераторов - хотел было запихнуть в "С++ Мультимдеа", но тут более к месту... наверное.
Пока у меня все примитивно - холмов нет ваообще, а стенки все прямые. Сохранил координаты всех углов и общим уравнением прямой проверяю расстояние игрока до стены(от точки игрока отходит прямая, вторая ее точка расположена на линии взгляда и вот уже вторая прямая). Но это не универсальный алгоритм. Подскажите, а...
--------------------
Была у меня дурацкая подпись...Я ее убрал, а новую еще не придумал. :(
PM MAIL ICQ   Вверх
podval
Дата 27.8.2005, 11:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Где я? Кто я?
****


Профиль
Группа: Экс. модератор
Сообщений: 3094
Регистрация: 25.3.2002
Где: СПб

Репутация: нет
Всего: 62



Модератор: тема перемещена из раздела "Алгоритмы"


PM WWW ICQ   Вверх
mr.DUDA
Дата 27.8.2005, 23:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 7
Всего: 232



Если у тебя просто ящик, в котором находится игрок - тут всё просто. Но если стенок много (лабиринт, типа), нужно определять в каком коридоре находится игрок и действовать соответственно. Конкретный исходник ты сможешь написать сам, скорее всего никто тебе его не напишет.

З.Ы. для более сложных случаев взаимодействия, есть физические библиотеки. Их много, есть бесплатные: Newton, Tokamak, ODE.


--------------------
user posted image
PM MAIL WWW   Вверх
CD20
Дата 2.9.2005, 09:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 18.8.2005

Репутация: нет
Всего: 1



Для начала нужно разбивать уровень на блоки и обрабатывать физические взаимодействия с игроком в том блоке, где он находится. Для простых взаимодействий(например: подобрать предмет или упереться в предмет) лучше использовать алгоритмы с BoundingBox'ом. Вообщем - то все взаимодействия можно так обрабатывать, но если тебе нужно например полигональное попадание, то тут малость сложнее: придётся обрабатывать ещё и полигоны моделей, после того, как зафиксировано их взаимодействие BoundingBox'ами.
PM MAIL   Вверх
Dubinsky
Дата 2.10.2005, 20:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 252
Регистрация: 1.6.2005

Репутация: нет
Всего: нет



есть что то полезное в Директ Х 9 СДК - в примерах , там есть пример проверки выбора треугольника из модели мышкой ... посмотри по моему там всё что нужно ...
PM MAIL WWW   Вверх
DragonFire
Дата 3.10.2005, 06:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 14.8.2005
Где: Москва

Репутация: 5
Всего: 9



А можете поподробнее, насчет BoundingBoxов и если можно с примером на Delphi и OpenGL... smile


--------------------
PM MAIL ICQ   Вверх
Dubinsky
Дата 3.10.2005, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 252
Регистрация: 1.6.2005

Репутация: нет
Всего: нет



О чёрт , перепутал тему ! извините ... хотя этот пример с выбором полигона в ДХ СДК, всё равно интересен и с точки зрения проверки столкновений ...

ещё читал про отсечение невидимых полигонов методом БСП (бинари спэйс партишнг ) там что то было сказано про то , что этот алгоритм не только отсекает нивидимые полигоны , облегчая жизнь видеокарте но и каким то магическим образом помогает при проверке столкновений , если кто знает объясните может принцип действия ?
PM MAIL WWW   Вверх
Batou
Дата 3.10.2005, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 7.4.2005

Репутация: нет
Всего: 5



Если мир разложен по BSP, получается меньше проверок на столкновение. Сама проверка происходит по тем же алгоритмам.
--------------------
.GitS.Мысли творят действительность , а бремя доказательства лежит на сомневающемся.
PM MAIL WWW   Вверх
Dubinsky
Дата 3.10.2005, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 252
Регистрация: 1.6.2005

Репутация: нет
Всего: нет



ааа ! понял !

но как я понял мир один раз разкладывается на дерево , во время инициализации ? если да то мир поменяется и дерево заново строить надо ?
PM MAIL WWW   Вверх
Batou
Дата 3.10.2005, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 7.4.2005

Репутация: нет
Всего: 5



Насколько я знаю дерево строится один раз, при компиляции карты (в редакторе карт). В процессе игры дерево не перестраивается.
--------------------
.GitS.Мысли творят действительность , а бремя доказательства лежит на сомневающемся.
PM MAIL WWW   Вверх
Dubinsky
Дата 3.10.2005, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 252
Регистрация: 1.6.2005

Репутация: нет
Всего: нет



ну это если карта не меняется (халф лайф , дум 3 и т.п. хлам ) , сейчас вообще модно всё делать красиво и без вкуса , а если как в Red Faction ? там же карта перестраивается сама ( ну ладно при помощи встроенного редактора - игрока с динамитом ) там же всё меняется - кол-во и положение полигонов относительно друг друга , в таком случае дерево не может быть статичным , или я не прав ?
PM MAIL WWW   Вверх
DENNN
Дата 4.10.2005, 08:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 3878
Регистрация: 27.3.2002
Где: Москва

Репутация: 3
Всего: 43



Никто не засталяет строить дерево для абсолютно всех объектов в сцене.
PM ICQ   Вверх
mr.DUDA
Дата 4.10.2005, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 7
Всего: 232



Цитата(DENNN @ 4.10.2005, 08:45)
Никто не засталяет строить дерево для абсолютно всех объектов в сцене.

Т.е. мы можем разбить свою игровую модель на статичное окружение (карта и т.п.) и на динамические объекты (модельки игроков, снарядов, бочек, кирпичей и т.п.). Сие есть классическая BSP-реализация игровой карты.


--------------------
user posted image
PM MAIL WWW   Вверх
Dubinsky
Дата 4.10.2005, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 252
Регистрация: 1.6.2005

Репутация: нет
Всего: нет



т.е если на карте ничего нет статичного то и дерево не построить , как же тогда поступили ребята , Red faction , делавшие ? есть ещё какие то способы ?
PM MAIL WWW   Вверх
Dmil
Дата 4.10.2005, 19:10 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











можно еще в этой теме вопрос задать - новую не хочется создавать?
тоже не могу понять основ взаимодействия, а хочется.
могу привести для примера игру
Rally pro contest на сайте mophun.com
там машина едет по дороге и может заезжать на обочины, при этой ее, естественно, наклоняет.
вопрос:
как понять что машина движется по трассе а не по обочине?
машина наклоняется в соответствии с наклоном трассы. а как это делается?
в 3d движке нет больших возможностей, в основном, простой обсчет матриц.
может кто-нибудь по простому объяснить?
заранее спасибо!

  Вверх
mr.DUDA
Дата 5.10.2005, 09:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 7
Всего: 232



Цитата(Dubinsky @ 4.10.2005, 17:04)
т.е если на карте ничего нет статичного то и дерево не построить , как же тогда поступили ребята , Red faction , делавшие ? есть ещё какие то способы ?

Сделали BSP-уровень с "выемками", которые заполнили "разрушаемыми" затычками - в виде колонн, отдельных стенок, камней; бОльшая часть уровня - статична.

Цитата(Dmil @ 4.10.2005, 19:10)
как понять что машина движется по трассе а не по обочине?
машина наклоняется в соответствии с наклоном трассы. а как это делается?

Делается ray scene query - по двум известным координатам (X;Y) вычисляется координата Z, являющаяся пересечением вертикальной линии с плоскостью трассы. Этим мы получаем положение каждого конкретного колеса, дальше остаётся только наклонить машину по законам физики smile.


--------------------
user posted image
PM MAIL WWW   Вверх
DENNN
Дата 5.10.2005, 10:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 3878
Регистрация: 27.3.2002
Где: Москва

Репутация: 3
Всего: 43



Цитата(mr @ 5.10.2005, 09:22)
дальше остаётся только наклонить машину по законам физики

Если быть педентичным, то нужно еще сделать тест collision-detection с корпусом и предметами, которые могут быть между колесами.
PM ICQ   Вверх
Dmil
Дата 5.10.2005, 13:06 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Пардон, а как узнать что этот кусок сетки - трасса, а не обочина?
и как узнать плоскость трассы?
ведь исходно есть:
3d сетка - земля
3d сетка - машина

часть сетки земли является трассой, которая имеет изгибы по вертикали и горизонтали.

просто сам писал подобную вещь, но делал сам и движок отбражения сетки, поэтому знал откуда взять координаты.

а если есть просто сетка и просто команда отобразить, как узнать-то все необходимые данные?
или надо еще к сетке дополнительно таблицу иметь с описанием трассы?
  Вверх
arilou
Дата 5.10.2005, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


Профиль
Группа: Экс. модератор
Сообщений: 2646
Регистрация: 15.7.2004
Где: город-герой Минск

Репутация: 6
Всего: 61



Цитата(Dmil @ 4.10.2005, 19:10)
машина наклоняется в соответствии с наклоном трассы. а как это делается?

На полигоны обочины под колесом в текущий момент времени опускается перпендикуляр и машина наклоняется в соотв. с этим перпендикуляром. Вроде так.

Цитата(Dmil @ 4.10.2005, 19:10)
в 3d движке нет больших возможностей, в основном, простой обсчет матриц.

На досуге зайдите на www.artificialstudios.com и посмотрите список фич. Или на http://www.ogre3d.org - чистый 3D движок.


--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
Dubinsky
Дата 5.10.2005, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 252
Регистрация: 1.6.2005

Репутация: нет
Всего: нет



хммм в Red faction рушится ВСЁ ! нет статичных "стен" ,есть очень мало неломаемых маленьких статичных объектов , необходимых для прохождения типа лифт , лестница и т.п. которые скорее не ломаются потому , что надо как то пройти игру , а так , весь уровень можно взорвать и наделать не выемок а новые проходы где хочешь , как хочешь и в любой конфигурации , как высчитывать коллизии(а также оптимизировать и срезать ненужные полигоны ) в таком случае ? есть какой то метод типа динамических деревьев или т.п. что можно будет изменять по ходу игрового процесса ?
PM MAIL WWW   Вверх
mr.DUDA
Дата 5.10.2005, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 7
Всего: 232



Цитата(Dmil @ 5.10.2005, 13:06)
или надо еще к сетке дополнительно таблицу иметь с описанием трассы?

Естественно

Цитата(Dubinsky @ 5.10.2005, 13:23)
хммм в Red faction рушится ВСЁ ! нет статичных "стен" ,есть очень мало неломаемых маленьких статичных объектов

неправда.
Уровень "офис" практически неразрушаемый, а на всех остальных ур-нях большинство стенок - статичные, чтобы не ломать игроку кайф от перегрузки процессора.

Цитата(Dubinsky @ 5.10.2005, 13:23)
как хочешь и в любой конфигурации , как высчитывать коллизии(а также оптимизировать и срезать ненужные полигоны ) в таком случае ? есть какой то метод типа динамических деревьев или т.п. что можно будет изменять по ходу игрового процесса ?

Есть физические движки, их много, но если хочется ВЕСЬ уровень сделать одним большим физическим телом - придётся много кэшировать, много упрощать, на многое забивать, и в итоге не получится никакого выигрыша по сравнению с подходом а-ля Red Faction. Пока что компы слишком слабые. Сомнения ? Посмотри самые сложные демки для любого физ. движка - какие тормоза при большом кол-ве одновременно обсчитываемых коллизий, не говоря уже о тормозах при наличии разрушаемых объектов.


--------------------
user posted image
PM MAIL WWW   Вверх
Dubinsky
Дата 5.10.2005, 17:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 252
Регистрация: 1.6.2005

Репутация: нет
Всего: нет



хорошо , давайте с самого начала ... как БСП дерево помогает при расчёте коллизий ?как его строить ?
PM MAIL WWW   Вверх
arilou
Дата 5.10.2005, 17:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


Профиль
Группа: Экс. модератор
Сообщений: 2646
Регистрация: 15.7.2004
Где: город-герой Минск

Репутация: 6
Всего: 61



Dubinsky
Google не пробовали? http://www.google.com/search?hl=en&q=BSP+%...%B5%D0%B2%D0%BE smile


--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование игр, графики и искуственного интеллекта"
Rickert

НА ЗЛОБУ ДНЯ: Дорогие посетители, прошу обратить внимание что новые темы касающиеся новых вопросов создаются кнопкой "Новая тема" а не "Ответить"! Любые оффтопиковые вопросы, заданные в текущих тематических темах будут удалены а их авторы, при рецедиве, забанены.

  • Литературу, связанную с программированием графики, обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы связанные с программированием графики и мультимедии на языках С++ и Delphi
  • Вопросы по реализации алгоритмов рассматриваются здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rickert.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование игр, графики и искусственного интеллекта | Следующая тема »


 




[ Время генерации скрипта: 0.1009 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.