【问题标题】:Three.js textures loading as blackThree.js 纹理加载为黑色
【发布时间】:2015-09-15 06:59:32
【问题描述】:

我目前正在尝试将网格从 Maya 转移到 three.js。我已经将 Maya 文件转换为 .obj 并且在加载页面时可以看到网格。但是,具有图像作为其纹理的材质(所有这些都是 1024x1024 并且是 .tga 格式)显示为黑色,而纯色的材质最终会显示。见图片:

http://i.stack.imgur.com/BVq4g.png

注意球体是青色的(它们的材料只是纯色),而其余的球体是黑色的(这些材料附有纹理文件)。

这是我在网格/纹理中加载的方式:

var loader = new THREE.JSONLoader();

loader.load(
    'RoboticArm2.js',
    function (geometry, materials) {
        var material = new THREE.MeshFaceMaterial(materials);
        var object = new THREE.Mesh(geometry, material);
        scene.add(object);              
    }
);

基于控制台,它正在正确加载所有纹理文件(检索任何内容都没有错误)。 RoboticArm2.js 文件提到了“mapDiffuse”的所有正确值作为纹理的相应 .tga 文件。

我在另一个 stackoverflow 问题上看到,这可能是由 Maya 的 .obj 导出导致 .js 文件 [0, 0, 0] 中的 colorAmbient 和 colorDiffuse 值的错误引起的。起初是这种情况,但我将它们全部调整为 [0.8, 0.8, 0.8] (就像回答者建议的那样),看看是否有任何出现,没有运气。

如果您需要任何其他信息/代码,请告诉我,谢谢!

【问题讨论】:

  • 最好将环境设置为 (0.2,0.2,0.2)。 0.8 对于环境来说太高了。你能快速将你的纹理转换为 .png (并更新 js 文件)。如果这不能解决问题,您需要发布对象或使用它的页面。
  • 我会对此进行调整并尽快通知您。
  • 转换为 .png 成功了!映射似乎有点歪斜,但这是一个完全不同的问题 :) 谢谢!

标签: javascript three.js


【解决方案1】:

将纹理文件转换为 .png 可以使它们正确显示,而不是黑色。

【讨论】:

    猜你喜欢
    • 2020-04-17
    • 2013-06-11
    • 2016-03-30
    • 2013-09-09
    • 1970-01-01
    • 2020-02-29
    • 1970-01-01
    • 2014-03-10
    • 1970-01-01
    相关资源
    最近更新 更多