Узнать куда смотрит камера,...

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

Модератор: Mikle

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Узнать куда смотрит камера,...

Сообщение d3drm » 04.12.2005 (Вс) 11:03

... если известен ее поворот по трем осям... Как?
ХЎ

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

Сообщение Mikle » 05.12.2005 (Пн) 18:23

d3drm
Поясни, что значит "Узнать куда смотрит камера,..." Найти матрицу? тогда просто перемножь соответствующие матрицы поворотов.
И вообще, если камера описана поворотом, по трем осям, значит она находится в начале координат?

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 05.12.2005 (Пн) 20:20

ну я вот да. красноречию и правильности выражения мыслей мне не занимать =)

собсно проще говоря нужно получить вектор, который будет в себе хранить позицию камеры при учете поворота камеры по трем осям. всю жизнь делал так:

Код: Выделить всё
Public Sub MoveForward(Movement As Single)
    '---------------------------------------------------
    With Pos
    .X = Pos.X + (Cos(g_90d + Rot.y) * Movement)
    .y = Pos.y + (sIn(Rot.X) * Movement)
    .z = Pos.z + (sIn(g_90d + Rot.y) * Movement)
    End With
    CamPos = Pos
    '---------------------------------------------------
End Sub


где g_90d это Пи пополам. Работает, но неправильно при больших улах поворота по х. Может кто-то по-другому делал...
ХЎ

Vovik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 643
Зарегистрирован: 02.08.2003 (Сб) 15:14
Откуда: Belarus, Minsk

Сообщение Vovik » 05.12.2005 (Пн) 22:46

А так не пробовал?
Код: Выделить всё

Public Function GetDirection() As D3DVector
With GetDirection
  .X = ViewMatrix.m13
  .Y = ViewMatrix.m23
  .Z = ViewMatrix.m33
End With
End Function

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 05.12.2005 (Пн) 23:42

трабл в том, что это не для d3d приложения, матрицы использовать нельзя :wink:
ХЎ

nekeda
Постоялец
Постоялец
 
Сообщения: 710
Зарегистрирован: 10.04.2005 (Вс) 23:20

Сообщение nekeda » 06.12.2005 (Вт) 13:04

d3drm
а мне можно?;)
взятся что ли за директХ.. лучше поздно чем ещё позже..)

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 07.12.2005 (Ср) 0:17

nekeda, тебе можно :wink: Можешь взяться за DirectX, DirectY и другие Direct буквы =) В натуре поздно лучше чем вообще. Короче вот...
ХЎ

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

Сообщение Mikle » 07.12.2005 (Ср) 10:28

d3drm
Матрицы использовать можно везде, где установлен DX8. Для этого не нужно иметь 3D карту, создавать device, даже создавать экземпляр D3DX8. Просто включаешь в References DX8 for VB Type Library и пользуешься всей математикой D3DX.

nekeda
Постоялец
Постоялец
 
Сообщения: 710
Зарегистрирован: 10.04.2005 (Вс) 23:20

Сообщение nekeda » 07.12.2005 (Ср) 16:37

d3drm
ой, это я не в ту тему написал))) ну ты понял, да?))

может создать новый отдельный топик для совсем нупских вопросов?


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

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

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

    TopList