Как нарисовать простую 3D модель с помощью Android Studio, Vuforia и OpenGL - PullRequest
0 голосов
/ 04 декабря 2018

У меня полнофункциональное приложение для iOS, и сейчас я работаю над версией Android в Android Studio.Приложение не является 3D-игрой, оно использует обычный просмотр списка и т. Д., Но в одном упражнении приложение использует дополненную реальность.Я решил использовать Vuforia (чтобы получить больше устройств, чем ARCore + ARKit) и купил эту простую 3D-модель.

https://www.turbosquid.com/3d-models/blend-gift/977474

Теперь я просто хочу показать свою собственную модель на своемVuforia Image Marker.Легко!Я думал ...

Vuforia использует OpenGL для рендеринга своей 3D-модели.Это чайник (https://library.vuforia.com/articles/Training/Image-Target-Guide), и похоже, что класс, необходимый для рендеринга чайника, выглядит следующим образом:

public class Teapot extends MeshObject {

private Buffer mVertBuff;
private Buffer mTexCoordBuff;
private Buffer mNormBuff;
private Buffer mIndBuff;

private int indicesNumber = 0;
private int verticesNumber = 0;

 public Teapot()
    {
        setVerts();
        setTexCoords();
        setNorms();
        setIndices();
    }  

 private void setVerts()
    {
            double[] TEAPOT_VERTS = { 11.222200, 0.110300, 20.030291, 10.302300, ect. } 
        mVertBuff = fillBuffer(TEAPOT_VERTS);
        verticesNumber = TEAPOT_VERTS.length / 3;
        }

 private void setTexCoords()
    {
        double[] TEAPOT_TEX_COORDS = { 0.608828, 0.354913, 0.609037, 0.414650, ect. }

          mTexCoordBuff = fillBuffer(TEAPOT_TEX_COORDS);


    }

 private void setNorms()
    {
        double[] TEAPOT_NORMS = { -0.964496, 0.067011, -0.255454, -0.865037, ect. } 

        mNormBuff = fillBuffer(TEAPOT_NORMS);


           }

private void setIndices()
    {
        short[] TEAPOT_INDICES = { 0, 1, 2, 2, 3, 0, 4, 5, 6, 6, 7, 4, 8, 9, ect. }

        mIndBuff = fillBuffer(TEAPOT_INDICES);
        indicesNumber = TEAPOT_INDICES.length;
        } 
}

Так что я подумал - ага - если бы я мог просто найти Вертс,TexCoords, Нормы и Индексы моей 3D-модели. Я мог бы вставить их сюда, а затем нарисовать свой удивительный рождественский подарок вместо чайника.

У меня есть 3D-модель в:

  • 3D Studio Project
  • Collada
  • OBJ
  • Другие текстуры
  • FBX

И у меня тоже есть блендер (но почти нулевых навыков blender.) После долгого поиска я подумал, что если бы я мог преобразовать модель в файл j-son. Я мог бы получить правильные входные данные для его рисования. Но созданный файл j-son очень большой!И когда я вставляю числа, полученные из файла, приложение вылетает с ошибкой: error: слишком большой код, который я, конечно, не хочу: - (

Так что теперь я снова застрял ... Может быть,мой подарок большой? Или мой способ сделать это совершенно неправильно?

Я думаю, что Android Studiosсоздатели должны упростить 3D-импорт и рендеринг - но это мне сейчас не поможет!

Это просто 3D-подарок, и я хочу его там, где находится простой 3D-чайник.

...