【问题标题】:three.js json loader after r71r71之后的three.js json加载器
【发布时间】:2016-08-23 15:18:57
【问题描述】:

我用了 three.js 很长一段时间,但一直使用 r71 直到现在。我现在搬到 r76 并且有一个奇怪的问题; json 加载器不再触发 onLoadComplete 函数,除非它是单个现有函数,如 beep() 或 alert("ok")。但这当然没有帮助,我至少需要制作 scene.add(mesh) 我检查了 r72 和 74 并遇到了同样的问题。 我通过使用 Timer 制作一个 scene.add(mesh) 进行测试,只是为了检查该对象是否由 loader.load 函数很好地创建并且这也很好用。所以我真的坚持 onLoadComplete 没有触发。有人对此有所了解吗? 谢谢。

【问题讨论】:

    标签: ruby-on-rails three.js


    【解决方案1】:

    我从未注意到或使用过 onLoadComplete 函数,它不只是早期实现的遗物吗?在 repo 中搜索发现 看https://github.com/mrdoob/three.js/blob/master/src/loaders/JSONLoader.js

    AFAIK 你应该能够像这样加载你的文件

    var onLoadCallback = function(geometry, material){
        scene.add(new THREE.Mesh(geometry,material));
    };
    var loader = new THREE.JSONLoader();
    loader.load( "path/to/json.file", onLoadCallback);
    

    【讨论】:

    • 感谢您的反馈;这实际上是我使用回调函数启动加载的方式,包括在材质上映射纹理图像。但是当有一个很重的纹理文件要映射到材质上时,在纹理文件完全加载并映射到材质上之前,您无法将网格添加到场景中。这还需要回调函数:'material.onload=function() {material.map.needsUpdate = true;
    • 如果您查看 TextureLoader(默认情况下由 JSONLoader 使用),您可以看到它在加载 texture.needsUpdate = true; 时自行在纹理上设置了 needsUpdate 所以除非您给它一个带有自定义的处理程序loader 它应该正确更新(网格会变黑一段时间,然后假设调用渲染出现纹理)
    • 好的,我不知道这一点,我将对此进行测试。但我担心问题出在我的配置中,因为它与 r71 配合得很好。所以我继续调查我的配置中可能出现的问题,并在发现时报告。谢谢
    • 好的,我测试了这个。你说得对 ;不需要“onLoad Complete”,这说明了我的问题所在;我使用 THREE.MorphAnimMesh,它现在说:“不是构造函数”。如果我删除这些,它会起作用。感谢您让我走上更好的轨道。
    • 所以,我刚刚发现动画系统在 r72 中发生了变化,我必须手动包含较旧的动画 js ...并了解我必须如何使用新的东西。
    猜你喜欢
    • 2015-11-15
    • 1970-01-01
    • 2016-11-06
    • 2016-01-16
    • 1970-01-01
    • 2016-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多