ПрограммированиеФорумГрафика

Сделал камеру на OpenGl+WinAPI. Нормально ли? (Переделал управление от мыши)

#0
12:23, 9 июля 2014

GLFramework
Нормален ли вид (поворачивать, нажимая правую кнопку мыши), не кажется ли искаженным? Использую свой код для матрицы вращения вокруг оси, проходящей через начало координат.

#1
12:24, 9 июля 2014

Долго не держите, забыл отключить отладочный лог

#2
14:22, 9 июля 2014

Движения есть влево вправо, вперёд назад. А при нажатии правой кнопки мыши, всё замирает.

#3
14:58, 9 июля 2014

Monte-Kristo
> А при нажатии правой кнопки мыши, всё замирает.
Странняк, ведь на древнем 1.1 сделал

#4
15:16, 12 июля 2014

Попробовал, у меня ничего не замирает. Только лево-право поменять.

#5
23:19, 12 июля 2014

graveman
Все виснет. Отключи логирование. Ты в файл на каждом кадре пишешь??

#6
1:40, 13 июля 2014

Andrey
> graveman
> Все виснет. Отключи логирование. Ты в файл на каждом кадре пишешь??
Да, я кстати переделываю пока.

#7
7:57, 15 июля 2014

При правом клике камера двигается рывками

#8
12:28, 15 июля 2014

IIIypuk
> При правом клике камера двигается рывками
Как раз проектирую интерфейс на событиях. Соответственно будут учитываться временные шаги. В процедуре окна буду посылать эвентменеджеру события, а в основном цикле он будет рассылать их подписавшимся листенерам и в апдейте сообщения будут обрабатываться.

#9
12:40, 31 июля 2014

"C" - отключает или включает курсор (wasd - как в fps, zx - верх-вниз).
[file=98577]
Вот код вращения от мыши. Больше пока не смог ничего придумать.
Проективную матрицу пока рассчитываю методами D3DX (не могу пока понять смысл проективных координат)

+ Показать

Нормально, гладко?
Кто как еще реализует, может чисто на векторах как-то.

#10
13:31, 31 июля 2014

Можно и проще. У меня так:

D3DXVECTOR3 eyePos(40,40,-100), eyeDir(0,0,1);
...
void rotate(float up, float side)
{
  D3DXMATRIX mRot;
  D3DXMatrixRotationYawPitchRoll(&mRot, side, up, 0);
  D3DXVec3TransformNormal(&eyeDir, &eyeDir, &mRot);
  D3DXVec3Normalize(&eyeDir, &eyeDir);
}
...
D3DXMatrixLookAtLH(&mView, &eyePos, &(eyePos + eyeDir), &D3DXVECTOR3(0,1,0));
#11
6:44, 8 авг 2014

Потестите камеру  на opengl - переделал. [file=98772]
Использовал сферические координаты для матрицы вида.
Перспективную матрицу пока из glu взял, так как еще не разобрался в проективных координатах.
Управление. C - подключить мышь к камере и спрятать курсор, повторное нажатие - отключить мышь от камеры и показать курсор.
Движение камеры W,A,S,D,Z,X. Сначала подключите мышь (C) и дайте ход назад(S).
Не дергается ли, нормально ли для шутера будет?

+ Показать
ПрограммированиеФорумГрафика

Тема в архиве.