|
Алгоритмика Об алгоритмах вообще; методы, обсуждения способов решения |
02.11.2006, 23:43
|
#1
|
|
камера для гонок
помогите псевдокодом
ну или идеи киньте
надо камера примерно как в nfs .. ну или что нить нормальное
щас update камеры работает на немного страшноватом коде
но он работает
irr::core::matrix4 camera_base_projection;
camera_base_projection.setTranslation(irr::core::vector3df(-4.0f,2.0f,0.0f));
NxMat34 pose = player->getGlobalPose();
const NxVec3 pos = pose.t;
const NxMat33 orient = pose.M;
irr::core::matrix4 irrMat;
orient.getColumnMajorStride4(&irrMat.M[0]);
irr::core::vector3df rot = irrMat.getRotationDegrees();
pos.get(&irrMat.M[12]);
irrMat.M[3] = irrMat.M[7] = irrMat.M[11] = 0.0f;
irrMat.M[15] = 1.0f;
irr::core::matrix4 irrMat2;
irrMat2.setRotationDegrees(rot);
irrMat2.setTranslation(irrMat.getTranslation());
irrMat2 *= camera_base_projection;
irr::core::vector3df pos_c = irrMat2.getTranslation();
irr::core::vector3df target(pose.t.x,pose.t.y,pose.t.z);
target += camera->getTarget() * 0.0005f;
camera->setPosition(pos_c);
camera->setTarget(target);
ps. матричные операции зло, запутатся нефиг делать...
|
|
|
03.11.2006, 00:03
|
#2
|
Дэвелопер
Регистрация: 17.01.2006
Сообщений: 1,512
Написано 78 полезных сообщений (для 110 пользователей)
|
Re: камера для гонок
В алгоритмике нежелательно приводить как пример код на каком-либо языке программирования. Или формулы, или псевдокод - чтобы было понятно, что там у тебя происходит.
|
(Offline)
|
|
03.11.2006, 00:54
|
#3
|
|
Re: камера для гонок
ну вот слегка перевел на русский язык
но думаю от етого код стал еще запутанее
матрица положения камеры - ставим ей трансляцию от игрока в локальных координатах
получаем матрицу игрока (physx еще)
получаем от туда положение и матрицу поворота (3 на 3)
суем матрицу поворота в буферную матрицу
суем в ету матрицу положение игрока
множим буферную матрицу на матрицу матрицу положения камеры
результат возвратим в буферную матрицу
получим из буферной матрицы трансляцию
зделаем буферный вектор - цель камеры
к цели камеры прибаляем текущий вектор направления камеры умноженый на 0.0005
ставим положение и вектор направления камере
|
|
|
04.11.2006, 21:17
|
#4
|
Дэвелопер
Регистрация: 19.03.2006
Сообщений: 1,241
Написано 10 полезных сообщений (для 17 пользователей)
|
Re: камера для гонок
Разгон камера отходит,
Тормоз камера подходит,
Поворот в право, видно правую сторону,
Поворот в лево, левую,
Даеш назад камера плавно перетекает на перед,
P.S. Как в GTA
|
(Offline)
|
|
05.11.2006, 00:54
|
#5
|
|
Re: камера для гонок
vlad
ето я и без тебя придумал
теперь переведи ето все в псевдокод управления матрицами ...
или вот задача - дано вектор положения игрока
надо получить вектор положения камеры, так что дерзай
|
|
|
21.05.2007, 17:57
|
#6
|
scientist.alien
Регистрация: 12.02.2007
Сообщений: 2,098
Написано 1,030 полезных сообщений (для 2,593 пользователей)
|
Re: камера для гонок
Не думаю, что тема ещё актуальна, но всё-таки...
Такие предложения (сразу не пинать, лучше грамотно объяснить, почему это плохая идея):
Креатим трёхмерный(или двухмерный, там по ситуациим надо смотреть) массив со, скажем, сотней ячеек в каждую сторону.
Прогоняем без рендера эту сотню циклов, каждый раз забивая в ячейку положение предмета + некоторое отклонение(чтобы когда предмет остановится, не было того, что называется "camera inside")
Номер ячейки (он и по X, и по Y один и тот же, так что есть резон юзать не трёхмерку, а три линейки) за каждый проход увеличиваем на один, если номер достиг значения 100 (я вот не помню, как я делал в блитце - сотня там, 99, может 101... завтра наверно блитц-код дам. если тема будет востребована) то обнуляем номер.
А теперь - вминание! Для того, чтобы камера таким макаром следила за обжектом, помещаем её в точку с координатами:
сам_х=х(номер+1)
сам_у=у(номер+1)
сам_z=z(номер+1)
Или для трёхмерки:
PositionEntity cam,coordinats(номер+1,номер+1,номер+1)
Вот такой трактат (-:
Теперь я буду рад услышать ваши комментарии.
__________________
Public service announcement: вы можете заблокировать отображение сообщений определённого пользователя, добавив его ник в список игнорируемых.
Tau lab. We LOVE you. We MADE you.
|
(Offline)
|
|
22.05.2007, 01:44
|
#7
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Re: камера для гонок
имхо плохой вариант. годиться тока для старых машин, кторые дымились при вычислении sin/cos.
вопрос не стоял в том как сдеать ету камеру.
вопрпос стоял в том, как ето сделать в матрицах, если дан вектор машины.
а надо получить проекционную матрицу, если я правильно понял.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 00:13.
|