导出在 Sketchup 中创建的 3D 模型以在 Android 中使用
我在 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
}
}
结果显示在这里 https://i.sstatic.net/KhnNz.jpg
I have a problem using opengl on android to draw a simple rectangle.
This is what I have done.
I drew a simple rectangle with sketchup. I exported the result using
a 3d-model collada .dae file. I then copied the vertices data from
the .dae (xml) file and put in an array. I copied the array in native
format to a float buffer. I then drew the triangles using stripe
mode. The result is nearly a rectangle. It is missing a triangle on
each surface.
Here is the relevant portion of code and the result.
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
https://i.sstatic.net/KhnNz.jpg
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您的顶点列表中的顶点顺序可能错误(这可能是导出的错误)。这是当我的顶点位于错误位置时我从四边形中得到的结果。您需要从外部逆时针方向构建它们。也可能是三角形带导致顶点出现问题,对于这么简单的应用程序,您可以尝试 GL_QUADS。
You probably have your vertexes in the wrong order in your vertex list (which could be the fault of the export). This is what I got from my quads when i had the vertices in the wrong places. You will want to build them counter-clockwise from the outside. It could also be that triangle strip is causing issues with your vertices, for an application this simple you could try GL_QUADS.
我让代码工作了。存在三个问题。
这是有效的结果代码。问题出在我身上。不是从 sketchup 生成的 .xml 文件。
I got the code working. There were three problems.
Here is the resulting code that works. The problem was mine. Not the .xml file produced from sketchup.