На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела "Программирование графики"
1) Данный раздел предназначен для обсуждения проблем, возникающих при программировании задач, связанных с чтением, сохранением, обработкой, созданием, отрисовкой графической информации (в том числе - 3D [OpenGL, Direct3D] и анимации [в т.ч. VFW, DirectShow, OpenDML]).
Флэш обсуждают здесь!.

2) Если вы хотите получить совет для конкретной платформы/языка программирования, обязательно укажите их в вопросе.

3) Уважаемые новички! Мы приветствуем Ваше желание научить всех посетителей раздела правильному программированию. Но огромная просьба, перед тем, как писать поучения в старых (последний ответ - "старее" месяца, а особенно, если вопрошавший не появляется на форуме уже не первый месяц, в чем можно убедиться в его профиле) темах, хорошо подумать, будет ли кому-нибудь, кроме Вас cамих, это интересно.



Ваше мнение о модераторах: user posted imageBarazuk, user posted imageOpenGL, user posted imageMikle
Модераторы: OpenGL, Mikle
  
> OpenGL и LookAt
    Хай ол.

    Извините за тупой вопрос, но походу из головы у меня уже все геометрия выветрилась.

    В общем (поправьте если ошибаюсь) в OpenGL система координат левосторонняя, по соглашению ось Z смотрит вперед, X - влево, Y - вверх. Так почему когда рассчитывается видовая матрица через LookAt direction = (center - eye) инвертируется? То есть записывается с -directiuon? хотя up и side вектора рассчитываются с прямым direction?
      Цитата XandoX @
      В общем (поправьте если ошибаюсь) в OpenGL система координат левосторонняя, по соглашению ось Z смотрит вперед, X - влево, Y - вверх.

      Как захочешь - так и будет.
      Цитата XandoX @
      Так почему когда рассчитывается видовая матрица через LookAt direction = (center - eye) инвертируется? То есть записывается с -directiuon? хотя up и side вектора рассчитываются с прямым direction?

      Направление взгляда eye - center. Хотя я вообще слабо понял, о чем ты :)
        Цитата OpenGL @
        Хотя я вообще слабо понял, о чем ты :)

        попробую на пальцах :)

        на картинке для камеры применялся lookAt(center={0, 0, 0}, eye={10, 10, 10}, up={0, 1, 0})
        для маленькой системы координат inverse(lookAt(center={0, 0, 0}, eye={5, 0, 5}, up={0, 1, 0})
        для большой ничего
        ос X - red, Y = green, Z = blue
        вот - по моим ощущениям для маленькой системы координат оси X и Z должны смотреть в обратные стороны, то есть Z - должна быть направленна в 0. Но почему-то не так. Вот это и смущает.

        Прикреплённая картинка
        Прикреплённая картинка


        Добавлено
        Цитата XandoX @
        inverse(lookAt(center={0, 0, 0}, eye={5, 0, 5}, up={0, 1, 0})

        inverse тут нужен, потому что lookAt выдает видовую матрицу.

        Добавлено
        матрица проекции задается через perspective(60, aspect, 0.1, 20);

        Добавлено
        в общем экспериметальным путем выяснил, что все таки камера в OpenGL по умолчанию смотрит вдоль -Z (ну то есть в минус бесконечность она смотрит), и реализация lookAt заточена под это.
        1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script execution time: 0,0506 ]   [ 16 queries used ]   [ Generated: 18.05.24, 08:48 GMT ]