Свободная камера, как в Space Sim

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

Модератор: Mikle

VladPro
Новичок
Новичок
 
Сообщения: 43
Зарегистрирован: 15.10.2005 (Сб) 23:52

Свободная камера, как в Space Sim

Сообщение VladPro » 04.03.2007 (Вс) 0:02

Хочу сделать леталку космическую. Замучался с камерой. Как ни пробовал, всё время получается, "как в Quake" (были здесь примеры). То есть если посмотреть в пол или потолок, то при движении мыши по оси X камера вращается по оси Y. А надо, чтобы как в космосимах - в любой точке поворачивалась туда, куда двигаешь мышь. Извините, если коряво объяснил, в математике я не силён. Помогите, очень хочется полетать на своём движке :)

DirectXManiac
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1543
Зарегистрирован: 03.11.2005 (Чт) 13:32
Откуда: из DirectX SDK

Сообщение DirectXManiac » 04.03.2007 (Вс) 3:30

VladPro
Это ты называешь коряво? :lol:
Что вообще ты хочешь. Подробнее. Ты хочешь чтобы камера смотрела на модель и при этом вращалась вокруг неё по движению мыши?
#define ROFL 0xDDDD

VladPro
Новичок
Новичок
 
Сообщения: 43
Зарегистрирован: 15.10.2005 (Сб) 23:52

Сообщение VladPro » 04.03.2007 (Вс) 16:26

Ну вот к примеру - Паркан-1, FreeSpace. Мышь вверх/вниз/вправо/влево - камера соответственно, клавиши вперёд-назад - лететь вперёд или назад. Сейчас у меня так, но: если камеру поднять вверх на 90 градусов, то при движении мыши вправо-влево небо поворачивается вокруг своей оси. Ну вроде как если человек голову кверху подымет и вокруг себя крутится. Для шутеров это естественно, у них камера как раз человека и изображает - движение по плоскости. А в космосимах надо поворачивать не точку зрения, а корабль в ту сторону, куда лететь. Одним словом, при движении мыши по оси X экрана камера всегда должна поворачиваться как на экваторе, а не как на полюсах :)

DirectXManiac
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1543
Зарегистрирован: 03.11.2005 (Чт) 13:32
Откуда: из DirectX SDK

Сообщение DirectXManiac » 04.03.2007 (Вс) 21:03

VladPro
И в чём собсно проблема. Если ты сам всё прекрасно знаешь. бери учебник по алгебре(там где тригонометрия) и смотри что именно тебе нужно! :) Вообщем тебе надо умную камеру как в паркане?
#define ROFL 0xDDDD

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 05.03.2007 (Пн) 0:08

Надо вращать модельку вместе движением мыши по X и Y. После чего вычисляется позиция камеры за ней и в качестве цели оной ставится координата модельки.
Изображение

VladPro
Новичок
Новичок
 
Сообщения: 43
Зарегистрирован: 15.10.2005 (Сб) 23:52

Сообщение VladPro » 05.03.2007 (Пн) 1:23

А в чём разница? Да, так я буду иметь постоянный вид модели сзади. Но сама-то модель будет вращаться таким же образом - задерёшь нос или опустишь на 90 градусов - и поворачивайся вокруг своей оси, как балерина :) Впрочем, наверное я что-то не понимаю.

Сейчас вращаю камеру так:
vX=AngleX*0.01 ' AngleX и Y получаем по движению мыши
vY=AngleY*0.01
D3DXMatrixRotationY matView, vX
D3DDevice.SetTransform D3DTS_VIEW, matView
D3DXMatrixRotationX matView, vY
D3DDevice.MultiplyTransform D3DTS_VIEW, matView

И получаю не то, что надо. А мне летать охота :) Как с помощью мыши рулить космическим кораблём?

DirectXManiac
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1543
Зарегистрирован: 03.11.2005 (Чт) 13:32
Откуда: из DirectX SDK

Сообщение DirectXManiac » 05.03.2007 (Пн) 6:28

Ставишь поворот по оси Y в качестве поворота модели и X тоже если надо. Потом тебе надо заставить вращаться камеру по сфере. Думаю формулы приводить не надо. :D
#define ROFL 0xDDDD

VladPro
Новичок
Новичок
 
Сообщения: 43
Зарегистрирован: 15.10.2005 (Сб) 23:52

Сообщение VladPro » 05.03.2007 (Пн) 22:22

А если без модели? Если только вид из кабины?

Что-то не получается. Если есть код вращения и перемещения камеры, как мне надо, кинь плиз. Даже можно просто алгоритм, а код я уж как-нибудь сам :)

DirectXManiac
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1543
Зарегистрирован: 03.11.2005 (Чт) 13:32
Откуда: из DirectX SDK

Сообщение DirectXManiac » 06.03.2007 (Вт) 6:32

VladPro
Если бы ты ясно объяснил! :lol:
А если вообще то только геометрия тебе поможет.
#define ROFL 0xDDDD

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

Сообщение Mikle » 06.03.2007 (Вт) 17:23

VladPro
Тут два варианта, в первом мы всегда летим движемся в том направлении, куда смотрим, но верх и низ остаются неизменными, во втором - полная трехмерная свобода, но для пользователя это сложно (как в игре Descent). Это первый вариант, если надо, могу сделать и второй.
У вас нет доступа для просмотра вложений в этом сообщении.

VladPro
Новичок
Новичок
 
Сообщения: 43
Зарегистрирован: 15.10.2005 (Сб) 23:52

Сообщение VladPro » 06.03.2007 (Вт) 20:23

Сделай пожалуйста. Всё-таки космос :)

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

Сообщение Mikle » 08.03.2007 (Чт) 16:06

Вот полная свобода:
У вас нет доступа для просмотра вложений в этом сообщении.

VladPro
Новичок
Новичок
 
Сообщения: 43
Зарегистрирован: 15.10.2005 (Сб) 23:52

Сообщение VladPro » 09.03.2007 (Пт) 19:53

Вот это то что надо. Действительно немного непривычно, но вполне подойдёт. Спасибо.

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

Сообщение Mikle » 15.03.2007 (Чт) 10:24

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

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

Сообщение Mikle » 16.03.2007 (Пт) 10:28

И еще вариант, с инерцией. То есть тут уже не только геометрия, а еще немного физики.
У вас нет доступа для просмотра вложений в этом сообщении.


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

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

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

    TopList