![]() |
Ответ: создание 3Д движка на j2me
Цитата:
Цитата:
|
Ответ: создание 3Д движка на j2me
Может и бред, но очищать не надо.
Где я вычисляю в процеси прорисовки? Я использую только 2д координаты треугольника. Из них найти расстояние пикселя не возможно. |
Ответ: создание 3Д движка на j2me
Цитата:
|
Ответ: создание 3Д движка на j2me
Хочеш сказать, что из 2д треугольника можно вычислить 3д координаты пикселя?
|
Ответ: создание 3Д движка на j2me
Цитата:
|
Ответ: создание 3Д движка на j2me
Положения вершин я вычисляю умножением на одну матрицу.
А vec это что? Вершина? |
Ответ: создание 3Д движка на j2me
Цитата:
Цитата:
Цитата:
|
Ответ: создание 3Д движка на j2me
Никаких библиотек. Вершину умножаю на одну матрицу. Зачем на несколько умножать?!
Я серьёзно vec это, что? А то не пойму смысла твоей формулы? |
Ответ: создание 3Д движка на j2me
А какой самый быстрый алгоритм рисования треугольника?
|
Ответ: создание 3Д движка на j2me
WISHMASTER35
ScreenVector = VertexPosition * WorldViewProjMatrix где WorldViewProjMatrix = WorldMatrix * ViewMatrix * ProjectionMatrix; в любом случае получается у тебя позиция вершины и три матрицы трансформации ScreenVector это вектор X,Y,Z где X и Y находятся от -1 до 1 (координаты на экране), а Z это глубина в данном пикселе экрана не высчитывать Z при этом невозможно, ты в любом случае будешь считать глубину |
Ответ: создание 3Д движка на j2me
Не знаете в этом http://compgraphics.info/2D/triangle_rasterization.php алгоритме нет ошибки? А то пытаюсь на яву переделать, а у меня нижняя часть полигона обрезанная http://upwap.ru/474120. Весь день промучался, всё равно не могу правельно сделать.
|
Ответ: создание 3Д движка на j2me
Всё. Нашол ошибку.
|
Ответ: создание 3Д движка на j2me
Помня в MascotCapsule одну фигуру можно было рендерить во многих местах. Как это делается в движке?
|
Ответ: создание 3Д движка на j2me
WISHMASTER35
несколько раз рендерить |
Ответ: создание 3Д движка на j2me
с разными матрицами...
|
Ответ: создание 3Д движка на j2me
Проблема в том, что в моём движке придётся создавать несколько Figure, a в маскоте одну Figure. Хотя там, есть FigureLayout который придётся не один создать, но как он работает я не пойму.
|
Ответ: создание 3Д движка на j2me
Цитата:
|
Ответ: создание 3Д движка на j2me
WISHMASTER35
есть mesh, а есть entity, тут как раз один меш и несколько ентити |
Ответ: создание 3Д движка на j2me
Где можно посмотреть алгоритмы текстурирования треугольник?
В гугле ничего не могу найти. |
Ответ: создание 3Д движка на j2me
При отрисовке каждого пикселя интерполируй тексурные координаты и делай выборку из текстуры...
|
Ответ: создание 3Д движка на j2me
Прмерно как это работает я и сам понимаю, но алгоритмов найти не могу.
Как я понял самое быстрое текстурирование - афинное? |
Ответ: создание 3Д движка на j2me
Нашол про аффиное текстурирование сдесь http://www.enlight.ru/faq3d/download/dd3dr2h.zip
Но я не пойму где там находятся v_start и dv_dsx ? Точнее они там вообще не находятся. Апечатка, чтоли. |
Ответ: создание 3Д движка на j2me
Тут глянь.
|
Ответ: создание 3Д движка на j2me
Все статьи про афинное текстурирование как одна.
И не очень понятна. Ну если dv_dsx как я понял находить так же как и du_dsx только поменять u на v, x на y. То как находить start_v там вообще не написанно. Догадываюсь, что оно равно a.u Если не правельно,то поправте. |
Ответ: создание 3Д движка на j2me
По такой статье проблематично, что-то написать. Примеров текстурирования никто не видел?
|
Ответ: создание 3Д движка на j2me
Вот http://upwap.ru/478150 кое-что получается.
Но текстура почему-то растягивается только по двум вершинам. Делал всё как в статье. Посмотрите, что там не правельно. П.с. Менять вершины 1 и 3. |
Ответ: создание 3Д движка на j2me
Забыл написать метод который рисует этот треугольник находится в классе полигон.
Всё переписал со статьи, но что-то не так. Если кто знает как правильно, то гляньте. |
Ответ: создание 3Д движка на j2me
Вот http://upwap.ru/482442 исправил ту ошибку. Но почему-то часто выходит за граници массива с текстурой.
Есть ли лучше алгоритм рисоваиния текстуры? Который не будет выходить за граници текстуры. |
Ответ: создание 3Д движка на j2me
Блин, я не пойму может эта не большая не точность норма?
Уже голову сломал с этой проблемой. |
Ответ: создание 3Д движка на j2me
Блин, ты когда-нибудь научишься все писать в одном посте?!
|
Ответ: создание 3Д движка на j2me
Я ж не один за другим посты пишу.
И изменять посты у меня с телефона не получается. |
Ответ: создание 3Д движка на j2me
А в аффинном текстурировании можно избавиться от пило-образного эфекта? Или в аффином методе нельзя избавиться от этого дефекта-
|
Ответ: создание 3Д движка на j2me
Вложений: 1
Избавился от пило-образного эфекта.
Но всёже алгоритм иногда выходит за границы массива-текстуры. |
Ответ: создание 3Д движка на j2me
Можете объяснить как сделать такое: Есть несколько 3д моделей, у каждой своя матрица. Как сделать, чтобы эти 3д модели при умнажении на матрицу камеры поворачивались не вокруг своей оси, а вокруг матрицы-камеры?
Для этого надо использовать формулу нахождения обратной матрицы или что? |
Ответ: создание 3Д движка на j2me
Да, инвертируешь матрицу вида и умножаешь её на матрицу объекта.
|
Ответ: создание 3Д движка на j2me
допустим есть матрица моего героя и мне надо смотреть из его глаз. Как мне его матрицу приобразовать в матрицу вида?
|
Ответ: создание 3Д движка на j2me
Пардон. А инвертируеш это как? Эт находить обратную?
|
Ответ: создание 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 |
Ответ: создание 3Д движка на j2me
Вот http://upwap.ru/515371 улучшил качество текстурирования и скорость. Но всё равно, если треугольник сжать в тонкую полоску, то много пикселей выходят за приделы текстуры. Как сделать, чтобы не выходили? Может нужна субпиксельная или тексельная точност?
|
Ответ: создание 3Д движка на j2me
Вот http://upwap.ru/520686 сделал, чтобы даже, если пиксель выйдет за массив текстуры, то с помощью "&" зашол обратно в предел массива.
Скажите как в opengl включить з-буфер? Т.е. Чтобы не видемые пикселы не рисовались. |
Ответ: создание 3Д движка на j2me
glEnable(GL_DEPTH_TEST)
|
Ответ: создание 3Д движка на j2me
Вложений: 5
Может немного не в тему, но тут на днях мне вспомнилась старенькая игрушка Stunts http://en.wikipedia.org/wiki/Stunts_(video_game)
Смысл в том, что ее движок построен на 3d полигонах _без текстурирования_ и частично спрайтах. И я думаю, что такой движок будет летать на мобильнике. Да и вообще игра сама по себе - можно сказать хит прошлых лет. Когда уже вышли NFS I и NQ Rally, многие по прежнему продолжали в нее рубать. Я с удовольствием бы сам занялся написанием подобного движка, но с 3d графикой никогда не работал, да и скилл не позволит наверное. Поэтому просто как говорится мысли вслух. Вдруг кого-то на идею натолкну? С позволения приложу к сообщению архив с игрой, благо всего 1 мб. У меня на Win XP запускаеться без проблемм, файл STUNTS.BAT |
Ответ: создание 3Д движка на j2me
Впервые увидел игру с не текстрированными полигонами.
А как правельно находить нормаль четырёхугольного полигона? У меня сейчас находится две нормали, а потом из них находится средняя. Может, есть специальная формула? |
Ответ: создание 3Д движка на j2me
|
Ответ: создание 3Д движка на j2me
Не пиши белым цветом. Я его ели заметил.
Скажи лучше, что по лучше. Сегодня пролистал тему и не нашол ответа на этот вопрос. |
Ответ: создание 3Д движка на j2me
Сделал версию 1.3
http://www.mcplayer.wen.ru/iceberg/iceberg.html Наконец-то сделал матрици на fixed point. |
Ответ: создание 3Д движка на j2me
А адаптировать данный движок под MidletPascal можно (сделать ввиде либы)?
|
Ответ: создание 3Д движка на j2me
Цитата:
|
Ответ: создание 3Д движка на j2me
В аффинном текстурировании U и V координаты в одномерном массиве(текстуре) изменяются на одно и тоже число. Но как не пытался обьеденить DU и DV (приращения для UиV) обьеденить в одно число ничего не получалось.
Кто нибудь знает это возможно сделать? И как? |
Ответ: создание 3Д движка на j2me
WISHMASTER35
ну на одно и тоже число только если стороны равны, или я что-то путаю ? |
Часовой пояс GMT +4, время: 04:11. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot