Как сделать перетаскивание 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 в зависимости от смещения мыши от центра экрана), и по нему бросать луч для определения столкновения и следовательно объекта под мышью.
|
|
| |