Android-де пайдалану үшін эскиз-файлда жасалған 3D үлгісін экспорттау

Менің қарапайым тіктөртбұрышты салу үшін Android-ге арналған opengl-ді қолданамын. Мен мұны жасадым.

Мен эскизмен қарапайым тіктөртбұрышты сызып алдым. Мен нәтижені экспорттадым 3d-model collada .dae файлы. Содан кейін шыңдар деректерін көшірдім .dae (xml) файлын алапқа салыңыз. Мен массивді туған тілге көшірдім форматты float буферіне. Содан кейін үшбұрышты сызықты қолданамын режимі. Нәтиже дерлік тіктөртбұрыш болып табылады. Онда үшбұрыш жоқ әр беті.

Міне, кодының тиісті бөлігі және нәтиже.

public void draw(GL10 gl) {
    gl.glVertexPointer(3, GL10.GL_FLOAT, 0, mVertexBuffer);
   //Enable color tracking
    gl.glEnable(GL10.GL_COLOR_MATERIAL);
    for (int i=0; i<108/4; i=i+4) {
        myDrawColor(gl,i);
        gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP,i,4);// mode, first, count
    }
}

the result is shown here http://imgur.com/a/o3HTP

0

2 жауаптар

Шыңылыстың тізімінде сіздің шыңдарыңыз дұрыс емес тәртіпте болуы мүмкін (бұл экспорттың кінәсі болуы мүмкін). Маған дұрыс емес жерлерде шыңдар болған кезде, менің квадумдарымнан келді. Оларды сыртқа қарай сағат тіліне қарсы тұрғызғыңыз келеді. Сондай-ақ, бұл үшбұрыш жолағы сіздің шыңдарыңызда мәселелерді тудырады, себебі бұл қарапайым бағдарламаны GL_QUADS көріңіз.

1
қосылды

Мен кодты алдым. Үш мәселе болды.

  1. DrawArrays шыңдары массивінде жұмыс істейді. яғни. сіз бір элементтен бір элементтен суреттесіп, келесіге өтесіз.
  2. .xml файлындағы офсеттер тізімін пайдалану glidrawElements көмегімен пайдалануға болатын массив құрдым.
  3. Сізге қол қойылмаған қысқартуларды пайдалану қажет.

Міне, жұмыс істейтін код. Мәселе менікі болды. Эскизден алынған .xml файлы емес.

public void draw(GL10 gl) {
    gl.glVertexPointer(3, GL10.GL_FLOAT, 0, mVertexBuffer);
    gl.glColorPointer(4, GL10.GL_FLOAT, 0, mColorsBuffer);
    gl.glEnable(GL10.GL_COLOR_MATERIAL); 
// Enable color tracking 
    gl.glEnable(GL10.GL_COLOR_MATERIAL);
    gl.glDrawElements(GL10.GL_TRIANGLES, myoffsets.length, GL10.GL_UNSIGNED_SHORT, mIndicesBuffer);//mode, count, type, indices
}
0
қосылды