【发布时间】:2014-12-26 10:13:32
【问题描述】:
以http://threejs.org/examples/#webgl_loader_scene 为例,我尝试添加一个从Blender 导出的js 文件。该文件使用 JSONLoader 正确加载,但现在我希望它与其他文件相结合,并有一个进度条。
$( "progress" ).style.display = "block";
THREE.Loader.Handlers.add( /\.dds$/i, new THREE.DDSLoader() );
var loader = new THREE.SceneLoader();
loader.addGeometryHandler( "binary", THREE.BinaryLoader );
loader.addGeometryHandler( "ctm", THREE.CTMLoader );
loader.addGeometryHandler( "vtk", THREE.VTKLoader );
loader.addGeometryHandler( "stl", THREE.STLLoader );
loader.addHierarchyHandler( "obj", THREE.OBJLoader );
loader.addHierarchyHandler( "dae", THREE.ColladaLoader );
loader.addHierarchyHandler( "utf8", THREE.UTF8Loader );
loader.addHierarchyHandler( "json", THREE.JSONLoader );
loader.callbackProgress = callbackProgress;
loader.load( "scenes/test_scene.js", callbackFinished );
我添加了 json HierarchyHandler 并包含了 JSONLoader.js 文件。
loader.addHierarchyHandler( "json", THREE.JSONLoader );
然后我将它添加到 test_scene.js 下的“对象”下,其他 dae 和 obj 文件所在的位置。
"tree" : {
"type": "json",
"url" : "models/json/tree.js",
"position" : [ -43, -10, 27 ],
"rotation" : [ -1.57, 0, 0 ],
"scale" : [ 5, 5, 5 ],
"visible" : true
},
控制台记录它读取树引用的纹理文件但从未完成 - 进度条保持在 99%。
但我收到的错误是:
Uncaught TypeError: Cannot read property 'fromArray' of undefined SceneLoader.js:554
有谁知道为什么会发生这种情况或我做错了什么? three.js 示例加载除 json 之外的所有类型的文件。这可能有原因还是我只是错过了什么?我已经读到 SceneLoader 将被贬值,我应该考虑使用 ObjectLoader,但没有示例说明如何这样做。
谢谢!
【问题讨论】:
标签: json three.js progress loader