Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

вопрос по directX

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Компилируемые языки] >> вопрос по directX
Имя
Сообщение << Старые топики   Новые топики >>
вопрос по directX - 2010-07-21 15:03:19.343333   
kent90

Сообщений: 22
Оценки: 0
Присоединился: 2008-11-05 09:14:41.743333
Здравствуйте, у меня следующая проблема:
Я создал в 3d max два объекта( допустим человек и пуля ). В виде mesh объектов засунул их в программу и создал сцену, где пуля под любым углом и с любого направления летит в пространстве и допустим попадает, или не попадает в человека.
Мне нужно узнать следующее:
1. Попала ли пуля в человека.
2. Если попала, то в какую часть тела( рука, нога, голова… ).
Как наиболее кошерно, программно это узнать можно, чтобы изгородь не городить лишнюю( функции мож какие )?
Может как бы вы сделали?
Post #: 1
RE: вопрос по directX - 2010-07-21 15:27:38.710000   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
физику надо самому писать, а не пытаться это вычислить по графическим координатам ;)
Post #: 2
RE: вопрос по directX - 2010-07-21 16:31:39.010000   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
http://en.wikipedia.org/wiki/Collision_detection

и дальше по ссылкам
Post #: 3
RE: вопрос по directX - 2010-07-21 18:23:28.160000   
kent90

Сообщений: 22
Оценки: 0
Присоединился: 2008-11-05 09:14:41.743333
т.е. мне нужно создать свою 3д реальность, создавать в ней своего 3д человечка, который ходит, прыгает, отдельно ему создавать руки, ноги, состоящие из допустим множества квадратиков и прямоугольников. Это чтобы он просто поднял и повернул руку придется писать кучу кода, который будет обрабатывать процессор. В играх так делается?

Post #: 4
RE: вопрос по directX - 2010-07-21 18:35:27.196666   
sbk

Сообщений: 144
Оценки: 0
Присоединился: 2008-12-20 19:01:57.273333
Не, просто придется писать физ. движок, если Вы хорошо знаете физику, то это будет не сложно, иначе Вы можете воспользоваться другими физ. движками.
Post #: 5
RE: вопрос по directX - 2010-07-21 20:32:12.840000   
kent90

Сообщений: 22
Оценки: 0
Присоединился: 2008-11-05 09:14:41.743333
А в физ.движке разве пишутся координаты и стороны объекта? Там пишутся физ. характеристики объекта, а не его координаты, точки, поверхности, размеры и т.д.. Как мне все-таки можно узнать, в какую именно часть mesh объекта попал другой mesh объект, если такое возможно.
Ну например, летит один объект себе по какой-нибудь там формуле, с такой-то скоростью. Вдруг появляется на его пути другой объект. второй объект - сложной формы, и, даже если они находятся в одной точке, может же быть, что первый объект, пролетит допустим в отверстие второго, даже не задев его. Так вот, как узнать, было ли соприкосновение объектов?? Не понимаю, при чем тут физика, когда тут геометрия: входит ли точки из объекта 1 в объект 2.
Post #: 6
RE: вопрос по directX - 2010-07-21 20:45:25.393333   
sbk

Сообщений: 144
Оценки: 0
Присоединился: 2008-12-20 19:01:57.273333
За обработку столкновений отвечает физика, а не геометрия.

quote:

Ну например, летит один объект себе по какой-нибудь там формуле, с такой-то скоростью.


Гораздо эффективней траекторию движения объекта задавать его позицией в пространстве(x,y,z), и скоростью(Vx, Vy, Vz), и перед тем как вывести объект на экран, нужно будет обновить позицию объекта: positon = positon + velocity, где positon и velocity - вектора. Если у Вас объкт еще находиться в свободном падении, то нужно ещё к скорости прибавить ускорение свободного падения: velocity = velocity + (0, 9.8, 0). И там же(перед отрисовкой) обрабатываются столкновения, это делается так: если объект один находиться внутри объекта два, то столкновение есть, иначе нету.
Post #: 7
RE: вопрос по directX - 2010-07-21 20:53:24.543333   
kent90

Сообщений: 22
Оценки: 0
Присоединился: 2008-11-05 09:14:41.743333
Спасибо, а как узнать в directX, что один объект находится внутри или частично внутри другого? Объекты я загружаю как mesh в C#
Post #: 8
RE: вопрос по directX - 2010-07-21 20:59:12.066666   
sbk

Сообщений: 144
Оценки: 0
Присоединился: 2008-12-20 19:01:57.273333
Вы пишите на XNA, или на Managed DirectX? Если XNA, то в классе ModelMesh есть свойство BoundingSphere у которого есть метод Intersects который возвращает истину если две BoundingSphere пересекаются.
Post #: 9
RE: вопрос по directX - 2010-07-21 21:10:46.536666   
kent90

Сообщений: 22
Оценки: 0
Присоединился: 2008-11-05 09:14:41.743333
quote:

Managed DirectX
Post #: 10
RE: вопрос по directX - 2010-07-21 21:28:13.113333   
sbk

Сообщений: 144
Оценки: 0
Присоединился: 2008-12-20 19:01:57.273333
В Managed DirectX у Mesh'а тоже есть метод Intersects, как им пользоваться разберетесь сами.

P.S. Мой Вам совет, переходите на XNA
Post #: 11
RE: вопрос по directX - 2010-07-22 09:50:48.840000   
hromjo

Сообщений: 434
Оценки: 0
Присоединился: 2009-12-31 15:42:15.823333
na XNA i vobhse na c# 3d programmyi poluchautsa gluchinnyie.
Post #: 12
RE: вопрос по directX - 2010-07-22 12:08:44.480000   
sbk

Сообщений: 144
Оценки: 0
Присоединился: 2008-12-20 19:01:57.273333
Ну зачем Вы так, на XNA уже есть пару очень хороших, не глючных игр. И вообще глючность игры зависит только от криворукости программиста.
Post #: 13
Страниц:  [1]
Все форумы >> [Компилируемые языки] >> вопрос по directX







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.