С Новым годом! Форум программистов, компьютерный форум, киберфорум
DirectX
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
 Аватар для lokod
0 / 0 / 0
Регистрация: 03.02.2012
Сообщений: 4

Спрайты в Direct3D

13.01.2013, 12:43. Показов 1896. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как средствами Direct3D сделать анимированный спрайт нарезкой из битмапа?
И вывести полученную анимацию на экран?
Есть пример для DDRAW, но хотелось бы к новым технологиям приобщиться

Добавлено через 14 часов 8 минут
Или задам вопрос по другому...
Как вывести спрайт в Direct3D

Добавлено через 7 часов 51 минуту
Нашел пример в инете - разобрался
Тема закрыта
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.01.2013, 12:43
Ответы с готовыми решениями:

Direct3D
Здравствуйте, после покупки системника поставили винду 7 bit32 Но при загрузке игр Lineage 2 и других по типу AION выскакивает...

Qt + Direct3D
Здрасте :) Понимаю, что бред делаю, но: #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include...

Direct3D
Пытаюсь разобратся с программированием графики на Builder C++ не могу найти материала.

2
 Аватар для lokod
0 / 0 / 0
Регистрация: 03.02.2012
Сообщений: 4
17.01.2013, 16:07  [ТС]
Как направить персонажа 3д в место клика мыши?
0
872 / 448 / 35
Регистрация: 25.10.2011
Сообщений: 910
18.01.2013, 22:22

Не по теме:

Согласно правилам форума, для каждого вопроса - следует создавать отдельную тему.


Перемещение - весьма простая операция, которая выполняется с помощью изменения матрицы объекта. А вот над получением координат придется немного подумать.

Исходные координаты (там, где находится объект персонажа) и так хранятся в какой-нибудь переменной, поэтому на этом заострять внимание не буду. Главное здесь разобраться с проверкой пересечения луча с объектом (некой плоскостью, по которой происходит передвижение Вашего персонажа).

Лучом в данном случае, является структура, состоящая из двух векторов. Положения и направления. В-первом - хранится информация о том, где находится камера, а во-втором - непосредственное направление луча (где находится курсор).

Для получения данного луча необходимы следующие данные: размеры окна (можно получить через ViewPort, если с этим есть трудности), положение курсора, матрица проекции, вида и мировая матрица объекта (с которым необходимо проверить пересечение!).

Подробности самой операции нахождения пересечения описывать не буду (всего не помню и боюсь сделать ошибку в деталях), но компетентных источников не мало. Советую прочитать про выбор объектов у Франка Луна. Или любой другой источник на тему пересечения (intersect) или выбора объектов (picking).

Если будут большие проблемы с поиском, то вот алгоритм преобразования экранных координат в луч (повторяю, всего не помню и где-то могу ошибаться; в последнем блоке умножение py может происходить на другой ряд, в зависимости от того, как представляются y, z):
Code
1
2
3
4
5
6
7
8
9
float px =  ((2.0f * mouse.x / screen.x) - 1.0f) / m_proj._11;
float px = -((2.0f * mouse.y / screen.y) - 1.0f) / m_proj._22;
 
MATRIX m = MATRIX_INVERT(m_world * m_view);
VECTOR o = VECTOR(m._41,m._42,m._43);
VECTOR d;
d.x = px * m._11 + py * m._21 + m._31;
d.y = px * m._12 + py * m._22 + m._32;
d.z = px * m._13 + py * m._23 + m._33;
Только вместо пересечения луча и сферы/куба, здесь необходимо использовать стандартный метод библиотеки DirectX - D3DXIntersect. Это гораздо медленнее, но на первое время сойдет (ибо если будет происходить обработка ландшафта, а не обычной плоскости, то веселья будет не мало). Результатом выполнения метода, с использованием векторов луча и сетки (меша) плоскости - будет ответ, пересекает ли луч сетку и расстояние от положения камеры до пересечения.

Вот собственно и все, последний штрих - используя эти данные переместить объект. Альтернатива - это преобразование экранных координат в пространственные.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.01.2013, 22:22
Помогаю со студенческими работами здесь

DirectX9 Direct3D
Здравствуйте! Возникла проблема: При загрузке х. файлов из пакета ДиректХ все нормально (тот же самый тигр). Но если я експортирую из...

Инициализация Direct3D на С++
Столкнулся с проблемами при изучении DirectX. Останавился на инициализации Direct3D, потому что 1. Пробую пример из самплов SDK - все...

Треугольник в Direct3D 9
Рисую простой треугольник по книге Ф.Луны. Не отображается последняя грань треугольника... В чем может быть проблема??? Исходники и...

Direct3D.dll
Ситуация такова: В Visual Studio 2013 создаю проект, подключаю библиотеки DirectX из C:\Windows\Microsoft.NET\DirectX for Managed...

Direct3D и Многопоточность.
Всем доброго времени суток, долго искал ответ на мой вопрос с помощью Гугла, но так ничего и не разузнал, по сему решил зарегистрироваться...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru