На главную Наши проекты:
Журнал   ·   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
  
> Пишу 3D движок без использования библиотек OGL и DX. , Несколько вопросов по работе.
    Я пишу простой 3D движок без использования библиотек OpenGL и DirectX.
    У меня возникло несколько вопросов касательно последовательности действий при отрисовки сцены.
    Пользуюсь методом растеризации треугольников, пока что сделал вывод 3d объектов, отсечение нелицевых граней и перекрываемых граней (хотя с ними некоторые проблемы, но это уже потом). Перевод из 3D координат в 2D использую следующую функцию (на синтаксис - не смотрите, это взято с AS):
    ExpandedWrap disabled
      function get2d(x,y,z)
      begin
          var rz = (xmouse-width/2) * PI/180;
          var rx = (ymouse-height/2) * PI/180;
          var tx, ty, tz;
       
          tx = cos(rz)*y - sin(rz)*x;
          ty = sin(rz)*y + cos(rz)*x;
          x = tx;
          y = ty;
       
          ty = cos(rx)*y - sin(rx)*-z;
          tz = sin(rx)*y + cos(rx)*-z;
          y = ty;
          z = tz;
          
          return {x:x,y:z,dis:y};
      end;


    Какую правильную последовательность действий выбрать (допоните или исправте если что-то не так):
    1) Очистка массива треугольников и вершин
    2) Добавление данных в массив треугольников и массив вершин.
    3) Удаление из массива не лицевых граней
    4) Удаление из массива перекрываемых граней
    5) Преобразование массива вершин матрицей перспективной проекцией
    6) Рисование всех оставшихся треугольников


    Несколько вопросов:
    1) Преобразования матрицей перспективной проекции происходит отдельно от других преобразований или она добавляется к всем остальным матрицам перед преобразованием?
    2) Как лучше загружать объекты? Вначале в дополнительный массив, а потом в сцену?
    3) Как устонавливать объект в текущую сцену в определенную позицию смещать его вершины в дополнительном массиве с помощью матриц, а потом выгружать в основной массив сцены?


    Прошу прощения за такие возможно глупые вопросы. Спасибо.
      Цитата kalexi @
      1) Очистка массива треугольников и вершин

      А зачем?
      Цитата kalexi @
      5) Преобразование массива вершин матрицей перспективной проекцией

      Ты как определяешь лицевые грани без применения проекционного преобразования?

      Советую по читать про видео конвейер к примеру тут Ф.Хилл OpenGL. Программирование компьютерной графики
        А чо у тебя формулы проекции такие замудренные? косинусы и синусы какие-то? :o

        Вот же:

        ExpandedWrap disabled
          x2d := x + d/z;
          y2d := y + d/z;


        где d - параметр влияющий на угол обзора камеры...


        Цитата kalexi @
        1) Очистка массива треугольников и вершин
        2) Добавление данных в массив треугольников и массив вершин.


        тоже не понял, зачем?
        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script execution time: 0,0194 ]   [ 15 queries used ]   [ Generated: 24.04.24, 10:53 GMT ]