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

标签 javascript import three.js editor export

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

谢谢!

最佳答案

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

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

THREE.JSONLoader: seems to be a Scene. Use THREE.SceneLoader instead.'

到控制台日志。这为正确的处理方式提供了重要线索。

场景加载器记录在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。

关于javascript - 从 Three.js 编辑器导出场景并导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22770124/

相关文章:

java - 导入时无法解析符号 TreeMap

javascript - Three.js:在相机和控件之间切换

java - 使用 gradle 从 java 项目中删除未使用的导入

javascript - 更改鼠标悬停时的顶点位置

javascript - 在三个 js 中处理 WebGL 丢失

javascript - 渲染大量元素

javascript - 如何在 JavaScript 函数中使用 Strut 标签?

javascript - 如何在 Jasmine/React 中使用范围输入测试 `onChange` 事件

javascript - 使用 JQuery Range Slider 实时更新 CSS 值

python - 导入Python模块会影响性能吗?