从Three.js编辑器导出场景并导入

时间:2014-03-31 19:10:30

标签: javascript import three.js editor export

我使用在本地工作的three.js编辑器制作一个简单的场景。 当我完成了这个场景后,我将转到" file" - > "出口场景"并且编辑器生成JSON对象/场景。 现在我将复制并粘贴此代码并保存为.js? 我如何在保存纹理的项目中导入这个场景?

谢谢!

2 个答案:

答案 0 :(得分:3)

Develotecca的回答显示了如何从JSON文件加载基本的THREE.geometry。但是,根据我的经验,three.js编辑器导出的几何体类型为BufferGeometry(比基本几何体更有效),因此需要使用THREE.BufferGeometryLoader而不是THREE.JSONLoader加载它们。

此外,问题是关于保存和加载场景,而不是几何。 JSONLoader仅用于加载基本几何图形,并且几何图形仅包含单个模型的每个顶点和每个面的信息(其中包含用于索引到MeshfaceMatrial的材料编号,但没有其他材料信息,因此它需要在使用前与材料结合)。如果您尝试使用JSONLoader加载整个场景,而不是仅仅是场景中一个对象的一部分,则加载器应该发现并传递消息

  

THREE.JSONLoader:似乎是一个场景。请改用THREE.SceneLoader。'

到控制台日志。这为正确的进行方式提供了一个很大的线索。

场景加载器记录在http://threejs.org/docs/#Reference/Loaders/SceneLoader(尽管文档目前尚未完成),其源代码位于https://github.com/mrdoob/three.js/blob/master/src/loaders/SceneLoader.js,其使用示例位于http://threejs.org/examples/webgl_loader_scene.html

所有这一切都需要很多努力。我自己还没有真正使用过SceneLoader,虽然我打算很快,但是从我到目前为止看来它看起来与BufferGeometryLoader或JSONLoader类似,只是因为你正在加载整个场景而不仅仅是你有一个人的一部分

scene = loaded.scene

而不是

scene.add()

您可能需要为场景使用的任何特殊几何图形添加其他加载器和处理程序,例如。

<script src="js/loaders/ColladaLoader.js"></script>
..
loader.addHierarchyHandler( "dae", THREE.ColladaLoader );

对于Collada。

答案 1 :(得分:1)

使用以下命令加载JSON数据:

var jsonLoader = new THREE.JSONLoader();
jsonLoader.load("models/object.json", addModelToScene);

function addModelToScene(geometry, materials) {
    var material = new THREE.MeshFaceMaterial(materials);
    var object = new THREE.Mesh(geometry, material);
    object.scale.set(10, 10, 10);
    scene.add(object);
}

实施例: http://stemkoski.github.io/Three.js/Model.html

其他例子: http://all.develoteca.com/builder/