【问题标题】:Exporting a 3d model created in sketchup for use in Android导出在 SketchUp 中创建的 3D 模型以在 Android 中使用
【发布时间】:2011-10-27 13:35:50
【问题描述】:

我在 android 上使用 opengl 绘制一个简单的矩形时遇到问题。 这就是我所做的。

我用sketchup画了一个简单的矩形。我使用导出结果 3d 模型 collada .dae 文件。然后我从 .dae (xml) 文件并放入一个数组中。我在本机中复制了数组 格式化为浮点缓冲区。然后我用条纹画了三角形 模式。结果几乎是一个矩形。它缺少一个三角形 每个表面。

这是代码的相关部分和结果。

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
    }
}

结果显示在这里 http://imgur.com/a/o3HTP

【问题讨论】:

    标签: android opengl-es sketchup


    【解决方案1】:

    您的顶点列表中的顶点可能顺序错误(这可能是导出的错误)。这是当我将顶点放置在错误的位置时从四边形中得到的。您将需要从外部逆时针构建它们。也可能是三角形带导致您的顶点出现问题,对于如此简单的应用程序,您可以尝试 GL_QUADS。

    【讨论】:

      【解决方案2】:

      我得到了代码工作。出现了三个问题。

      1. DrawArrays 通过顶点数组向前工作。 IE。您一次从数组中绘制一个元素,然后转到下一个元素。您不能在其中来回跳跃。
      2. 使用 .xml 文件中的偏移列表,我创建了一个数组,我可以将它与 glDrawElements 一起使用,它在顶点列表中跳跃。
      3. 您需要使用无符号短的偏移量。我使用了一个整数并修复了它不起作用。

      这是有效的结果代码。问题是我的。不是从 sketchup 生成的 .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
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-09-08
        • 2010-12-21
        • 1970-01-01
        • 1970-01-01
        • 2016-11-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多