【发布时间】:2014-02-16 07:09:35
【问题描述】:
我正面临一个非常难以理解的问题。
我正在将 .obj 3d 模型加载到我正在开发的 WebGL 应用程序中。我正在使用自定义函数解析它们。我知道它工作正常。因为我明白了:
当然,纹理被过度拉伸了。但这就是映射 UV 的方式。
但是,当我加载 goose 模型时,我得到的是:
没有纹理的鹅。我使用相同的纹理。
更奇怪的是纹理只在眼睛周围渲染。如果我不画线框,我会得到这个:
我圈出的那两个小规格是眼睛。
为了确定不是这个型号,我又试了一个:
我不知道为什么它不会在其他地方渲染纹理。
这是我尝试过的:
- 重新计算法线并再次从 Blender 导出。结果相同。
- 在 Photoshop 中加载模型并且它们可以正确预览。意义模型很好。
- 一遍又一遍地检查我将 .obj 文件解析为 WebGL 可用的格式。另外,由于立方体加载正确,我认为不是这样。
- 尝试关闭 MipMapping、禁用 CULL_FACE 并更改缠绕顺序。没有区别。
- 使用了不同的纹理图像。纹理图像都是 NPOT。试过非 NPOT。什么都没有改变,除了不同的图像,小眼睛的纹素或斧头上的碎片改变了纹理。
- 检查了 UV 映射,一切看起来都很好。没有负值或超出范围的值。
我完全没有想法。如果有人有类似的经历,我会很感激关于下一步看哪里的指示。
我一般不喜欢在不发布代码的情况下提问,但是代码非常复杂,因为我使用 sweet.js 来定制 JavaScript 语法。如果有人想查看代码,请告诉我,我可以尝试清理一些代码并上传到某个地方。
【问题讨论】:
-
长镜头:多边形是否填充了模型的第一个多边形?
-
@GameAlchemist 是的!就是这样!对于使用 DrawElements 绘制的面数,我有一个硬编码值。非常非常非常感谢。我只是将其更改为 vertices/3,它就像一个魅力。请发表您的评论作为答案。我想给你很多积分。
标签: javascript html5-canvas webgl