Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.136.154.103] |
|
Сообщ.
#1
,
|
|
|
Я пишу простой 3D движок без использования библиотек OpenGL и DirectX.
У меня возникло несколько вопросов касательно последовательности действий при отрисовки сцены. Пользуюсь методом растеризации треугольников, пока что сделал вывод 3d объектов, отсечение нелицевых граней и перекрываемых граней (хотя с ними некоторые проблемы, но это уже потом). Перевод из 3D координат в 2D использую следующую функцию (на синтаксис - не смотрите, это взято с AS): 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) Как устонавливать объект в текущую сцену в определенную позицию смещать его вершины в дополнительном массиве с помощью матриц, а потом выгружать в основной массив сцены? Прошу прощения за такие возможно глупые вопросы. Спасибо. |
Сообщ.
#2
,
|
|
|
Цитата kalexi @ 1) Очистка массива треугольников и вершин А зачем? Цитата kalexi @ 5) Преобразование массива вершин матрицей перспективной проекцией Ты как определяешь лицевые грани без применения проекционного преобразования? Советую по читать про видео конвейер к примеру тут Ф.Хилл OpenGL. Программирование компьютерной графики |
Сообщ.
#3
,
|
|
|
А чо у тебя формулы проекции такие замудренные? косинусы и синусы какие-то?
Вот же: x2d := x + d/z; y2d := y + d/z; где d - параметр влияющий на угол обзора камеры... Цитата kalexi @ 1) Очистка массива треугольников и вершин 2) Добавление данных в массив треугольников и массив вершин. тоже не понял, зачем? |