forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Проекты на JavaME (http://forum.boolean.name/forumdisplay.php?f=114)
-   -   создание 3Д движка на j2me (http://forum.boolean.name/showthread.php?t=8365)

-=Jack=- 28.06.2009 12:38

Ответ: создание 3Д движка на j2me
 
Цитата:

Сообщение от WISHMASTER35 (Сообщение 109294)
A без очистки з-буфера можно как-то обойтись?

Нет.

WISHMASTER35 28.06.2009 17:10

Ответ: создание 3Д движка на j2me
 
Сдесь http://ru.wikipedia.org/wiki/Z-буферизация написано, что чтобы не заполнять буфер каким-то числом часто делают так: первый кадр буферизация настраивается так, чтобы глубина ближних объектов была 0 ,0 , а дальних - 0 ,5 . Второй кадр - от 1 ,0 до 0 ,5 . Это снижает точность на 1 бит, но позволяет избавиться от очистки буфера.
Но я, что-то не пойму как это.
Можете доходчевее объяснить.

-=Jack=- 28.06.2009 21:54

Ответ: создание 3Д движка на j2me
 
Цитата:

Сообщение от WISHMASTER35 (Сообщение 109318)
Можете доходчевее объяснить.

Очистка при этом всё-ровно требуется, но не каждый кадр, а через один.

1. чистим буфер
2. рендерим кадр №1, считаем значения глубины для пикселей. При этом если значение>=1 записываем 0.5, иначе - множим значение на 0.5 и пишем его в буфер.
3. рендерим кадр №2, считаем значения глубины для пикселей. При этом если значение>=1 записываем 1, иначе - множим значение на 0.5, добавляем к результату 0.5 и пишем его в буфер.
4. идём к пункту 1

WISHMASTER35 29.06.2009 16:44

Ответ: создание 3Д движка на j2me
 
У меня, есть идея.
Записывать в з-буфер номер текущего кадра. А потом проверять, если текущий кадр=100 и в з-буфере=100, то этот пиксель уже рисовался в этом кадре.
Таи можно будет очистку з-буфера очень редко. Или вообще не делать.
Как идея?

WISHMASTER35 29.06.2009 19:07

Ответ: создание 3Д движка на j2me
 
А в int'e за альфа канал первый или четвёртый байт отвечает?
Я думаю может этот альфа канал использовать как з-буфер.
А то лишняя запись в массив много фпс забирает.

MiXaeL 29.06.2009 19:35

Ответ: создание 3Д движка на j2me
 
8 бит для z-буфера - это катастрофически мало. Даже не пытайся.

jimon 29.06.2009 19:37

Ответ: создание 3Д движка на j2me
 
WISHMASTER35
для Z буфера надо минимум 16 бит, но желательно 24 бита

тебе не кажется что если до тебя этого не сделали, то это технически почти не реализуемо ?
для быстрой 3д графики просто необходим векторный процессор - графический ускоритель

WISHMASTER35 29.06.2009 19:51

Ответ: создание 3Д движка на j2me
 
Вычислять расстояние для каждого пикселя я не буду. У меня сейчас не з-буфер, а f-buffer (frame buffer) в этот массив записуется номер кадра в котором был задан цвет пикселю. Этот массив у меня сейчас из байт, так, что 8 бит хватает.
Не факт, что до меня чего-то из моих идей не реализовывал кто-то другой. Не все ж движки с открытым исходным кодом.
Я вообще делаю движок для мобильного, поетому мне приходится придумывать, что-то что проще и быстрее, чем в комповских движках.
Хочется сделать движок как в контр тероризм-2. Кстати, в той игре псевдо 3д или 3д? По-моему, если в той игре, есть модели компов, вертолётов и др, то псевдо это уже не может быть.

-=Jack=- 29.06.2009 19:54

Ответ: создание 3Д движка на j2me
 
Цитата:

Сообщение от WISHMASTER35 (Сообщение 109367)
Как идея?

Бред.

Цитата:

Вычислять расстояние для каждого пикселя я не буду
Вообще-то, ты уже его вычисляешь при прорисовке, просто не используешь...

WISHMASTER35 29.06.2009 20:03

Ответ: создание 3Д движка на j2me
 
Может и бред, но очищать не надо.
Где я вычисляю в процеси прорисовки? Я использую только 2д координаты треугольника. Из них найти расстояние пикселя не возможно.

-=Jack=- 29.06.2009 21:09

Ответ: создание 3Д движка на j2me
 
Цитата:

Сообщение от WISHMASTER35 (Сообщение 109398)
Я использую только 2д координаты треугольника. Из них найти расстояние пикселя не возможно.

Иди копать траншеи...

WISHMASTER35 30.06.2009 00:32

Ответ: создание 3Д движка на j2me
 
Хочеш сказать, что из 2д треугольника можно вычислить 3д координаты пикселя?

-=Jack=- 30.06.2009 02:44

Ответ: создание 3Д движка на j2me
 
Цитата:

Сообщение от WISHMASTER35 (Сообщение 109427)
Хочеш сказать, что из 2д треугольника можно вычислить 3д координаты пикселя?

Нет. Я хочу сказать, что когда ты рисуешь 2д треугольник ты вычесляешь глубину. vec=pos*(WorldMatrix*ViewMatrix*ProjMatrix); - так вычисляется положение вершины на экране, после чего данные вершин итерполируются по пикселям. При этом значение vec.z в данной формуле и есть глубина.

WISHMASTER35 30.06.2009 10:47

Ответ: создание 3Д движка на j2me
 
Положения вершин я вычисляю умножением на одну матрицу.
А vec это что? Вершина?

-=Jack=- 30.06.2009 14:19

Ответ: создание 3Д движка на j2me
 
Цитата:

Сообщение от WISHMASTER35
Положения вершин я вычисляю умножением на одну матрицу.

Врешь. Я не пойму, ты всё ручками пишешь, или используешь какую-то библиотеку?
Цитата:

Сообщение от WISHMASTER35
А vec это что? Вершина?

Нет, китайский лётчик...
Цитата:

Сообщение от Jack
положение вершины на экране



Часовой пояс GMT +4, время: 04:08.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot