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

Работа с 2D и 3D графикой, видео, звуком.

Модератор: Mikle

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

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

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

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

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

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

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

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

Debugger
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1667
Зарегистрирован: 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
Постоялец
Постоялец
 
Сообщения: 461
Зарегистрирован: 23.03.2006 (Чт) 16:02

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

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

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

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

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

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

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

Я, кстати, видел другой подход изображения декали на геометрии... Смысл его в том, что в созданный графический конвейер НЕ вносятся абсолютно никаких изменений (в том числе и в шейдеры тоже). Вся хитрость в финальной пост-обработке, т.е. декали уже накладыватся на финальное изображение с соответсвующими просчётами. Был где-то у меня этот пример, да на тот момент не придал должного внимания и теперь не могу вспомнить название того архива :(
Там даже для прикола это сделали на фиксированном конвейере, ну а для просчёта использованы 2е шейдеры. Имею ввиду что это можно встроить в любой двиг "просто" добавив в конец пайплана эту процедуру.
CPU = Intel Core i5 6500 @ 3.2 GHz
VGA = GeForce GTX 650Ti 2Gb
RAM = 8 ГБ DDR4 @ 2133 MHz
OS = Windows 10 Pro 64-bit
IDE = Microsoft Visual Studio Community 2017 (Visual Basic.NET)
GAPI = SharpDX 9 + 12

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

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

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

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

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 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
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

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

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

Сделать одинаковое расстояние между вершинами треугольников или сопоставить нормали
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 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
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

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

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

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

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

Debugger
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1667
Зарегистрирован: 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
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1667
Зарегистрирован: 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
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1667
Зарегистрирован: 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
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

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

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

Аналитическая геометрия -> Уравнение плоскости-> Not Параллельность плоскостей
Где плоскость 1 есть трисы принадлежащие спрайту и плоскость 2 - трисы объекта
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる


Вернуться в Мультимедиа

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

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

    TopList