如果我绘制一个平面,则纹理坐标正确映射。 (4垂直,4 TC,6指数(2多边形))

即使细分了(9个垂直,9个TC,27个索引(8个多边形)),纹理也会显示:

(玛雅复杂飞机)

我可以使用[书面] Obj转换器并将Texture坐标加载到缓冲区中。但是,如果我在Maya中拉伸(stretch)面,甚至应用平面UV贴图“修复”破碎的uv,(在上方)纹理坐标在引擎中会变得非常狂野。 (下面)

Obj纹理坐标格式有问题吗?

更新:我已经绘制了D3D11_PRIMITIVE_TOPOLOGY_LINELIST,并且注意到索引编制也发生了变化。这会是问题吗?还是应该重建在http://www.gamedev.net/topic/600234-texcoord-count-is-different-than-vertex-count/上刷过的纹理坐标

最佳答案

此问题是由纹理坐标索引不等于顶点索引引起的。为了解决该问题,必须对纹理坐标索引进行排序,以使其与顶点索引对齐。

对于这个问题,我能够使用适合我的理解的蛮力方法来解决,这很慢,该方法将整个“顶点/纹理”坐标列为键,并根据其索引重建顶点和“纹理”坐标的完整显式数组,适合我应用程序需求的自定义结构。

还有其他涉及使用哈希的更快的解决方案
http://programminglinuxgames.blogspot.com/2010/03/wavefront-obj-file-format-opengl-vertex.html

与法线相关的问题:
OpenGL - Index buffers difficulties

3 index buffers

和一个很好的解释:
Why is my OBJ parser rendering meshes like this?

以及有关obj格式的更多资源:
http://en.wikipedia.org/wiki/Wavefront_.obj_file

OBJ资源:
http://www.martinreddy.net/gfx/3d/OBJ.spec
http://www.fileformat.info/format/wavefrontobj/egff.htm

另外,DirectX库中的MeshFromObj10教程对某些人有帮助,可以高效地完成它。除了找到第三方资源之外,没有简单的方法可以对其进行编码。

09-07 23:47
查看更多