首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Three.js -可以使用JSON来声明对象吗?

Three.js -可以使用JSON来声明对象吗?
EN

Stack Overflow用户
提问于 2013-08-06 17:54:07
回答 2查看 1.8K关注 0票数 1

我正在努力为我的项目选择最好的Javascript 3D库。

Scene.js,相比,我更喜欢Three.js,但Scene.js的编码风格似乎更高效,因为我需要动态创建大约100个对象,这意味着要用Three.js声明数百个变量。

Three.js中,似乎需要为每个不同的对象定义变量并将其添加到场景中,如下所示:

代码语言:javascript
复制
var renderer = new THREE.WebGLRenderer();
var camera =
  new THREE.PerspectiveCamera(
    VIEW_ANGLE,
    ASPECT,
    NEAR,
    FAR);

var scene = new THREE.Scene();

var sphere = new THREE.Mesh(

  new THREE.SphereGeometry(
    50,
    16,
    16),

  sphereMaterial);

scene.add(sphere);

而在Scene.js中,对象是在类似JSON的结构中创建的,如下所示:

代码语言:javascript
复制
var scene = SceneJS.createScene({
    nodes:[
        {
            type:"material",
            color: { r: 0.3, g: 0.3, b: 1.0 },

            nodes:[
                {
                    type: "rotate",
                    id: "myRotate",
                    y: 1.0,
                    angle: 0,

                    nodes: [
                        {
                            type:"geometry",
                            source:{
                                type:"teapot"
                            }
                        }
                    ]
                }
            ]
        }
    ]
});

现在我的问题是,是否有可能在Three.js中也使用更类似JSON的编码风格?

我已经发现了THREE.JSONLoader,但由于Three.js没有非常好的文档,我发现很难发现这是否适合我。它似乎更多的是针对从3D软件转换的模型,但我真的需要自己构建对象。

EN

回答 2

Stack Overflow用户

发布于 2013-08-06 22:31:20

是的,您可以使用JSON在Three.js中定义几何图形。您可以像这样直接解析JSON (未经测试,但至少想法是存在的):

代码语言:javascript
复制
    var json = { .... }; // your JSON geometry, not as string but already parsed object 
    var loader = new THREE.JSONLoader();
var result = loader.parse(json, texturePath);
    var mesh = new THREE.Mesh(result.geometry, result.materials);

这只能用于定义几何图形(和材质)。

我同意文档是稀疏的。幸运的是,所有的Three.js JSON格式几乎都是人类可读的。您可以检查现有的示例模型,或者查看要与JSONLoader一起使用的几何JSON格式的https://github.com/mrdoob/three.js/wiki/JSON-Model-format-3.1

对于复杂的场景层次结构(多个几何图形、灯光等),您可以使用明显未记录的ObjectLoader JSON格式,其方式与JSONLoader格式非常相似。为了检查ObjectLoader JSON格式,我建议阅读src/loaders/ObjectLoader.js上的源代码和/或使用http://threejs.org/editor/生成示例文件(文件->导出场景/对象)

票数 3
EN

Stack Overflow用户

发布于 2013-08-07 20:15:50

你可以看看GLGE的“快速表示法”:http://www.glge.org/ (我还没有深入研究过这个BTW,所以我不确定它是否适合你的需求)。

如果您使用SceneJS,首先要确保其功能满足您的需求,因为它的功能集比THREE.js更窄,更多的是用于高细节可视化,而不是广泛的渲染效果。

但是,如果我是您,我会立即开始并为THREE.js编写您自己的开源JSON层,从您需要的东西开始。我相信你很快就会有贡献者来填写剩下的内容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18076896

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档