Конференция "Игры" » Проблемы при освоении OpenGL. Подскажите решение. [Delphi, Windows]
 
  • @!!ex_ (06.06.07 14:25) [20]
    > Господа моё высшее образование не позволяет верить выводам
    > которые опровергаются простейшими примерами.
    >
    > Итак рисуем кубик его грани паралельны осям.
    > Система координат стандартная x,y в плоскости координат
    > z уходит в экран
    >
    > На передней грани нарисована стрелочка вверх.
    > Как с помощью двух поворотов вокруг осей X и Y получить
    > кубик у которого средлочка на передней грани повёрнута влево
    > или вправо.
    >
    > Я например не смог подобрать такие углы. Обязательно нужен
    > третий поворот.

    Блин. Я ща матом ругатся буду. У вас же мой пример есть!!!! Он это позволяет без проблем реализовать.
    Вот скрин. Без изенения кода. Просто повращал мышкой. Три позиции сделал. ЗАказывайте, как угодно повращаю.

    Я обещал не докапываться по поводу вышки...Я обещал не докапываться по поводу вышки...Я обещал не докапываться по поводу вышки...Я обещал не докапываться по поводу вышки...Я обещал не докапываться по поводу вышки...Я обещал не докапываться по поводу вышки...Я обещал не докапываться по поводу вышки...Я обещал не докапываться по поводу вышки...Я обещал не докапываться по поводу вышки...Я обещал не докапываться по поводу вышки...Я обещал не докапываться по поводу вышки...



    > glRotate это умножение той матрицы что у нас была на матрицу
    > поворота. Вот оно и умножение. Соответственно если я сам
    > где то храню матрицу поворота то я её должен умножить с
    > помощью glMultMatrix

    Не поверишь. За 2 года работы сграфиков и два десятка проектов ни разу не пользовался glMultMatrix.
    ЗАЧЕМ???
    Зачем тебе хранить матрицу? Формируй ее каждый кадр, просто перемещай, вращай, маштабируй и все. Ниче не надо хранить. ИМХО.


    > Я даже спорить не буду :) Но от себя добавлю что и OpenGL
    > и GLU реализованы одинаково програмно. Только одна обращается
    > к карточке на прямую а вторая через OpenGL. Так что разница
    > чисто условна.

    Гы. ЛОЛ. Windows и Linux - одно и тоже. Просто одно придумал Вильям Гейтс 3, а другое Линус Торвальдс.
    Разница чисто условна.
  • @!!ex_ (06.06.07 14:29) [21]
    Чорт. Скрин забыл прикрутить, ждал пока зальется на сайт и автоматом кинул пост, когда дописал. :)
    Вот скрин.
    http://afera-net.narod.ru/rotate.JPG
  • MegaVolt © (06.06.07 14:38) [22]
    >Блин. Я ща матом ругатся буду. У вас же мой пример есть!!!! Он это
    >позволяет без проблем реализовать.
    >Вот скрин. Без изенения кода. Просто повращал мышкой. Три позиции
    >сделал. ЗАказывайте, как угодно повращаю.

    Три позиции в вашем примере это 6 вызовов glRotate минимум.
    Вы же утверждали что можно за счёт двух.

    Итак в вашем примере добавте стрелочку и поробуйте в FormResize подобрать два угла поврота которые дадут указвнный мною эффект. Цифры в студию. Жду.

    >Зачем тебе хранить матрицу? Формируй ее каждый кадр, просто перемещай, вращай, маштабируй и все. Ниче не надо хранить.

    Возможно. Давай вначале разберёмся с поворотами а потом займёмся ватрицами.

    >Гы. ЛОЛ. Windows и Linux - одно и тоже.
    >Разница чисто условна.

    Я вроде не сравнивал DirectX и OpenGL это раз.
    А во вторых речь шла про то где выполняется.

    Т.е. нечто написанное на WinApi и с помощью некой надстройки в которой спрятаны по несколько вызовов WinApi принципиально неотличаются :)
    Хотя вопрос спорный и не принципиальный.
  • @!!ex_ (06.06.07 14:53) [23]
    > Три позиции в вашем примере это 6 вызовов glRotate минимум.
    > Вы же утверждали что можно за счёт двух.
    >
    > Итак в вашем примере добавте стрелочку и поробуйте в FormResize
    > подобрать два угла поврота которые дадут указвнный мною
    > эффект. Цифры в студию. Жду.

    Речь шла о количестве осей. Не стоит придиратся к словам. ;)


    > Я вроде не сравнивал DirectX и OpenGL это раз.
    > А во вторых речь шла про то где выполняется.

    Я тоже. чессслово. :))
    Вот о том и речь. Все функции OpenGL выполняются видеокартой.
    Glu и Glut выполняются на проце.

    Ну это тоже самое, что говорить, что некий модуль написанный с помощью STL не отличается от STL и тоже явкляется частью STL. :)))
  • MegaVolt © (06.06.07 15:53) [24]
    >Речь шла о количестве осей. Не стоит придиратся к словам. ;)

    Ну тогда расскажи как мне после наццати поворотов по двум осям определить в какое положение мне нужно повернуть кубик? Только запоминая последовательно все повороты. Можно хратить сами углы и последовательность их выхова а можно хранить одну матрицу повторота которая будет после каждого поворота модифицироватся.

    Следовательно и возникает необходимость умножать на эту матрицу попворота хранящуюся где то. Или в стеке OpenGL или у меня в проге.
  • MegaVolt © (06.06.07 16:44) [25]
    У тебя например сейчас при изменении размеров формы все повороты сбрасываются :( Как этого избежать?
  • Rial © (06.06.07 18:11) [26]
    > [24] MegaVolt ©   (06.06.07 15:53)

    Я говорил про вектор. В пространстве вектор заданной
    длины "закрепляют" 5 параметров. В нашем случае
    координаты начала и 2 угла поворота.
    Объемное тело "закрепляют" 6 параметров, т.е.
    потребудется действительно 3 поворота.

    Тем не менее, абсолютно любой поворот можно осуществить
    только за счет 2х, заранее не известных осей.
    В таком случае 6м параметром выступает как раз
    выбор нужных осей. Т.е. по сути, поворот по 3й
    оси определен: он равен нулю.

    Понаписал я... просто немного не так друг друга поняли.
    Посему правы обе стороны. :)


    > У тебя например сейчас при изменении размеров формы все
    > повороты сбрасываются :( Как этого избежать?

    Запоминать эти повороты. :)

    Вообще, твой способ тоже будет работать.
    Математический подход... почему бы и нет ?
    Инициализируй свою марицу, по очереди делай с ней все пробразования,
    а перед отрисовкой домножай не нее текущую.
    Овчинка стоит выделки, если этих поворотов действительно много,
    иначе мало что выиграешь хоть в объеме памяти, хоть в скорости.
  • Yashin © (09.06.07 12:37) [27]
    Вот
    http://ifolder.ru/2288425
    >Плоские полигоны" - хм ?..
    >А вообще рекомендую карточке "подсовывать" исключетильно треугольники,
    >таким образом ты получишь наилучшее быстродействие.
    Лучшее быстродействие можно получить, если подсовывать цепь треугольников (Stripes). Ускорение до трех раз.
  • @!!ex_ (09.06.07 13:12) [28]
    > [27] Yashin ©   (09.06.07 12:37)

    Это уже частные случаи. :)
    Если еще юзать VBO, Индексацию и т.д.
    Кстати, как можно по модели не индексированной построить индексированную?
    Есть простые алгоритмы? Тупое сравнение всех вершин?
  • Sapersky (09.06.07 18:45) [29]
    GLScene -> MeshUtils.pas
  • MegaVolt © (11.06.07 15:22) [30]
    Rial
    >Запоминать эти повороты. :)

    Т.е. всю последовательность поворотов где то хранить? Впринципе конечно памяти это сожрёт немного но хотелось бы покрасивее. :)

    >Вообще, твой способ тоже будет работать.

    Можно ли его реализовать как то альтернативно без вычитывания матрицы?

    Yashin
    >Вот http://ifolder.ru/2288425

    Просит glut32.dll :(
    Я такой dll-ки ненахожу :( Выложи её если не сложно.
  • @!!ex_ (11.06.07 16:34) [31]
    > glut32.dll

    Гугль наше все. Это стандартная библиотека.
  • Yashin © (11.06.07 16:36) [32]
    Странно у меня не просит, и вообще на диске с Виндой такого файла нет
    http://ifolder.ru/2311897
  • MegaVolt © (11.06.07 16:53) [33]
    Yashin спасибо. Это как раз такое вращение как мне нужно. Буду разбиратся. Но судя по всему ты делаешь то что хотел сделать я только умножение делаешь сам а не запрягаешь под это дело карточку.

    Гугль я действительно не спросил :( Я пошукал в нашей локалке на 2 милиона файлов и не нашел ничего похожего поэтому и решил что библиотека какая то специальная.
  • Yashin © (12.06.07 22:03) [34]
    Да я и сам не смотрел как это делается, пример нашел у себя в архиве, вроде он с delphi3d.net
 
Конференция "Игры" » Проблемы при освоении OpenGL. Подскажите решение. [Delphi, Windows]
Есть новые Нет новых   [119213   +30][b:0][p:0.001]