J2ME M3G Помогите с простой задачкой

Модератор: Absurd

Ответить
partizan
Сообщения: 3
Зарегистрирован: 24 июн 2005, 10:58

Если кто работал с M3G...
Хочу вывести плоскость, вокруг которой летает камера.
Камера летает, а вот плоскость видна только с одной стороны
Когда плоскость поворачивается к камере внутренней стороной она исчезает. :(
А я хочу, чтобы становилась видна другая сторона.
Попробовал ввести две паралельные плоскости...
Поставил нормали - вроде разные по направлению...
Все равно - обе плоскости исчезают поворачиваясь к камере внутренней стороной.
Как сделать их видимыми?

Привожу кусок кода

.....

short[] vert = {

0, 0, 10,
0, 10, 10,
10, 0, 10,
10, 10, 10,

0, 0, 11,
0, 10, 11,
10, 0, 11,
10, 10, 11
};

......
VertexArray vertArray = new VertexArray(vert.length / 3, 3, 2);
vertArray.set(0, vert.length/3, vert);

byte[] norm = {

0, 0, -127, 0, 0, -127, 0, 0, -127, 0, 0, -127,
0, 0, 127, 0, 0, 127, 0, 0, 127, 0, 0, 127
};

VertexArray normArray = new VertexArray(norm.length / 3, 3, 1);
normArray.set(0, norm.length/3, norm);

short[] tex = {
1, 0, 0, 0, 1, 1, 0, 1,

-1, 0, 0, 0, -1, -1, 0, -1

};

VertexArray texArray = new VertexArray(tex.length / 2, 2, 2);
texArray.set(0, tex.length/2, tex);

;
int[] stripLen = { 4, 4 };

VertexBuffer vb = iVb = new VertexBuffer();
vb.setPositions(vertArray, 1.0f, null);
vb.setNormals(normArray);
vb.setTexCoords(0, texArray, 1.0f, null);

.....


Может тут что-то не так в коде?
partizan
Сообщения: 3
Зарегистрирован: 24 июн 2005, 10:58

Нашел более менее удовлетворяющий ответ.
Взял куб из примера sun'овского
И выбросил боковые стенки
Потом приблизил фронтальную и заднюю плоскости
до расстояния один пиксел между ними.

Код: Выделить всё

     short[] vert = {
          5, 5, 5, -5, 5, 5, 5,-5, 5, -5,-5, 5,
          -5, 5, 4, 5, 5, 4, -5,-5, 4, 5,-5, 4
//          -5, 5,-5, 5, 5,-5, -5,-5,-5, 5,-5,-5
//          -5, 5, 5, -5, 5,-5, -5,-5, 5, -5,-5,-5,
//          5, 5,-5, 5, 5, 5, 5,-5,-5, 5,-5, 5,
//          5, 5,-5, -5, 5,-5, 5, 5, 5, -5, 5, 5,
//          5,-5, 5, -5,-5, 5, 5,-5,-5, -5,-5,-5
           };

         VertexArray vertArray = new VertexArray(vert.length / 3, 3, 2);
         vertArray.set(0, vert.length/3, vert);

         // Задаем нормали куба
         byte[] norm = {
          0, 0, 127, 0, 0, 127, 0, 0, 127, 0, 0, 127,
          0, 0,-127, 0, 0,-127, 0, 0,-127, 0, 0,-127
//          -127, 0, 0, -127, 0, 0, -127, 0, 0, -127, 0, 0,
//          127, 0, 0, 127, 0, 0, 127, 0, 0, 127, 0, 0,
//          0, 127, 0, 0, 127, 0, 0, 127, 0, 0, 127, 0,
         // 0,-127, 0, 0,-127, 0, 0,-127, 0, 0,-127, 0
         };

         VertexArray normArray = new VertexArray(norm.length / 3, 3, 1);
         normArray.set(0, norm.length/3, norm);

         // Задаем текстурные координаты
         short[] tex = {
          1, 0, 0, 0, 1, 1, 0, 1,
          1, 0, 0, 0, 1, 1, 0, 1
//          1, 0, 0, 0, 1, 1, 0, 1,
//          1, 0, 0, 0, 1, 1, 0, 1,
//          1, 0, 0, 0, 1, 1, 0, 1,
//          1, 0, 0, 0, 1, 1, 0, 1
          };

         VertexArray texArray = new VertexArray(tex.length / 2, 2, 2);
         texArray.set(0, tex.length/2, tex);

         int[] stripLen = { 4, 4 };//, 4, 4, 4, 4 };



Другой вариант решения может быть в использовании
Материала для грани (плоскости).
В настройках этого объекта надо покопаться.
Не смотрел еще...[/code]
Ответить