【问题标题】:WebGL texture rendering partiallyWebGL 纹理部分渲染
【发布时间】: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


【解决方案1】:

从您的图像中,我想知道您是否没有绘制恒定数量的多边形,或者如果绘制开始然后由于某些错误而在其道路上静默失败。这就是为什么我问绘制的多边形是否是模型中的第一个。
因此,绘制多边形的数量似乎确实存在硬编码限制。
很高兴你找到它!

【讨论】:

    猜你喜欢
    • 2013-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-30
    相关资源
    最近更新 更多