Поиск точки на меше d3dxmesh.

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

Модератор: Mikle

longwair
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 145
Зарегистрирован: 21.04.2010 (Ср) 12:37
Откуда: Крым.

Поиск точки на меше d3dxmesh.

Сообщение longwair » 05.04.2020 (Вс) 14:12

Вопрос собственно таков, как на меше найти точку пересечения луча(указываем мышкой)? Точнее не само пересечение а именно координаты где произошло то самое пересечение. Пересечение нахожу с помощью Intersect
Код: Выделить всё
d3dx.Intersect Plane.Model, tv, tvI, h, 0, 0, 0, d, 0

Что то подсказывает что координаты можно найти тоже при помощи того же Intersect. Потому как пересечение мы получаем, дистанцию тоже, а остальные нолики, и их же тоже для чего то используют. Подскажите куда копать.
Тут же #000000 по #ffffff написано
Уроки по 3DS Max для начинающих - http://3dlong.ucoz.ru/

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

Re: Поиск точки на меше d3dxmesh.

Сообщение Mikle » 05.04.2020 (Вс) 18:44

Эти "нолики" - это номер полигона, с которым пересёкся луч, текстурные координаты в этой точке, количество пересечений. Это всё тебе не требуется, у тебя есть позиция начала луча tv, направление луча tvI и дистанция до пересечения d. Что ещё нужно для нахождения координат точки пересечения?

longwair
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 145
Зарегистрирован: 21.04.2010 (Ср) 12:37
Откуда: Крым.

Re: Поиск точки на меше d3dxmesh.

Сообщение longwair » 06.04.2020 (Пн) 11:34

Что ещё нужно для нахождения координат точки пересечения?

Формула))))).
В геометрии не силён! И как бы понимаю всё в представлении, а как посчитать не понимаю. Просматривая кучу уроков в интернете вообще не догоняю, они начинают с X,Y,Z, а потом у них из этого числа получаются. И всё ж надо преподать научным языком, что бы вообще было не понятно. А мне надо как для дурака! :roll:
Вот имеем мы начальную точку tv, имеем tvI направление луча, и дистанцию d. Сама формула какова, перемножить tv на tvI и прибавить дистанцию. Или ко всем XYZ прибавить d. Хоть какие нибудь мысли что бы зацепиться за что то
Тут же #000000 по #ffffff написано
Уроки по 3DS Max для начинающих - http://3dlong.ucoz.ru/

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

Re: Поиск точки на меше d3dxmesh.

Сообщение Mikle » 06.04.2020 (Пн) 12:00

Псевдокод:
Код: Выделить всё
dim v as d3dvector
dim res as d3dvector 'результат

vec3normalize v, tvI
vec3scale v, v, d
vec3add res, tv, v

longwair
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 145
Зарегистрирован: 21.04.2010 (Ср) 12:37
Откуда: Крым.

Re: Поиск точки на меше d3dxmesh.

Сообщение longwair » 06.04.2020 (Пн) 12:55

Mikle, всё впихнул в проект и как бы всё работает, но опять я где то косячу. В проекте есть бочка пытаюсь на неё прилепить шарик при наведении мышки. В общем те строки что ты дал работают, но только шарик липнет как мне кажется к нулевой координате. Если зайти за бочку и начать водить по бочке мышкой то увидишь что шарик появляется в том месте откуда стартовала камера, ну и вроде как отрабатывает сетку бочки, и вроде как показалось в зеркальном отражении. Получается всё работает не учитывает дистанцию что ли.
У вас нет доступа для просмотра вложений в этом сообщении.
Тут же #000000 по #ffffff написано
Уроки по 3DS Max для начинающих - http://3dlong.ucoz.ru/

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

Re: Поиск точки на меше d3dxmesh.

Сообщение Mikle » 06.04.2020 (Пн) 14:06

Так у тебя объект трансформирован, а tvI и tv нужно брать исходные значения, а не трансформированные. Замени эти строки:
Код: Выделить всё
  ' находим точку.
  D3DXVec3Normalize vI, vI
  D3DXVec3Scale vI, vI, d
  D3DXVec3Add res, v, vI
 
  'Прикрепляем шарик к бочке.
  If h > 0 Then
    d3dDevice.SetTexture 0, Nothing
    DrawGameMesh Sphere, res.x, res.y, res.z
  End If

longwair
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 145
Зарегистрирован: 21.04.2010 (Ср) 12:37
Откуда: Крым.

Re: Поиск точки на меше d3dxmesh.

Сообщение longwair » 07.04.2020 (Вт) 10:32

Mikle, Как всегда огромное СПАСИБО.
Тут же #000000 по #ffffff написано
Уроки по 3DS Max для начинающих - http://3dlong.ucoz.ru/


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

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

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

    TopList