вопрос по directX
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
вопрос по directX - 2010-07-21 15:03:19.343333
|
|
|
kent90
Сообщений: 22
Оценки: 0
Присоединился: 2008-11-05 09:14:41.743333
|
Здравствуйте, у меня следующая проблема: Я создал в 3d max два объекта( допустим человек и пуля ). В виде mesh объектов засунул их в программу и создал сцену, где пуля под любым углом и с любого направления летит в пространстве и допустим попадает, или не попадает в человека. Мне нужно узнать следующее: 1. Попала ли пуля в человека. 2. Если попала, то в какую часть тела( рука, нога, голова… ). Как наиболее кошерно, программно это узнать можно, чтобы изгородь не городить лишнюю( функции мож какие )? Может как бы вы сделали?
|
|
|
RE: вопрос по directX - 2010-07-21 15:27:38.710000
|
|
|
_SaZ_
Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
|
физику надо самому писать, а не пытаться это вычислить по графическим координатам ;)
|
|
|
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 и дальше по ссылкам
|
|
|
RE: вопрос по directX - 2010-07-21 18:23:28.160000
|
|
|
kent90
Сообщений: 22
Оценки: 0
Присоединился: 2008-11-05 09:14:41.743333
|
т.е. мне нужно создать свою 3д реальность, создавать в ней своего 3д человечка, который ходит, прыгает, отдельно ему создавать руки, ноги, состоящие из допустим множества квадратиков и прямоугольников. Это чтобы он просто поднял и повернул руку придется писать кучу кода, который будет обрабатывать процессор. В играх так делается?
|
|
|
RE: вопрос по directX - 2010-07-21 18:35:27.196666
|
|
|
sbk
Сообщений: 144
Оценки: 0
Присоединился: 2008-12-20 19:01:57.273333
|
Не, просто придется писать физ. движок, если Вы хорошо знаете физику, то это будет не сложно, иначе Вы можете воспользоваться другими физ. движками.
|
|
|
RE: вопрос по directX - 2010-07-21 20:32:12.840000
|
|
|
kent90
Сообщений: 22
Оценки: 0
Присоединился: 2008-11-05 09:14:41.743333
|
А в физ.движке разве пишутся координаты и стороны объекта? Там пишутся физ. характеристики объекта, а не его координаты, точки, поверхности, размеры и т.д.. Как мне все-таки можно узнать, в какую именно часть mesh объекта попал другой mesh объект, если такое возможно. Ну например, летит один объект себе по какой-нибудь там формуле, с такой-то скоростью. Вдруг появляется на его пути другой объект. второй объект - сложной формы, и, даже если они находятся в одной точке, может же быть, что первый объект, пролетит допустим в отверстие второго, даже не задев его. Так вот, как узнать, было ли соприкосновение объектов?? Не понимаю, при чем тут физика, когда тут геометрия: входит ли точки из объекта 1 в объект 2.
|
|
|
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). И там же(перед отрисовкой) обрабатываются столкновения, это делается так: если объект один находиться внутри объекта два, то столкновение есть, иначе нету.
|
|
|
RE: вопрос по directX - 2010-07-21 20:53:24.543333
|
|
|
kent90
Сообщений: 22
Оценки: 0
Присоединился: 2008-11-05 09:14:41.743333
|
Спасибо, а как узнать в directX, что один объект находится внутри или частично внутри другого? Объекты я загружаю как mesh в C#
|
|
|
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 пересекаются.
|
|
|
RE: вопрос по directX - 2010-07-21 21:10:46.536666
|
|
|
kent90
Сообщений: 22
Оценки: 0
Присоединился: 2008-11-05 09:14:41.743333
|
quote:
Managed DirectX
|
|
|
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
|
|
|
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.
|
|
|
RE: вопрос по directX - 2010-07-22 12:08:44.480000
|
|
|
sbk
Сообщений: 144
Оценки: 0
Присоединился: 2008-12-20 19:01:57.273333
|
Ну зачем Вы так, на XNA уже есть пару очень хороших, не глючных игр. И вообще глючность игры зависит только от криворукости программиста.
|
|
|
|
|