Пятница, 14 Мая 2021, 10:18

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Программирование » C/C++ » Как сделать перетаскивание Mesh как в 3DMax (DirectX 9.0) ?
Как сделать перетаскивание Mesh как в 3DMax (DirectX 9.0) ?
AlexsSyrДата: Воскресенье, 22 Февраля 2015, 15:02 | Сообщение # 1
почетный гость
Сейчас нет на сайте
Как сделать перетаскивание Mesh как в 3DMax (DirectX 9.0) ?

Как тут:

Добавлено (22 февраля 2015, 15:02)
---------------------------------------------
Можете хотя бы приблизительный алгоритм подсказать ?

PATCH1Дата: Воскресенье, 22 Февраля 2015, 16:10 | Сообщение # 2
заслуженный участник
Сейчас нет на сайте
выделяем все вершины нашего объекта и перетаскиваем их по координатам X,Y,Z на относительное расстояние от предыдущего значения каждой вершины.

Сообщение отредактировал PATCH1 - Воскресенье, 22 Февраля 2015, 16:11
AlexsSyrДата: Воскресенье, 22 Февраля 2015, 16:33 | Сообщение # 3
почетный гость
Сейчас нет на сайте
Меня интересует как сделать выделение mesh с помощью мыши.
XakepДата: Понедельник, 23 Февраля 2015, 19:11 | Сообщение # 4
めちゃくちゃちゃ
Сейчас нет на сайте
Цитата PATCH1 ()
выделяем все вершины нашего объекта и перетаскиваем их по координатам X,Y,Z на относительное расстояние от предыдущего значения каждой вершины.

Делается это не так, а изменением модельной матрицы объекта.

Цитата AlexsSyr ()
Меня интересует как сделать выделение mesh с помощью мыши.

Есть несколько способов. Самый простой, для всех добавляемых объектов создавать свой уникальный цвет (цветов очень много так что должно хватить )) и при клике сохранять позицию курсора, отрисовать все объекты используя только цветовой буфер, и закрасить каждый объект его уникальным цветом, дальше просто смотрим, какой цвет находится под курсором, и ищем среди объектов этот уникальный цвет.

Второй вариант: Перевести оконные координаты мыши в мировые и из этой точки пустить луч перпендикулярно экрану, пробегаем по всем объектам (либо по дереву если строишь) и проверяем на пересечение, если луч пересекает объект, значит выбираем его.


Сообщение отредактировал Xakep - Понедельник, 23 Февраля 2015, 19:15
AlexsSyrДата: Среда, 25 Февраля 2015, 18:35 | Сообщение # 5
почетный гость
Сейчас нет на сайте
Цитата
Перевести оконные координаты мыши в мировые


А как такое реализовать ?
YellowAfterlifeДата: Среда, 25 Февраля 2015, 19:43 | Сообщение # 6
Сейчас нет на сайте
Цитата AlexsSyr ()

А как такое реализовать ?

Можно утащить пример отсюда (для GameMaker; использует DirectX9; бесплатная версия программы подходит для открытия примера).
Способ с цветными объектами на вспомогательном буфере немного дурацкий, но нередко им и пользуются, поскольку он гарантирует "попадание" по видимому пользователю объекту.
Еще способ - вычислить вектор мыши (вектор направления взгляда камеры, повернутый по X и Z в зависимости от смещения мыши от центра экрана), и по нему бросать луч для определения столкновения и следовательно объекта под мышью.


Форум игроделов » Программирование » C/C++ » Как сделать перетаскивание Mesh как в 3DMax (DirectX 9.0) ?
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2021 Рейтинг