如果我绘制一个平面,则纹理坐标正确映射。 (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教程对某些人有帮助,可以高效地完成它。除了找到第三方资源之外,没有简单的方法可以对其进行编码。