![]() |
Ответ: создание 3Д движка на j2me
Да..
|
Ответ: создание 3Д движка на j2me
Что-то я так и не понял как работают entity.
Допустим, есть один меш и два ентити. Поворачиваем меш по первой матрице и робавляем его полигоны в массив. Потом поворачиваем тот же меш по второй матрице и добавляем теже полигоны в массив. И получается, что в массиве содержится по два каждых полигона повёрнутых по второй матрице. И получится, что два меша нарисуются не в разных местах, а в одном. Видно в моёш движке это не реализовать. Кстате, почему надо, чтобы текстуры были или 64*64, или 128*128, или 256*256? |
Ответ: создание 3Д движка на j2me
-=Jack=-, ты ж понимаеш в opengl ? Можеш мне разьяснить кое-что?
Я смотрю пример opengl и не понимаю почему координаты вершин, текстурные и другие задаются в пределах от 0 до 1? Я перенёс свой движок на javaSE и теперь хочю добавить в него текстурирование с помощью openGL. Мне надо сделать рисование текстурированного полигона по его реальным координатам на экране и uv координатам в текстуре. А эти координаты не от 0 до 1. |
Ответ: создание 3Д движка на j2me
WISHMASTER35
думаю всё дело в представлении float числа, от 0 до 1 в нём хранится больше чисел чем на всём остальном промежутке хитрость с entity и mesh простая mesh это набор вершин у которых координаты заданы в локальной системе модели (относительно её центра) а entity это просто матрица которая трансформирует этот центр ты не должен при изменении матрицы изменять координаты которые хранятся в меше просто при каждом кадре рисования ты должен заного умножать все вершины меша на матрицу entity и получать глобальные координаты вершин и вот уже их рисовать, а не сохранять в масив |
Ответ: создание 3Д движка на j2me
Я понимаю, что в float можно много чисел засунуть, но я не пойму вот чего:
В моём движке что бы нарисовать полигон с координатами х50 и у50 я его и рисую с этими координатами. А когда координаты задаются float, то как мне нарисовать полигон в координатах х50 и у50? |
Ответ: создание 3Д движка на j2me
WISHMASTER35
всё зависит от матрицы проекции, расположения камеры и формы полигона такая задача называется рисование тексель в пиксель если задать ортографическую проекцию с размерами в viewport, камеру в 0,1,0 смотрящую в 0,0,0, то можно рисовать тексель в пиксель в плоскости XZ, тогда у тебя координаты будут 40.0f,0,40.0f и это превратится в 40,40 на экране так что не всё так просто как тебе кажется |
Ответ: создание 3Д движка на j2me
Я хочю для полигона задовать координаты вершин только двумя координатами: Х и Y т.е. gl.glVertex2f(x, y); думаю в током случае матрица, форма полигона и камера не на что не повлияют.
Так каким методом сделать, чтобы при gl.glVertex2f(50, 50); и на экране были эти х50 и у50 ? Нету ли примера такого текстурирования или просто рисования полигона? Желательно для jogl. |
Ответ: создание 3Д движка на j2me
WISHMASTER35
а ты не думал что glVertex2f(x,y) это тоже самое что glVertex3f(x,y,0) ? в любом случае прийдется настраивать ортографическую матрицу проекции и правильно ставить камеру |
Ответ: создание 3Д движка на j2me
Не пойму зачем писать glVertex3f(x,y,0), если можно glVertex2f(x,y).
Можеш написать как повернуть матрицу и камеру в нужную мне плоскость. Хотя не понимаю как на это влияет поворот камеры вниз. Может лучше будет разделить мои координаты на какое-то число, чтобы они тоже стали от 0 до 1? |
Ответ: создание 3Д движка на j2me
Нашол один урок http://pmg.org.ru/nehe/nehe17.htm
Там рисуется именно так как мне и нужно. Вот нужный мне метод glVerter2i(int x, int y); а я раньше думал, что значит f, а это оказывается был тип. Мне надо не f, a i. Надеюсь я правельно понял. |
Ответ: создание 3Д движка на j2me
WISHMASTER35
glVertex2f и glVerter2i отличаются только какие типы параметров они принимают, для рендера никакого отличия в 17 примере nehe тоже идет работа с матрицами, не знаю чем ты смотришь Цитата:
просто в OpenGL матрицу камеры и матрицу модели обьеденили в одну, в прочем работу с матрицами вырезали из OpenGL 3.x :) |
Ответ: создание 3Д движка на j2me
Теоретически я могу и своей матрицей также повернуть вершины и рисовать уже полигон с повёрнутой вершиной.
Если я так glVertex2f(1f, 1f); задам координаты, то на экране точка где будет? Нету ли статьи где бы это объяснялось? |
Ответ: создание 3Д движка на j2me
WISHMASTER35
обьясняется оно тут http://www.glprogramming.com/red/chapter03.html ![]() 1) glVertex2f(1f, 1f); это вектор 1,1,0,1 2) множим вектор на ModelView матрицу получаем вектор в системе координат камеры 3) множим вектор на Projection матрицу получаем 4-мерный вектор x,y,z,w в гомогенной системе координат 4) делаем перспективное деление получаем 3-мерный вектор в viewport координатах (от -1 до 1 по X,Y) 5) делаем viewport преобразования получаем координаты пикселят в экранных координатах так что если ты хочешь совместить 3д и 2д то сначала рисуй 3д в перспективной проекции а потом 2д поверх в ортографической проекции |
Ответ: создание 3Д движка на j2me
Короче ты мне предложил находить 2д проекции вершин для системы координат opengl(т.е. от -1 до 1), а не моей. Я уже тоже думал, что это будет проще всего.
Наткнулся на этот форум http://forum.vingrad.ru/act-ST/f-95/t-170504.html там написано, что можно просто установить перспективную проекцию. |
Ответ: создание 3Д движка на j2me
WISHMASTER35
ну можно рисовать и в перспективной в Near Plane |
Часовой пояс GMT +4, время: 14:42. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot