![]() |
Модераторы: Rickert |
![]() ![]() ![]() |
|
Kero |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 173 Регистрация: 10.5.2006 Где: Винница,Украина | | Реал Репутация: нет Всего: 1 |
Привет!
1. Есть точка x y z 2. Есть матрица проекции Matrix3D которая состоит из матрицы камеры, перспективы и трансляции, тоесть матрица готовая к проектированию 3. Это всё работает в сильверлайте поэтому прошу всякие методы с directx не предлагать Вобщем вопрос: Имея п.2 и п1. как определить являеться ли точка видимой для камеры? |
|||
|
||||
Rpahut |
|
|||
![]() 0xdeadbeef ![]() Профиль Группа: Участник Сообщений: 243 Регистрация: 9.4.2006 Репутация: 5 Всего: 7 |
Если применить матрицу проекции к точке, получатся координаты проекции точки на экран. Так оно в принципе все и работает. Останется только проверить, попадает ли точка в собственно экран или нет.
Реально ИМХО быстрее посчитать угол между вектором направления камеры и вектором камера->точка. --------------------
C/C++ GameDevRSS Раздела программирования игрOpenGL - уроки от NeHeКак продать идею? |
|||
|
||||
Kero |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 173 Регистрация: 10.5.2006 Где: Винница,Украина | | Реал Репутация: нет Всего: 1 |
Да. Угол посчитать действительно проще
![]() Но остаёться непонятным как анализируя угол между векторами направления и точки определить входит ли точка в видимый диапазон или нет. Это сообщение отредактировал(а) Kero - 28.4.2010, 16:18 |
|||
|
||||
Rpahut |
|
|||
![]() 0xdeadbeef ![]() Профиль Группа: Участник Сообщений: 243 Регистрация: 9.4.2006 Репутация: 5 Всего: 7 |
Ну...
Если посчитанный угол больше угла обзора камеры, точка не видна. --------------------
C/C++ GameDevRSS Раздела программирования игрOpenGL - уроки от NeHeКак продать идею? |
|||
|
||||
Kero |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 173 Регистрация: 10.5.2006 Где: Винница,Украина | | Реал Репутация: нет Всего: 1 |
А как посчитать угол обзора камеры?
|
|||
|
||||
Rpahut |
|
|||
![]() 0xdeadbeef ![]() Профиль Группа: Участник Сообщений: 243 Регистрация: 9.4.2006 Репутация: 5 Всего: 7 |
Угол обзора выбирается программистом, параметры камеры/матрицы проекции задаются исходя из желаемого угла обзора. Т.е. угол этот по идее известен заранее. Ну, там может быть два угла обзора - по вертикали и по горизонтали, использовать нужно бо'льший из них, обычно это угол обзора по горизонтали. А еще лучше посчитать угол "по диагонали" - корень_из(угол_по_Х_вквадрате + угол_по_Y_вквадрате).
Не знаю как в силверлайте устанавливаются параметры камеры, но "истина где-то там". --------------------
C/C++ GameDevRSS Раздела программирования игрOpenGL - уроки от NeHeКак продать идею? |
|||
|
||||
Kero |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 173 Регистрация: 10.5.2006 Где: Винница,Украина | | Реал Репутация: нет Всего: 1 |
В сильверлайте никак не устанавливаються... Мне пришлось писать класс камеры самому. Как и классы простейших обьектов... Сделал так как ты порекомендовал: *А еще лучше посчитать угол "по диагонали" - корень_из(угол_по_Х_вквадрате + угол_по_Y_вквадрате). Проблема в том что когда точка уходит за верхний или нижний край экрана обьект всё ещё видим некоторое время. Каким образом посчитать горизонтальный и вертикальный углы чтобы более точно определить видимость? |
|||
|
||||
Rpahut |
|
|||
![]() 0xdeadbeef ![]() Профиль Группа: Участник Сообщений: 243 Регистрация: 9.4.2006 Репутация: 5 Всего: 7 |
Точный способ - проецирование точки на экран (см. выше). Можно добавить эту проверку после первой, чтобы применять не к каждой точке.
Вот тут код построения матрицы проекции из параметров камеры. Можно вычислить углы из матрицы, но лучше иметь их сразу. --------------------
C/C++ GameDevRSS Раздела программирования игрOpenGL - уроки от NeHeКак продать идею? |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Программирование игр, графики и искуственного интеллекта" | |
|
НА ЗЛОБУ ДНЯ: Дорогие посетители, прошу обратить внимание что новые темы касающиеся новых вопросов создаются кнопкой "Новая тема" а не "Ответить"! Любые оффтопиковые вопросы, заданные в текущих тематических темах будут удалены а их авторы, при рецедиве, забанены.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rickert. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Программирование игр, графики и искусственного интеллекта | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |