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)

WISHMASTER35 13.06.2009 17:26

Ответ: создание 3Д движка на j2me
 
Свет у меня будет направленый т.к. это легче. Вот только не пойму как цвет делать темнее или светлее, если он хранится в одном int.

-=Jack=- 13.06.2009 17:49

Ответ: создание 3Д движка на j2me
 
Вложений: 1
Кусок главы "Основы моделирования освещения и поверхностей тел" книги Ламота:

WISHMASTER35 13.06.2009 19:51

Ответ: создание 3Д движка на j2me
 
Там расказывается как работать с цветом когда он задан тремя int. А когда он задан одним числом как его сделать темнее?

-=Jack=- 13.06.2009 20:53

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

Код:

public class Color {
    public int value;
    public Color(){
        value = 0;
    }
    public Color(int value){
        this.value = value;
    }
    public Color(int r, int g, int b, int a){
        value=a;
        value<<=8;
        value|=r;
        value<<=8;
        value|=g;
        value<<=8;
        value|=b;

    }
    public short getR(){
        return (short)((value>>16)&255);
    }
    public short getG(){
        return (short)((value>>8)&255);
    }
    public short getB(){
        return (short)((value)&255);
    }
    public short getA(){
        return (short)((value>>24)&255);
    }
}


WISHMASTER35 14.06.2009 02:02

Ответ: создание 3Д движка на j2me
 
Не пойму зачем в short конвертировать? Пусть бы int возращало. Хотя так памяти меньше берёт.
Кстати, ты тоже 3д движок делаеш?
Можеш объяснить почему некоторые движки медленные, а некоторые быстрые? Вроде все алгоритмы не засекречены и каждый может использовать лучший алгоритм, но нет, некоторые игры летают, а некоторые несмотря на свою простоту тормазят.

WISHMASTER35 14.06.2009 15:56

Ответ: создание 3Д движка на j2me
 
Можеш формулу написать как перемножать матрици 4*4. А то у меня какая-то фигня получается.

impersonalis 14.06.2009 16:56

Ответ: создание 3Д движка на j2me
 
Вложений: 1
матрицЫ 4х4 перемножаются так:

impersonalis 14.06.2009 17:06

Ответ: создание 3Д движка на j2me
 
Вложений: 1
Вот так выглядит цикл умножения:

WISHMASTER35 14.06.2009 18:02

Ответ: создание 3Д движка на j2me
 
Я не пойму. Есть у меня матрица matrix и matrixTemp. matrix я задаю z-позицию = 600. А matrixTemp задаю Х угол 5. Потом matrix умножаю на matrixTemp и matrix поворачивается, НО почему-то позиция становится = 0. По-моему этого не должно быть. Или должно?

-=Jack=- 14.06.2009 18:18

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

Сообщение от WISHMASTER35 (Сообщение 107511)
Не пойму зачем в short конвертировать? Пусть бы int возращало. Хотя так памяти меньше берёт.
Кстати, ты тоже 3д движок делаеш?
Можеш объяснить почему некоторые движки медленные, а некоторые быстрые? Вроде все алгоритмы не засекречены и каждый может использовать лучший алгоритм, но нет, некоторые игры летают, а некоторые несмотря на свою простоту тормазят.

Зависит от прямоты рук разработчика.

Цитата:

Сообщение от WISHMASTER35 (Сообщение 107511)
Можеш формулу написать как перемножать матрици 4*4. А то у меня какая-то фигня получается.

Код:

public static Matrix4x4 operator *(Matrix4x4 left, Matrix4x4 right)
        {
            Matrix4x4 t = new Matrix4x4();

            for (int i = 1; i <= 4; i++)
                for (int j = 1; j <= 4; j++)
                {
                    float r = 0;
                    for (int p = 1; p <= 4; p++)
                        r += left[i, p] * right[p, j];
                    t[i, j] = r;
                }

            return t;
        }

На Java переводи сам... left и right - умножаемые матрицы, t - результат. Тут у класса матрицы есть двумерный индексатор, потому можно получить доступ к элементам как к двумерному массиву(например t[i, j]).
На сколько мне известно, разработчики Java сочли не нужной перегрузку операторов. Такчто придётся тебе попарится с переводом :(

WISHMASTER35 14.06.2009 18:39

Ответ: создание 3Д движка на j2me
 
Вот http://upwap.ru/455066 сделал свет и матрицу. Но в матрице, в методе mul навернае какая-то ошибка т.к. модель постеменно сжимается. Можете проверить мою матрицу.

-=Jack=- 14.06.2009 21:04

Ответ: создание 3Д движка на j2me
 
>Вот http://upwap.ru/455066
Где jar? >(

А что это у тебя за арифметика странная?? Почему везде int??

WISHMASTER35 14.06.2009 21:21

Ответ: создание 3Д движка на j2me
 
jar в папке dist. Арифметика не странная, а с фиксированной точкой. Операции с float в раз 5 медленее.
И изменяется длинна вектора из-за моего фиксед поинт :-( . А float использовать - фпс сильно понизится. В матрице маскота тоже везде fixed point, и в матрице. И длинна векторов там почти не меняется.
Как вориант можно нормализировать длинну векторов, но это долго из-за корня. И это не выход т.к. нельзя будет масштабировать вектор. А в маскоте я вручную(умноженйем и делением) менял длинну вектора и она потом такой и оставалась т.е. не нормализировалась.

WISHMASTER35 14.06.2009 22:28

Ответ: создание 3Д движка на j2me
 
Я уже и float сделал, но всё равно модель постепенно сжимается. Может у меня не правельно умножаются матрицы?

WISHMASTER35 15.06.2009 00:03

Ответ: создание 3Д движка на j2me
 
Нашол ошибку. Не надо было изменения сразу же записывать.
Но теперь не пойму почему при умножении на матрицу переноса моя матрица не переносится. Вот http://upwap.ru/455417 посмотрите почему не работает матрица переноса.


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

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