Модераторы: Rickert, Alexeis, BorisVorontsov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> построение сцены с подвижным наблюдателем 
:(
    Опции темы
PRF
Дата 9.5.2009, 21:56 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 135
Регистрация: 13.10.2007

Репутация: нет
Всего: нет



здравствуйте, я делаю подвижного наблюдателя и возникли проблемы. 
Существуют точки объекта, мировая система координат, система координат наблюдателя и фокусное расстояние для центрального проецирования. 
Наблюдатель находить на оси z СКН на фокусном расстоянии я так понимаю. 
Допустим СКН мы расположили , центр, в таких точках относительно МСК , (100, 30, 300)

Я хочу сделать перемещение вперед, что мне надо сделать? если увеливать z, ну центр СКН увеличивать по оси Z (100, 30, 301) , то получается какой то бред, ведь фокусное расстояние остается таким же.. 

как это вообще делать.. не понимаю
PM MAIL   Вверх
NightmareZ
Дата 9.5.2009, 22:39 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


[хакер]
**


Профиль
Группа: Участник
Сообщений: 699
Регистрация: 10.8.2006

Репутация: нет
Всего: 13



Шоза "фокусное расстояние"? 


--------------------
NightmareZ.net - мой блог и сайт, мои проекты и прочий трэш
Ely-Art.ru - наша маленькая домашняя арт-студия
mugcraft.ru - кружки на любой вкус
PM WWW ICQ Skype GTalk AOL YIM   Вверх
C/L
Дата 15.5.2009, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 107
Регистрация: 31.7.2004
Где: Самара

Репутация: нет
Всего: 1



При перспективном (центральном) проецировании есть точка где сходятся все проекционные лучи. С точки зрения оптики ее расстояние до плоскости проекции можно конечно назвать фокусным расстоянием. Но при чем здесь это? Надо разделять матрицу проецирования и матрицу вида, а еще и матрицу обьекта. Матрица объекта - чтобы двигать объект, матрица вида - чтобы двигать наблюдателя, матрица проекции - чтобы потом все это спроецировать на плоскость проекции. Сначала формируем одну потом другую потом третью и только потом перемножаем их и получаем конечную матрицу с которой можно работать. Формула получается такая:
v2 = W*V*P*v1
W - матрица объекта
V - матрица вида (наблюдателя)
P - матрица проекции
v1 - исходная точка (вектор)
v2 - спроецированная точка (вектор)
Все это подробно расписывается в книгах по DirectX.

Это сообщение отредактировал(а) C/L - 15.5.2009, 14:27
PM MAIL WWW ICQ   Вверх
PRF
Дата 15.5.2009, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 135
Регистрация: 13.10.2007

Репутация: нет
Всего: нет



Ага. знаю, только все передвижения и все это , я реализую не directx. Directx у меня только для отрисовки используется. Но спасибо
PM MAIL   Вверх
C/L
Дата 16.5.2009, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 107
Регистрация: 31.7.2004
Где: Самара

Репутация: нет
Всего: 1



Ну это не создатели DirectX придумали. Думаю все было известно и до них. Это простая математика матричных и векторных преобразований. Конечно для простого движения наблюдателя назад или вперед можно вывести простую формулу. Но тогда для движения по каждой оси нужна будет отдельная формула. А ведь еще есть повороты тоже для каждой оси. А еще масштабирование - например если наблюдатель решил посмотреть в бинокль. А если есть какой нибудь объект из миллиона точек и нужно передвигать его в каждом кадре? А тут хоть и вычисление с матрицами, но зато одна простая формула на все случаи. Всего 2 действия: вычислить результирующую матрицу и произвести умножение на нее всех точек.
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Вы можете найти полезным что...
Alexeis
Rickert
  • Английская документация по DirectX лежит где-то здесь.
  • Английская документация по OpenGL лежит где-то там.
  • Гейм-дев у нас обсуждают где-то тут

Ждём вас! С уважением, Alexeis, Rickert.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема »


 




[ Время генерации скрипта: 0.0736 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.