![](images/chestnut/misc/left.gif) |
19.07.2009, 21:45
|
#166
|
ПроЭктировщик
Регистрация: 10.01.2009
Адрес: хз
Сообщений: 177
Написано 18 полезных сообщений (для 44 пользователей)
|
Ответ: создание 3Д движка на j2me
Да..
__________________
Я бы изменил мир, но Бог не даёт исходников...
|
(Offline)
|
|
26.07.2009, 17:29
|
#167
|
Бывалый
Регистрация: 21.12.2008
Адрес: UA
Сообщений: 878
Написано 105 полезных сообщений (для 357 пользователей)
|
Ответ: создание 3Д движка на j2me
Что-то я так и не понял как работают entity.
Допустим, есть один меш и два ентити. Поворачиваем меш по первой матрице и робавляем его полигоны в массив. Потом поворачиваем тот же меш по второй матрице и добавляем теже полигоны в массив. И получается, что в массиве содержится по два каждых полигона повёрнутых по второй матрице. И получится, что два меша нарисуются не в разных местах, а в одном.
Видно в моёш движке это не реализовать.
Кстате, почему надо, чтобы текстуры были или 64*64, или 128*128, или 256*256?
|
(Offline)
|
|
27.07.2009, 20:48
|
#168
|
Бывалый
Регистрация: 21.12.2008
Адрес: UA
Сообщений: 878
Написано 105 полезных сообщений (для 357 пользователей)
|
Ответ: создание 3Д движка на j2me
-=Jack=-, ты ж понимаеш в opengl ? Можеш мне разьяснить кое-что?
Я смотрю пример opengl и не понимаю почему координаты вершин, текстурные и другие задаются в пределах от 0 до 1?
Я перенёс свой движок на javaSE и теперь хочю добавить в него текстурирование с помощью openGL.
Мне надо сделать рисование текстурированного полигона по его реальным координатам на экране и uv координатам в текстуре.
А эти координаты не от 0 до 1.
|
(Offline)
|
|
27.07.2009, 21:02
|
#169
|
|
Ответ: создание 3Д движка на j2me
WISHMASTER35
думаю всё дело в представлении float числа, от 0 до 1 в нём хранится больше чисел чем на всём остальном промежутке
хитрость с entity и mesh простая
mesh это набор вершин у которых координаты заданы в локальной системе модели (относительно её центра)
а entity это просто матрица которая трансформирует этот центр
ты не должен при изменении матрицы изменять координаты которые хранятся в меше
просто при каждом кадре рисования ты должен заного умножать все вершины меша на матрицу entity и получать глобальные координаты вершин
и вот уже их рисовать, а не сохранять в масив
|
|
|
27.07.2009, 21:58
|
#170
|
Бывалый
Регистрация: 21.12.2008
Адрес: UA
Сообщений: 878
Написано 105 полезных сообщений (для 357 пользователей)
|
Ответ: создание 3Д движка на j2me
Я понимаю, что в float можно много чисел засунуть, но я не пойму вот чего:
В моём движке что бы нарисовать полигон с координатами х50 и у50 я его и рисую с этими координатами. А когда координаты задаются float, то как мне нарисовать полигон в координатах х50 и у50?
|
(Offline)
|
|
27.07.2009, 22:33
|
#171
|
|
Ответ: создание 3Д движка на j2me
WISHMASTER35
всё зависит от матрицы проекции, расположения камеры и формы полигона
такая задача называется рисование тексель в пиксель
если задать ортографическую проекцию с размерами в viewport, камеру в 0,1,0 смотрящую в 0,0,0, то можно рисовать тексель в пиксель в плоскости XZ, тогда у тебя координаты будут 40.0f,0,40.0f и это превратится в 40,40 на экране
так что не всё так просто как тебе кажется
|
|
|
27.07.2009, 23:39
|
#172
|
Бывалый
Регистрация: 21.12.2008
Адрес: UA
Сообщений: 878
Написано 105 полезных сообщений (для 357 пользователей)
|
Ответ: создание 3Д движка на j2me
Я хочю для полигона задовать координаты вершин только двумя координатами: Х и Y т.е. gl.glVertex2f(x, y); думаю в током случае матрица, форма полигона и камера не на что не повлияют.
Так каким методом сделать, чтобы при gl.glVertex2f(50, 50); и на экране были эти х50 и у50 ?
Нету ли примера такого текстурирования или просто рисования полигона? Желательно для jogl.
|
(Offline)
|
|
28.07.2009, 00:26
|
#173
|
|
Ответ: создание 3Д движка на j2me
WISHMASTER35
а ты не думал что glVertex2f(x,y) это тоже самое что glVertex3f(x,y,0) ?
в любом случае прийдется настраивать ортографическую матрицу проекции и правильно ставить камеру
|
|
|
28.07.2009, 11:29
|
#174
|
Бывалый
Регистрация: 21.12.2008
Адрес: UA
Сообщений: 878
Написано 105 полезных сообщений (для 357 пользователей)
|
Ответ: создание 3Д движка на j2me
Не пойму зачем писать glVertex3f(x,y,0), если можно glVertex2f(x,y).
Можеш написать как повернуть матрицу и камеру в нужную мне плоскость.
Хотя не понимаю как на это влияет поворот камеры вниз.
Может лучше будет разделить мои координаты на какое-то число, чтобы они тоже стали от 0 до 1?
|
(Offline)
|
|
28.07.2009, 13:41
|
#175
|
Бывалый
Регистрация: 21.12.2008
Адрес: UA
Сообщений: 878
Написано 105 полезных сообщений (для 357 пользователей)
|
Ответ: создание 3Д движка на j2me
Нашол один урок http://pmg.org.ru/nehe/nehe17.htm
Там рисуется именно так как мне и нужно.
Вот нужный мне метод glVerter2i(int x, int y); а я раньше думал, что значит f, а это оказывается был тип. Мне надо не f, a i.
Надеюсь я правельно понял.
|
(Offline)
|
|
28.07.2009, 15:02
|
#176
|
|
Ответ: создание 3Д движка на j2me
WISHMASTER35
glVertex2f и glVerter2i отличаются только какие типы параметров они принимают, для рендера никакого отличия
в 17 примере nehe тоже идет работа с матрицами, не знаю чем ты смотришь
glMatrixMode(GL_PROJECTION); // Выбираем матрицу проекции
glPushMatrix(); // Сохраняем матрицу проекции
glLoadIdentity(); // Сбрасываем матрицу проекции
glOrtho(0,640,0,480,-1,1); // Устанавливаем плоский экран
...
glMatrixMode(GL_MODELVIEW); // Выбираем матрицу модели просмотра
glPushMatrix(); // Сохраняем матрицу модели просмотра
glLoadIdentity(); // Сбрасываем матрицу модели просмотра
glTranslated(x,y,0); // Позиция текста (0,0 - Нижняя левая)
|
как видишь - матрица проекции как я и говорил, матрица камеры - единичная, матрица модели - со смещением текста
просто в OpenGL матрицу камеры и матрицу модели обьеденили в одну, в прочем работу с матрицами вырезали из OpenGL 3.x ![:)](images/smilies/smile.gif)
|
|
|
28.07.2009, 16:20
|
#177
|
Бывалый
Регистрация: 21.12.2008
Адрес: UA
Сообщений: 878
Написано 105 полезных сообщений (для 357 пользователей)
|
Ответ: создание 3Д движка на j2me
Теоретически я могу и своей матрицей также повернуть вершины и рисовать уже полигон с повёрнутой вершиной.
Если я так glVertex2f(1f, 1f); задам координаты, то на экране точка где будет?
Нету ли статьи где бы это объяснялось?
|
(Offline)
|
|
28.07.2009, 16:45
|
#178
|
|
Ответ: создание 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д поверх в ортографической проекции
|
|
|
28.07.2009, 18:01
|
#179
|
Бывалый
Регистрация: 21.12.2008
Адрес: UA
Сообщений: 878
Написано 105 полезных сообщений (для 357 пользователей)
|
Ответ: создание 3Д движка на j2me
Короче ты мне предложил находить 2д проекции вершин для системы координат opengl(т.е. от -1 до 1), а не моей. Я уже тоже думал, что это будет проще всего.
Наткнулся на этот форум http://forum.vingrad.ru/act-ST/f-95/t-170504.html там написано, что можно просто установить перспективную проекцию.
|
(Offline)
|
|
28.07.2009, 18:14
|
#180
|
|
Ответ: создание 3Д движка на j2me
WISHMASTER35
ну можно рисовать и в перспективной в Near Plane
|
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 07:04.
|