Реализация столкновений пули со стенами Direct 3D

DirectX, OpenGL, Glide и другие графические движки...
Sergey-pr
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 03.07.2010 (Сб) 7:04

Реализация столкновений пули со стенами Direct 3D

Сообщение Sergey-pr » 03.07.2010 (Сб) 7:10

Подскажите, каким образом реализовать столкновение пули со стенами так чтобы следы на стенах оставались в виде пробоин.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 2393
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Реализация столкновений пули со стенами Direct 3D

Сообщение Mikle » 03.07.2010 (Сб) 8:51

Это две разных задачи.
Первая - зная позицию стрелка и направление выстрела, узнать ближайшее пересечение пули с геометрией уровня. Если используются D3DXMesh, то можно использовать Intersect.
Вторая - отобразить следы от пуль. Можно использовать для стен дополнительную текстуру, в которую рисовать пробоины.

Debugger
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1272
Зарегистрирован: 17.06.2006 (Сб) 15:11

Re: Реализация столкновений пули со стенами Direct 3D

Сообщение Debugger » 03.07.2010 (Сб) 19:27

Поддерживаю тему.
Как реализовать декали средствами DirectX?
Программист - это локальный бог (С) Я

Sergey-pr
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 03.07.2010 (Сб) 7:04

Re: Реализация столкновений пули со стенами Direct 3D

Сообщение Sergey-pr » 03.07.2010 (Сб) 21:34

Пересечение с помощью функции Intersect определяю, а как добавить дополнительную текстуру (это случайно не мультитекстурирование). Треугольник, с которым имеется пересечение, пытался найти посредствам FaceIndex, но ничего не получается. Как быть?

djalex777
Постоялец
Постоялец
 
Сообщения: 307
Зарегистрирован: 23.03.2006 (Чт) 16:02

Re: Реализация столкновений пули со стенами Direct 3D

Сообщение djalex777 » 05.07.2010 (Пн) 19:00

Да можно и мультитекстурирование... Но я делал двумерными объектами (плоскостями), проблему с отсечением излишка на углах решал через Z-Buffer.

DODge
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 80
Зарегистрирован: 30.07.2006 (Вс) 0:25
Откуда: Нижний Новгород

Re: Реализация столкновений пули со стенами Direct 3D

Сообщение DODge » 06.07.2010 (Вт) 22:34

Debugger писал(а):Поддерживаю тему.
Как реализовать декали средствами DirectX?

Я, кстати, видел другой подход изображения декали на геометрии... Смысл его в том, что в созданный графический конвейер НЕ вносятся абсолютно никаких изменений (в том числе и в шейдеры тоже). Вся хитрость в финальной пост-обработке, т.е. декали уже накладыватся на финальное изображение с соответсвующими просчётами. Был где-то у меня этот пример, да на тот момент не придал должного внимания и теперь не могу вспомнить название того архива :(
Там даже для прикола это сделали на фиксированном конвейере, ну а для просчёта использованы 2е шейдеры. Имею ввиду что это можно встроить в любой двиг "просто" добавив в конец пайплана эту процедуру.
Core 2 Duo 1.8 Mhz, 3 GB, 9800GT 512Mb
Windows Vista Ultimate SP2
Visual Basic 2008 (.NET Framework 3.5)
DirectX 8&9 + HLSL

Sergey-pr
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 03.07.2010 (Сб) 7:04

Re: Реализация столкновений пули со стенами Direct 3D

Сообщение Sergey-pr » 07.07.2010 (Ср) 19:50

Декаль - это прямоугольник на который наложена текстура?

iGrok
Профессор VB наук
Профессор VB наук
 
Сообщения: 2901
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Реализация столкновений пули со стенами Direct 3D

Сообщение iGrok » 07.07.2010 (Ср) 22:36

Sergey-pr писал(а):Декаль - это прямоугольник на который наложена текстура?

http://ru.wikipedia.org/wiki/Декаль

Грубо - что-то, нарисованное "поверх" текстуры. След удара, царапина, след от пули, и т.п.
label:
cli
jmp label

Sergey-pr
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 03.07.2010 (Сб) 7:04

Re: Реализация столкновений пули со стенами Direct 3D

Сообщение Sergey-pr » 08.07.2010 (Чт) 19:55

Вот мой пример определения попадания посредствам Intersect. Как мне в точку попадания добавить декаль пробоины от пули?
У вас нет доступа для просмотра вложений в этом сообщении.

Sergey-pr
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 03.07.2010 (Сб) 7:04

Re: Реализация столкновений пули со стенами Direct 3D

Сообщение Sergey-pr » 10.07.2010 (Сб) 23:24

Имеется один треугольник и известны координаты его вершин, а также второй треугольник и координаты его вершин. Вопрос: Как повернуть второй треугольник так, чтобы он стал паралельный первому?

FireFenix
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 527
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: Реализация столкновений пули со стенами Direct 3D

Сообщение FireFenix » 11.07.2010 (Вс) 1:16

Сделать одинаковое расстояние между вершинами треугольников или сопоставить нормали
Do the Impossible, See the Invisible, Touch the Untouchable, Break the Unbreakable... Fight for Power!

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 2393
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Реализация столкновений пули со стенами Direct 3D

Сообщение Mikle » 11.07.2010 (Вс) 8:36

FireFenix
Сделать одинаковое расстояние между вершинами треугольников или сопоставить нормали

Делать одинаковое расстояние - значит искажать треугольник. На счёт нормалей - мысль верная.
Считаем нормали с помощью CrossProduct, нормализуем их, потом с помощью DotProduct нормалей получаем косинус угла, на который нужно повернуть, а с помощью CrossProduct нормалей - ось, вокруг которой поворачивать.

Sergey-pr
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 03.07.2010 (Сб) 7:04

Re: Реализация столкновений пули со стенами Direct 3D

Сообщение Sergey-pr » 11.07.2010 (Вс) 12:23

Поворачивать нужно c помощью матриц (d3dMatrixRotationAngle)?

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 2393
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Реализация столкновений пули со стенами Direct 3D

Сообщение Mikle » 12.07.2010 (Пн) 9:17

Поворачивать нужно c помощью матриц (d3dMatrixRotationAngle)?

MatrixRotationAxis.
Но подозреваю, что тебе этого не нужно. Мой прошлый пост был просто ответом на предыдущий.
Тебе нужно не поворачивать, а сразу создавать полигон в нужной плоскости.

Debugger
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1272
Зарегистрирован: 17.06.2006 (Сб) 15:11

Re: Реализация столкновений пули со стенами Direct 3D

Сообщение Debugger » 12.07.2010 (Пн) 12:46

Когда два полигона расположены близко, появляется неприятный артефакт. К тому же, такое декали нельзя лепить на углы без заморочек.
Может, есть более хорошие способы, чем "налепливание" на стенку прямоугольника?
Смысл его в том, что в созданный графический конвейер НЕ вносятся абсолютно никаких изменений (в том числе и в шейдеры тоже). Вся хитрость в финальной пост-обработке, т.е. декали уже накладыватся на финальное изображение с соответсвующими просчётами. Был где-то у меня этот пример, да на тот момент не придал должного внимания и теперь не могу вспомнить название того архива

Вспоминай
Программист - это локальный бог (С) Я

Sergey-pr
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 03.07.2010 (Сб) 7:04

Re: Реализация столкновений пули со стенами Direct 3D

Сообщение Sergey-pr » 26.07.2010 (Пн) 20:40

Вот мой пример проверки столкновений и рисования в точке столкновения декалей.
У вас нет доступа для просмотра вложений в этом сообщении.

Debugger
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1272
Зарегистрирован: 17.06.2006 (Сб) 15:11

Re: Реализация столкновений пули со стенами Direct 3D

Сообщение Debugger » 26.07.2010 (Пн) 22:22

Хорошо.
Но, опять же, не универсально: большой спрайт на изломанной геометрии таким образом (как один прямоугольник) не отрисуешь.
Программист - это локальный бог (С) Я

Sergey-pr
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 03.07.2010 (Сб) 7:04

Re: Реализация столкновений пули со стенами Direct 3D

Сообщение Sergey-pr » 15.08.2010 (Вс) 21:43

Как найти все вершины, которые входят в объем куба или сферы?

Debugger
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1272
Зарегистрирован: 17.06.2006 (Сб) 15:11

Re: Реализация столкновений пули со стенами Direct 3D

Сообщение Debugger » 15.08.2010 (Вс) 22:17

Неправильно. (как я понял, ты хочешь отлавливать вершины и изгибать спрайт)
Может получиться так, что ни одна вершина не входит в куб, а входят куски ребер.
Программист - это локальный бог (С) Я

Sergey-pr
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 03.07.2010 (Сб) 7:04

Re: Реализация столкновений пули со стенами Direct 3D

Сообщение Sergey-pr » 20.08.2010 (Пт) 20:17

Именно это мне и нужно. Есть ли какие-нибудь мысли?

FireFenix
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 527
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: Реализация столкновений пули со стенами Direct 3D

Сообщение FireFenix » 20.08.2010 (Пт) 22:56

Аналитическая геометрия -> Уравнение плоскости-> Not Параллельность плоскостей
Где плоскость 1 есть трисы принадлежащие спрайту и плоскость 2 - трисы объекта
Do the Impossible, See the Invisible, Touch the Untouchable, Break the Unbreakable... Fight for Power!


Вернуться в VB & 3D

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

    TopList