【问题标题】:ThreeJS OBJMTLLoader renders object before textures are availableThreeJS OBJMTLLoader 在纹理可用之前渲染对象
【发布时间】:2016-05-31 07:57:21
【问题描述】:

.load() 函数允许用户提供一个回调函数,以便在加载对象时执行。但是,似乎此回调是在加载 .obj 和 .mtl 文件之后执行的,但在解析 .mtl 并且存在纹理图像之前。这会导致在没有任何纹理的情况下渲染对象。有人知道这个问题的解决方案吗?

GitHub 上有一个issue 解决了这个问题,但我没有看到那里发布的解决方案。

OBJMTLLoader 示例:

var loader = new THREE.OBJMTLLoader();

loader.load( model_obj, model_mtl, function ( object ) {

    object.position.y = y_init;
    scene.add( object );
    render();
    document.body.classList.add('is-loaded');

}, onProgress, onError );

【问题讨论】:

  • 你有例子吗?
  • @Vince 尝试过讨论中提到的任何选项吗? github.com/mrdoob/three.js/issues/1751
  • @pratikwebdev 如果可能的话,我更喜欢不需要修改 three.js 源代码的解决方案。
  • @OliverQueen 添加示例代码
  • 你能用一个promise来等待整个东西加载吗?

标签: javascript three.js


【解决方案1】:

您可以转到 r74。在那里,MTL 加载器和 OBJ 加载器是分开的,甚至还有一个materials.preload(); 来解决这个问题。看https://stackoverflow.com/a/35422599/1980846

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-06
    • 1970-01-01
    • 1970-01-01
    • 2015-04-22
    • 1970-01-01
    • 2016-12-02
    • 2013-08-21
    • 1970-01-01
    相关资源
    最近更新 更多