BabylonJS文件格式---基于WebGL的H5 3D游戏引擎

12 篇文章 0 订阅
12 篇文章 2 订阅

Babylon.js 使用JSON文件格式来描述场景.

你可以在这儿找到完整的加载器代码:
https://github.com/BabylonJS/Babylon.js/blob/master/src/Loading/Plugins/babylon.babylonFileLoader.js

基础类型

.babylon 文件使用下面的约定来定义基础类型:

  • Vector3: 一个含有3个浮点数([x, y, z])的数组. 例子: [1.1, 2.2, 3.3]
  • Vector4: 一个含有4个浮点数([x, y, z, w])的数组. 例子: [1.1, 2.2, 3.3, 4.4]
  • Color3: 一个含有3个浮点数 ([r, g, b])且每个数的值大小在0和1间的数组. 例子: [0.2, 0.3, 0.5]
  • Matrix: 行优先(先按行存储)的含有16个浮点数的数组
  • Boolean: 真或假

全局结构体

.babylon文件里的全局结构体是下面这样的:

{
    "autoClear": boolean,
    "clearColor": color3,
    "ambientColor": color3,
    "gravity": vector3 (通常是[0,-9,0]),
    "cameras": 相机数组 (见下面),
    "activeCamera_": string,
    "lights": 光源数组(见下面),
    "materials": 材质数组 (见下面),
    "geometries": {...} (见下面),
    "meshes": 网格数组 (见下面),
    "multiMaterials": 多材质数组(见下面),
    "shadowGenerators":  阴影生成器数组 (见下面),
    "skeletons": 骨架数组 (见下面),
    "particleSystems": 例子系统弄个数组 (见下面),
    "lensFlareSystems": 镜头光晕数组 (见下面),
    "actions": 动作数组 (见下面),
    "sounds": 音效数组 (见下面),
    "workerCollisions": boolean,
    "collisionsEnabled": boolean,
    "physicsEnabled": boolean,
    "physicsGravity": vector3 (默认是[0,-9.81,0]),
    "physicsEngine": string ("oimo""cannon", 引擎默认为(oimo),
    "animations": 动画数组 (见下面,可以省略),
    "autoAnimate": boolean,
    "autoAnimateFrom": int,
    "autoAnimateTo": int,
    "autoAnimateLoop": boolean (可以省略),
    "autoAnimateSpeed": number (可以省略)
}

相机

一个相机通过如下JSON格式定义:

{
    "name": string,
    "id": string,
    "type": string,
    "tags": string,
    "parentId": string,
    "lockedTargetId": string,
    "position": vector3,
    "target": vector3,
    "alpha": float, // 仅仅支持ArcRotateCamera 和 AnaglyphArcRotateCamera
    "beta": float, // 仅仅支持 ArcRotateCamera 和 AnaglyphArcRotateCamera
    "radius": float, // 仅仅支持 ArcRotateCamera, FollowCamera 和 AnaglyphArcRotateCamera
    "eye_space": float, // 仅仅支持 AnaglyphFreeCamera 和 AnaglyphArcRotateCamera
    "heightOffset": float, // 仅仅支持 FollowCamera
    "rotationOffset": float, // 仅仅支持 FollowCamera
    "cameraRigMode": int (可以忽略),
    "fov": float (弧度单位),
    "minZ": float,
    "maxZ": float,
    "speed": float,
    "inertia": float (在01间),
    "checkCollisions": boolean,
    "applyGravity": boolean,
    "ellipsoid": vector3,
    "animations": Animations数组 (见下面,可以忽略),
    "autoAnimate": boolean,
    "autoAnimateFrom": int,
    "autoAnimateTo": int,
    "autoAnimateLoop": boolean (可以忽略),
    "autoAnimateSpeed": number (可以忽略),
    "inputmgr" : 相机的输入映射(可以忽略, 见下面)
}

相机的输入映射

这是个对象,它字面上用输入类型作为键,同时用输入设定作为存储值对象。每个输入类型都有其自身的属性.

光源

光源通过如下的JSON格式定义:

{
    "name": string,
    "id": string,
    "tags": string,
    "type": int (0表示点光,1表示方向光, 2表示聚光,3表示球面光),
    "position": vector3,
    "direction": vector3,
    "angle": float (用于点光源),
    "exponent": float (用于点光源),
    "groundColor": color3 (用于球面光光源),
    "intensity": float,
    "range": float,
    "diffuse": color3,
    "specular": color3,
    "excludedMeshesIds": array of string,
    "includedOnlyMeshesIds": array of string,
    "animations": array of Animations (见下面,可以忽略),
    "autoAnimate": boolean,
    "autoAnimateFrom": int,
    "autoAnimateTo": int,
    "autoAnimateLoop": boolean (可以忽略),
    "autoAnimateSpeed": number (可以忽略)
}

材质

一个材质通过如下JSON格式定义:

{
    "name": string,
    "id": string,
    "tags": string,
    "disableDepthWrite": boolean (可以忽略),
    "ambient": color3,
    "diffuse": color3,
    "specular": color3,
    "specularPower": float,
    "emissive": color3,
    "alpha": float,
    "backFaceCulling": boolean,
    "wireframe": boolean,
    "diffuseTexture": Texture (见下面),
    "ambientTexture": Texture (见下面),
    "opacityTexture": Texture (见下面,
    "reflectionTexture": Texture (见下面),
    "refractionTexture": Texture (见下面),
    "indexOfRefraction": float,
    "emissiveTexture": Texture (见下面),
    "specularTexture": Texture (见下面),
    "bumpTexture": Texture (见下面),
    "lightmapTexture": Texture (见下面),
    "useLightmapAsShadowmap": boolean,
    "checkReadyOnlyOnce": boolean
    "useReflectionFresnelFromSpecular": boolean (可以忽略),
    "useEmissiveAsIllumination": boolean (可以忽略),
    "diffuseFresnelParameters": 菲涅耳参数 (见下面),
    "opacityFresnelParameters": 菲涅耳参数 (见下面),
    "reflectionFresnelParameters": 菲涅耳参数 (见下面),
    "refractionFresnelParameters": 菲涅耳参数 (见下面),
    "emissiveFresnelParameters": 菲涅耳参数 (见下面)
}

菲涅耳参数

菲涅耳参数通过如下的JSON格式定义:

{
    "isEnabled": boolean,
    "leftColor": color3,
    "rightColor": color3,
    "bias": float,
    "power": float
}

纹理

纹理通过如下的JSON个格式定义:

{
    "name": string (文件名),
    "level": float (在01间),
    "hasAlpha": boolean,
    "getAlphaFromRGB": boolean,
    "coordinatesMode": int (0 = 显式, 1 = 球, 2 = 平面, 3 = 立方, 4 = 投影, 5 = 天空盒),
    "uOffset": float,
    "vOffset": float,
    "uScale": float,
    "vScale": float,
    "uAng": float,
    "vAng": float,
    "wAng": float,
    "wrapU": boolean,
    "wrapV": boolean,
    "coordinatesIndex": int,
    "animations": array of Animations (见下面,可以忽略),
    "base64String": string (可以忽略)
}

多纹理

多纹理通过如下JSON格式定义:

{
    "name": string,
    "id": string,
    "tags": string,
    "materials": string数组 (都是子纹理的ID)
}

几何体

几何体的结构如下:

{
    "boxes": array of Boxes (见下面),
    "spheres": array of Spheres (见下面),
    "cylinders": array of Cylinders (见下面),
    "toruses": array of Toruses (见下面),
    "grounds": array of Grounds (见下面),
    "planes": array of Planes (见下面),
    "torusKnots": array of TorusKnots (见下面),
    "vertexData": array of VertexData (见下面)
}

盒子

盒子通过如下的JSON格式定义:

{
    "id": string,
    "size": float,
    "canBeRegenerated": bool,
    "tags": string
}

球体

球体通过如下的JSON格式定义:

{
    "id": string,
    "segments": float,
    "diameter": float,
    "canBeRegenerated": bool,
    "tags": string
}

圆柱体

圆柱体通过如下的JSON格式定义:

{
    "id": string,
    "height": float,
    "diameterTop": float,
    "diameterBottom": float,
    "tessellation": float,
    "subdivisions": integer,
    "canBeRegenerated": bool,
    "tags": string
}

环形体

环型体通过如下的JSON定义:

{
    "id": string,
    "diameter": float,
    "thickness": float,
    "tessellation": float,
    "canBeRegenerated": bool,
    "tags": string
}

地面

地面通过如下的JSON格式定义:

{
    "id": string,
    "width": float,
    "height": float,
    "subdivisions": float,
    "canBeRegenerated": bool,
    "tags": string
}

平面

平面通过如下的JSON格式定义:

{
    "id": string,
    "size": float,
    "canBeRegenerated": bool,
    "tags": string
}

环形节

环形节通过如下的JSON格式定义:

{
    "id": string,
    "radius": float,
    "tube": float,
    "radialSegments": float,
    "tubularSegments": float,
    "p": float,
    "q": float,
    "canBeRegenerated": bool,
    "tags": string
}

顶点数据

顶点数据通过如下的JSON格式定义:

{
    "id": string,
    "updatable": bool,
    "positions": array of floats (每顶点3个数值),
    "normals": array of floats (每顶点3个数值),
    "uvs": array of floats (每顶点2个数值),
    "uv2s": array of floats (每顶点2个数值) 第2个纹理坐标 (可以忽略),
    "uv3s": array of floats (每顶点2个数值) 第3个纹理坐标 (可以忽略),
    "uv4s": array of floats (每顶点2个数值) 第4个纹理坐标 (可以忽略),
    "uv5s": array of floats (每顶点2个数值) 第5个纹理坐标 (可以忽略),
    "uv6s": array of floats (每顶点2个数值) 第6个纹理坐标 (可以忽略),
    "colors": array of floats (每顶点3个数值)每个顶点的颜色 (可以忽略),
    "matricesIndices": array of ints (每顶点4个数值) 骨骼数据在矩阵数组里的索引 (可以忽略),
    "matricesWeights": array of floats (每顶点4个数值) 骨骼数据在矩阵数组里的权重  (可以忽略),
    "indices": array of ints (每面点3个数值),
    "tags": string
}

实例

实例通过如下的JSON格式定义:

{
    "name": string,
    "tags": string,
    "position": vector3,
    "rotation": vector3 (可以忽略),
    "rotationQuaternion": vector4 (可以忽略),
    "scaling": vector3
}

网格

网格通过如下的JSON格式定义:

{
    "name": string,
    "id": string,
    "tags": string,
    "parentId": string,
    "materialId": string,
    "geometryId": string (可以忽略),
    "position": vector3,
    "rotation": vector3 (可以忽略),
    "rotationQuaternion": vector4 (可以忽略),
    "scaling": vector3,
    "pivotMatrix": matrix,
    "freezeWorldMatrix": boolean (可以忽略),
    "infiniteDistance": boolean,
    "showBoundingBox": boolean,
    "showSubMeshesBoundingBox": boolean,
    "isVisible": boolean,
    "isEnabled": boolean,
    "pickable": boolean,
    "applyFog": boolean,
    "alphaIndex": int,
    "checkCollisions": boolean,
    "billboardMode": int (0 = None, 1 = X, 2 = Y, 4 = Z, 7 = All),
    "receiveShadows": boolean,
    "physicsImpostor": int (0 = None, 1 = Box, 2 = Sphere),
    "physicsMass": float,
    "physicsFriction": float,
    "physicsRestitution": float,
    "positions": array of floats (每顶点3个数值),
    "normals": array of floats (每顶点3个数值),
    "uvs": array of floats (每顶点2个数值),
    "uvs2": array of floats (每顶点2个数值)  第2个纹理坐标(可以忽略),
    "uv3s": array of floats (每顶点2个数值)  第3个纹理坐标 (可以忽略),
    "uv4s": array of floats (每顶点2个数值)  第5个纹理坐标 (可以忽略),
    "uv5s": array of floats (每顶点2个数值)  第6个纹理坐标 (可以忽略),
    "uv6s": array of floats (每顶点2个数值)  第7个纹理坐标 (可以忽略),
    "colors": array of floats (每顶点4个数值) 每个顶点的颜色 (可以忽略),
    "hasVertexAlpha": 指明颜色是否包含透明信息的值(可以忽略),
    "matricesIndices": array of ints (每顶点4个数值)  骨骼数据在矩阵数组里的索引  (可以忽略),
    "matricesWeights": array of floats (每顶点4个数值)  骨骼数据在矩阵数组里的权重 (可以忽略),
    "indices": array of ints (每面3个数值,
    "subMeshes": array of SubMeshes (见下面),
    "animations": array of Animations (见下面, 可以忽略),
    "autoAnimate": boolean,
    "autoAnimateFrom": int,
    "autoAnimateTo": int,
    "autoAnimateLoop": boolean,
    "autoAnimateSpeed": number (可以忽略)
    "instances": array of Instances (见下面, 可以忽略),
    "actions": array of actions (见下面)
}

请注意,父网格的描述必须在其子节点出现之前。

子网格

子网格通过如下的JSON格式定义:

{
    "materialIndex": int,
    "verticesStart": int,
    "verticesCount": int,
    "indexStart": int,
    "indexCount": int
}

动画

动画通过如下的JSON格式定义:

{
    "dataType": int (0 = 浮点, 1 = 3元量, 2 = 4元量, 3 = 矩阵),
    "framePerSecond": int,
    "loopBehavior": int (0 = 相对, 1 = 周期, 2 = 常量),
    "name": string,
    "property": string,
    "keys": array of AnimationKeys (见下面),
    "autoAnimate": boolean,
    "autoAnimateFrom": int,
    "autoAnimateTo": int,
    "autoAnimateLoop": boolean
}

动画关键帧

动画关键帧通过如下的JSON格式定义:

{
    "frame": int,
    "values": array of float (取决于播放的值)
}

阴影生成器

阴影生成器通过如下的JSON格式定义:

{
    "useBlurVarianceShadowMap": boolean,
    "useVarianceShadowMap": boolean,
    "usePoissonSampling": boolean,
    "mapSize": int (在642048之间, 必须是2的幂),
    "bias": float,
    "forceBackFacesOnly": float,
    "lightId": string,
    "renderList": array of string (网格的ID)
}

骨架

骨架通过如下的JSON格式定义:

{
    "name": string,
    "id": string,
    "bones": array of Bones (见下面)
    "needInitialSkinMatrix": boolean
}

骨骼

骨骼通过如下的JSON格式定义:

{
    "parentBoneIndex": int,
    "name": string,
    "matrix": matrix,
    "animations": array of Animations (必须是个矩阵类型)
}

粒子系统

粒子系统通过如下的JSON格式定义:

{
     "emitterId": string,
     "gravity": vector3,
     "direction1": vector3,
     "direction2": vector3,
     "minEmitBox": vector3,
     "maxEmitBox": vector3,
     "color1": color3,
     "color2": color3,
     "colorDead": color3,
     "deadAlpha": float,
     "emitRate": float,
     "updateSpeed": float,
     "targetStopFrame": int,
     "minEmitPower": int,
     "maxEmitPower": float,
     "minLifeTime": float,
     "maxLifeTime": float,
     "minSize": float,
     "maxSize": float,
     "minAngularSpeed": float,
     "maxAngularSpeed": float,
     "textureName": string,
     "blendMode": int,
     "capacity": int,
     "textureMask": color4,
     "linkToEmitter": bool,
    "animations": Animations数组 (见下面,可以省略),
    "autoAnimate": boolean,
    "autoAnimateFrom": int,
    "autoAnimateTo": int,
    "autoAnimateLoop": boolean (可以省略),
    "autoAnimateSpeed": number (可以忽略)
}

镜头光晕系统

镜头光晕系统通过如下的JSON格式定义:

{
     "emitterId": string,
     "borderLimit": int,
     "flares": array of LensFlares (见下面)
}

镜头光晕

镜头光晕通过如下的JSON格式定义:

{
     "position": float,
     "size": float,
     "color": color3,
     "textureName": string
}

音效

音效通过如下的JSON格式定义:

{
     "name": string, (要加载的文件名)
     "volume": float, (如果忽略则为1)
     "autoplay": bool, (可忽略)
     "loop": bool, (可忽略)
     "soundTrackId": int, (可忽略)
     "spatialSound": bool, (启用3维音效,可忽略)
     "position": vector3, (如果忽略则为0,0,0)
     "refDistance": float, (可忽略, 默认为1)
     "rolloffFactor": float, (可忽略, 默认为1)
     "maxDistance": float, (可忽略, 默认为100)
     "distanceModel": string, (可忽略, 默认为线性的,其它值: 倒数或指数)
     "panningModel": string, (可忽略, 默认为HRTF, 其它值: 等幂)
     "isDirectional": bool, (启用方向椎体)
     "coneInnerAngle": float, (可忽略,用来设置有向音效)
     "coneOuterAngle": float, (可忽略,用来设置有向音效)
     "coneOuterGain": float, (可忽略,用来设置有向音效)
     "connectedMeshId": string, (网格附着对象的ID)
     "localDirectionToMesh": vector3 (可忽略,默认1,0,0)
}

动作

动作通过如下的JSON格式定义. 动作可以包含多个子的动作.

{
    "type": number, (动作类型. 0 = 触发式, 1 = 动作, 2 = 流控制)
    "name": string, (触发式或流程的动作名)
    "detached": boolean, (节点是否挂载上. 如果detached === true意味着不会被计算)
    "properties": array of properties, (见下面)
    "children": array of Actions,
    "combine": array of Actions (用于组合动画. 例如 name = "CombineAction". 可以为null)
}

属性通过如下JSON格式定义. 属性值总是字符串

{
    "name": string, (属性名)
    "value": string, (属性值. 例如: name = "target" 和 value = "Plane001")
    "targetType": string (BabylonJS动作创建器内部使用的, 指明在哪找到"propertyPath"属性的)
}

例子

这儿是个简单的.babylon文件的例子:

{
    "autoClear": true,
    "clearColor": [0, 0, 0],
    "ambientColor": [0, 0, 0],
    "gravity": [0, -9.81, 0],
    "cameras": [{
        "name": "Camera",
        "id": "Camera",
        "position": [7.4811, 5.3437, -6.5076],
        "target": [-0.3174, 0.8953, 0.3125],
        "fov": 0.8576,
        "minZ": 0.1,
        "maxZ": 100,
        "speed": 1,
        "inertia": 0.9,
        "checkCollisions": false,
        "applyGravity": false,
        "ellipsoid": [0.2, 0.9, 0.2]
    }],
    "activeCamera": "Camera",
    "lights": [{
        "name": "Sun",
        "id": "Sun",
        "type": 1,
        "position": [0.926, 7.3608, 14.1829],
        "direction": [-0.347, -0.4916, -0.7987],
        "intensity": 1,
        "diffuse": [1, 1, 1],
        "specular": [1, 1, 1]
    }],
    "materials": [{
        "name": "Material",
        "id": "Material",
        "ambient": [0.8, 0.8, 0.8],
        "diffuse": [0.64, 0.64, 0.64],
        "specular": [0.5, 0.5, 0.5],
        "specularPower": 50,
        "emissive": [0, 0, 0],
        "alpha": 1,
        "backFaceCulling": true,
        "diffuseTexture": {
            "name": "Metal1.png",
            "level": 1,
            "hasAlpha": 1,
            "coordinatesMode": 0,
            "uOffset": 0,
            "vOffset": 0,
            "uScale": 1,
            "vScale": 1,
            "uAng": 0,
            "vAng": 0,
            "wAng": 0,
            "wrapU": true,
            "wrapV": true,
            "coordinatesIndex": 0
        }
    },
    {
        "name": "Material.001",
        "id": "Material.001",
        "ambient": [0.8, 0.8, 0.8],
        "diffuse": [0.64, 0.64, 0.64],
        "specular": [0.5, 0.5, 0.5],
        "specularPower": 50,
        "emissive": [0, 0, 0],
        "alpha": 1,
        "backFaceCulling": true,
        "diffuseTexture": {
            "name": "concrete5.png",
            "level": 1,
            "hasAlpha": 1,
            "coordinatesMode": 0,
            "uOffset": 0,
            "vOffset": 0,
            "uScale": 5,
            "vScale": 5,
            "uAng": 0,
            "vAng": 0,
            "wAng": 0,
            "wrapU": true,
            "wrapV": true,
            "coordinatesIndex": 0
        }
    }],
    "geometries": {
        "boxes": [{
            "id": "BoxPrimitive",
            "size": 2,
            "canBeRegenerated": true,
            "tags": "Box Primitive Cube CanBeRegenerated"
        }],
        "vertexData": [{
            "id": "CubeGeometry",
            "updatable": false,
            "positions": [ 1, -1, 1, 1, -1, -1, -1, -1, 1, 1, 1, 1, -1, 1, 1, 1, 1, -1, 1, 1, 1, 1, -1, -1, 1, -1, -1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, 1, 1, 1, 1, 1, -1, 1, -1, 1, 1, -1, -1, -1, -1, 1, -1, 1, 1, 1, 1, 1, -1, 1, -1, -1, 1, 1, -1, -1, 1, -1, -1, 1, 1, -1, -1, 1, 1, -1, 1, -1, -1, 1, -1, 1, 1],
            "normals": [0.5773, -0.5773, 0.5773, 0.5773, -0.5773, -0.5773, -0.5773, -0.5773, 0.5773, 0.5773, 0.5773, 0.5773, -0.5773, 0.5773, 0.5773, 0.5773, 0.5773, -0.5773, 0.5773, 0.5773, 0.5773, 0.5773, -0.5773, -0.5773, 0.5773, -0.5773, -0.5773, 0.5773, 0.5773, -0.5773, -0.5773, -0.5773, -0.5773, -0.5773, -0.5773, -0.5773, -0.5773, 0.5773, -0.5773, -0.5773, -0.5773, 0.5773, 0.5773, 0.5773, 0.5773, 0.5773, -0.5773, 0.5773, -0.5773, 0.5773, 0.5773, -0.5773, -0.5773, -0.5773, -0.5773, 0.5773, -0.5773, 0.5773, 0.5773, 0.5773, 0.5773, 0.5773, -0.5773, 0.5773, -0.5773, -0.5773, 0.5773, 0.5773, -0.5773, -0.5773, 0.5773, -0.5773, -0.5773, 0.5773, 0.5773, -0.5773, -0.5773, 0.5773, 0.5773, -0.5773, 0.5773, -0.5773, -0.5773, 0.5773, -0.5773, 0.5773, 0.5773],
            "uvs": [0.5, 0.5, 0.5, 0, 0, 0.5, 0.5, 1, 0, 1, 0.5, 0.5, 0.5, 1, 0, 0.5, 0.5, 0.5, 0.5, 1, 0, 0.5, 0.5, 0.5, 0.5, 1, 1, 0.5, 0.5, 0.5, 0.5, 0, 0, 0.5, 0, 0, 0, 0.5, 0.5, 1, 0, 1, 0, 0.5, 0.5, 1, 0, 1, 1, 1, 1, 0.5, 0.5, 0, 0, 0, 0, 0.5],
            "indices": [0, 1, 2, 3, 4, 5, 0, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 1, 17, 2, 4, 18, 5, 19, 20, 21, 22, 23, 10, 12, 24, 25, 26, 27, 28]
        }]
    },
    "meshes": [{
        "name": "Plane",
        "id": "Plane",
        "materialId": "Material.001",
        "position": [0.0172, -2.9787, -0.5184],
        "rotation": [0, 0, 0],
        "scaling": [87.1479, 0.8635, 87.1479],
        "isVisible": true,
        "isEnabled": true,
        "checkCollisions": false,
        "billboardMode": 0,
        "receiveShadows": true,
        "positions": [-1, 0, -1, 1, 0, -1, -1, 0, 1, 1, 0, 1],
        "normals": [0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0],
        "uvs": [0.0001, 0.0001, 0.9999, 0.0001, 0.0001, 0.9999, 0.9999, 0.9999],
        "indices": [0, 1, 2, 1, 3, 2],
        "subMeshes": [{
            "materialIndex": 0,
            "verticesStart": 0,
            "verticesCount": 4,
            "indexStart": 0,
            "indexCount": 6
        }]
    },
    {
        "name": "Cube",
        "id": "Cube",
        "materialId": "Material",
        "geometryId": "CubeGeometry",
        "position": [0, 0, 0],
        "rotation": [0, 0, 0],
        "scaling": [1, 1, 1],
        "isVisible": true,
        "isEnabled": true,
        "checkCollisions": false,
        "billboardMode": 0,
        "receiveShadows": false,
        "subMeshes": [{
            "materialIndex": 0,
            "verticesStart": 0,
            "verticesCount": 29,
            "indexStart": 0,
            "indexCount": 36
        }],
        "animations": [{
            "dataType": 1,
            "framePerSecond": 30,
            "loopBehavior": 1,
            "name": "position animation",
            "property": "position",
            "keys": [{
                "frame": 0,
                "values": [0,0,0.0291]
            },
            {
                "frame": 1,
                "values": [0,0,0.0291]
            },
            {
                "frame": 30,
                "values": [0,0,10]
            },
            {
                "frame": 60,
                "values": [0,0,9.975]
            },
            {
                "frame": 90,
                "values": [0,0,0]
            },
            {
                "frame": 250,
                "values": [0,0,0]
            }]
        },
        {
            "dataType": 1,
            "framePerSecond": 30,
            "loopBehavior": 1,
            "name": "rotation animation",
            "property": "rotation",
            "keys": [{
                "frame": 0,
                "values": [-0.016, 0, 0]
            },
            {
                "frame": 30,
                "values": [-0.016, 0, 0]
            },
            {
                "frame": 60,
                "values": [-6.2832, 0, 0]
            },
            {
                "frame": 250,
                "values": [-6.2832, 0, 0]
            }]
        }],
        "autoAnimate": true,
        "autoAnimateFrom": 0,
        "autoAnimateTo": 250,
        "autoAnimateLoop": true
    },
    {
        "name": "Cube2",
        "id": "Cube2",
        "materialId": "Material",
        "geometryId": "CubeGeometry",
        "position": [10, 0, 0],
        "rotation": [0, 0, 0],
        "scaling": [1, 1, 1],
        "isVisible": true,
        "isEnabled": true,
        "checkCollisions": false,
        "billboardMode": 0,
        "receiveShadows": false,
        "subMeshes": [{
            "materialIndex": 0,
            "verticesStart": 0,
            "verticesCount": 29,
            "indexStart": 0,
            "indexCount": 36
        }]
    },
    {
        "name": "Cube3",
        "id": "Cube3",
        "materialId": "Material",
        "geometryId": "BoxPrimitive",
        "position": [-10, 0, 0],
        "rotation": [0, 0, 0],
        "scaling": [1, 1, 1],
        "isVisible": true,
        "isEnabled": true,
        "checkCollisions": false,
        "billboardMode": 0,
        "receiveShadows": false,
        "subMeshes": [{
            "materialIndex": 0,
            "verticesStart": 0,
            "verticesCount": 29,
            "indexStart": 0,
            "indexCount": 36
        }]
    }],
    "multiMaterials": [],
    "shadowGenerators": [{
        "useVarianceShadowMap": true,
        "mapSize": 1024,
        "lightId": "Sun",
        "renderList": ["Cube", "Cube2", "Cube3"]
    }],
    "skeletons": [],
    "sounds": [{
        "name": "violons11.wav",
        "volume": 1,
        "autoplay": true,
        "loop": true,
        "soundTrackId": 1
        "spatialSound": true,
        "position": [0, 0, 0]
        "refDistance": 1.0,
        "rolloffFactor": 1.0,
        "maxDistance": 100,
        "distanceModel": "linear",
        "panningModel": "equalpower",
        "isDirectional": false,
        "coneInnerAngle": 90,
        "coneOuterAngle": 180,
        "coneOuterGain": 0,
        "connectedMeshId": 0,
        "localDirectionToMesh": [1, 0, 0]
   }]
}

原文地址:http://doc.babylonjs.com/generals/File_Format_Map_(.babylon)#grounds
github上译文:https://github.com/h53d/babylonjs-doc-cn/blob/master/target/generals/General/File_Format_Map_(.babylon).md

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值