├── README.md ├── extensions └── 2.0 │ └── Khronos │ ├── KHR_implicit_shapes │ ├── README.md │ └── schema │ │ ├── glTF.KHR_implicit_shapes.schema.json │ │ ├── glTF.KHR_implicit_shapes.shape.box.schema.json │ │ ├── glTF.KHR_implicit_shapes.shape.capsule.schema.json │ │ ├── glTF.KHR_implicit_shapes.shape.cylinder.schema.json │ │ ├── glTF.KHR_implicit_shapes.shape.schema.json │ │ └── glTF.KHR_implicit_shapes.shape.sphere.schema.json │ └── KHR_physics_rigid_bodies │ ├── README.md │ ├── figures │ ├── Overview.png │ └── Overview.svg │ └── schema │ ├── geometry.schema.json │ ├── glTF.KHR_physics_rigid_bodies.collision_filter.schema.json │ ├── glTF.KHR_physics_rigid_bodies.joint.drive.schema.json │ ├── glTF.KHR_physics_rigid_bodies.joint.limit.schema.json │ ├── glTF.KHR_physics_rigid_bodies.joint.schema.json │ ├── glTF.KHR_physics_rigid_bodies.material.schema.json │ ├── glTF.KHR_physics_rigid_bodies.schema.json │ ├── node.KHR_physics_rigid_bodies.collider.schema.json │ ├── node.KHR_physics_rigid_bodies.joint.schema.json │ ├── node.KHR_physics_rigid_bodies.motion.schema.json │ ├── node.KHR_physics_rigid_bodies.schema.json │ └── node.KHR_physics_rigid_bodies.trigger.schema.json └── samples ├── Filtering ├── Filtering.bin ├── Filtering.glb ├── Filtering.gltf └── Ground_color.png ├── JointTypes ├── GroundBox_color.png ├── JointTypes.bin ├── JointTypes.glb └── JointTypes.gltf ├── Materials_Friction ├── Materials_Friction.bin ├── Materials_Friction.glb ├── Materials_Friction.gltf └── SlopedFloor_color.png ├── Materials_Restitution ├── BasketballDiffuse.png ├── BasketballNormal.png ├── BasketballRoughness.png ├── Icosphere_color.png ├── Icosphere_roughness.png ├── Materials_Restitution.bin ├── Materials_Restitution.glb ├── Materials_Restitution.gltf └── SlopedFloor_color.png ├── MotionProperties ├── InfInertiaBox_color.png ├── MotionProperties.bin ├── MotionProperties.glb ├── MotionProperties.gltf ├── Plane_color.png └── WobblyToy_color.png ├── Robot_skinned ├── GridFloor_color.png ├── Robot_skinned.bin ├── Robot_skinned.glb ├── Robot_skinned.gltf ├── robot_TinRobot_BaseColor.png ├── robot_TinRobot_Metallic_png-robot_TinRobot_Roughness_png.png └── robot_TinRobot_Normal.png ├── ShapeTypes ├── GroundBox_color.png ├── ShapeTypes.bin ├── ShapeTypes.glb └── ShapeTypes.gltf ├── Triggers ├── SlopedFloor_color.png ├── Triggers.bin ├── Triggers.glb └── Triggers.gltf ├── WaterWheel ├── GeoSphere003_color.png ├── GeoSphere003_roughness.png ├── GridFloor_color.png ├── WaterWheel.bin ├── WaterWheel.glb ├── WaterWheel.gltf ├── WaterWheelStructure.png ├── WaterWheelTrack.png ├── WaterWheel_Albedo.png └── WaterWheel_Tower_Albedo.png └── samplelist.json /README.md: -------------------------------------------------------------------------------- 1 | This repository contains two proposed glTF extensions. 2 | This repository will be kept up to date with [another repository](https://github.com/eoineoineoin/glTF) which contains these extensions suitable for merging into the Khronos glTF repository. In addition, this repository contains some additional samples. These samples will later be merged into the official Khronos samples repository. 3 | 4 | ## KHR_implicit_shapes 5 | 6 | Allows a document to specify primitive geometric types. 7 | 8 | [KHR_implicit_shapes](extensions/2.0/Khronos/KHR_implicit_shapes) 9 | 10 | ## KHR_physics_rigid_bodies 11 | 12 | Adds properties to nodes, enabling them to participate in a rigid body physics simulation. 13 | [KHR_physics_rigid_bodies](extensions/2.0/Khronos/KHR_physics_rigid_bodies) 14 | 15 | ## Known Implementations 16 | 17 | [Blender importer/exporter](https://github.com/eoineoineoin/glTF_Physics_Blender_Exporter) 18 | 19 | [Babylon.js importer](https://github.com/eoineoineoin/glTF_Physics_Babylon) 20 | 21 | [Godot importer](https://github.com/eoineoineoin/glTF_Physics_Godot_Importer) 22 | 23 | ## Validator 24 | 25 | [glTF validator](https://github.com/eoineoineoin/glTF-Validator) 26 | -------------------------------------------------------------------------------- /extensions/2.0/Khronos/KHR_implicit_shapes/README.md: -------------------------------------------------------------------------------- 1 | # KHR_implicit_shapes 2 | 3 | ## Contributors 4 | 5 | * Eoin Mcloughlin, Microsoft, 6 | * Rory Mullane, Microsoft, 7 | * George Tian, Microsoft, 8 | * Aaron Franke, Godot Engine, 9 | * Eric Griffith, Meta, 10 | * Janine Liu, Cesium, 11 | * Sean Lilley, Cesium, 12 | 13 | ## Status 14 | 15 | Draft 16 | 17 | ## Dependencies 18 | 19 | Written against glTF 2.0 spec. 20 | 21 | ## Overview 22 | 23 | This extension adds data definitions for implicit shapes. This extension does not mandate any particular behaviour for these objects aside from a description of their geometry. These types are to be used in combination with other extensions which should specify the behavior of these types. 24 | 25 | ## glTF Schema Updates 26 | 27 | ### Shapes 28 | 29 | This extension provides a set of document-level objects, which can be referenced by objects in a glTF document. 30 | 31 | Shapes are defined within a dictionary property in the glTF scene description file, by adding an `extensions` property to the top-level glTF 2.0 object and defining a `KHR_implicit_shapes` property with a `shapes` array inside it. 32 | 33 | Each shape defines a mandatory `type` property which designates the type of shape, as well as an additional structure which provides parameterizations specific to that type. The following example defines a sphere. 34 | 35 | ```javascript 36 | "extensions": { 37 | "KHR_implicit_shapes" : { 38 | "shapes": [ 39 | { 40 | "sphere": { "radius": 0.1 }, 41 | "type": "sphere" 42 | } 43 | ] 44 | } 45 | } 46 | ``` 47 | 48 | To describe the geometry which represents the object, shapes must define at most one of the following properties: 49 | 50 | | |Type|Description| 51 | |-|-|-| 52 | |**sphere**|`object`|A sphere centered at the origin in local space.| 53 | |**box**|`object`|An axis-aligned box centered at the origin in local space.| 54 | |**cylinder**|`object`|A cylinder centered at the origin and aligned along the Y axis in local space, with potentially different radii at each end. A cone is a special case of cylinder when one of the radii is zero.| 55 | |**capsule**|`object`|A capsule (cylinder with hemispherical ends) centered at the origin and defined by two "capping" spheres with potentially different radii, aligned along the Y axis in local space.| 56 | 57 | When the `type` of a shape refers to a shape type defined by this extension, the shape must not supply a value for a different shape type e.g. a shape whose `type` is "box" must not have a defined `sphere` property. Similarly, if `type` does not reference a shape type declared by `KHR_implicit_shapes`, an extension or other mechanism should supply an alternate shape definition. 58 | 59 | Degenerate shapes are prohibited. A sphere must have a positive, non-zero radius. A box shape must have positive non-zero values for each component of `size`. The capsule shape must have a positive, non-zero `height` and both `radiusTop` and `radiusBottom` must be positive. A cylinder shape must have a positive, non-zero `height`, both `radiusTop` and `radiusBottom` must be non-negative, and at least one of `radiusTop` and `radiusBottom` must be non-zero. 60 | 61 | ### JSON Schema 62 | 63 | * **JSON schema**: [glTF.KHR_implicit.schema.json](schema/glTF.KHR_implicit_shapes.schema.json) 64 | 65 | ### Object Model 66 | 67 | With consideration to the glTF 2.0 Asset Object Model Specification document, the following pointer templates represent mutable properties defined in this extension. 68 | 69 | | Pointer | Type| 70 | |-|-| 71 | | `/extensions/KHR_implicit_shapes/shapes/{}/box/size` | `float3`| 72 | | `/extensions/KHR_implicit_shapes/shapes/{}/capsule/height` | `float`| 73 | | `/extensions/KHR_implicit_shapes/shapes/{}/capsule/radiusBottom` | `float`| 74 | | `/extensions/KHR_implicit_shapes/shapes/{}/capsule/radiusTop` | `float`| 75 | | `/extensions/KHR_implicit_shapes/shapes/{}/cylinder/height` | `float`| 76 | | `/extensions/KHR_implicit_shapes/shapes/{}/cylinder/radiusBottom` | `float`| 77 | | `/extensions/KHR_implicit_shapes/shapes/{}/cylinder/radiusTop` | `float`| 78 | | `/extensions/KHR_implicit_shapes/shapes/{}/sphere/radius` | `float`| 79 | 80 | Additional read-only properties 81 | 82 | | Pointer | Type| 83 | |-|-| 84 | | `/extensions/KHR_implicit_shapes/shapes.length` | `int`| 85 | 86 | ## Known Implementations 87 | 88 | [Blender importer/exporter](https://github.com/eoineoineoin/glTF_Physics_Blender_Exporter) 89 | 90 | [Babylon.js importer](https://github.com/eoineoineoin/glTF_Physics_Babylon) 91 | 92 | [Godot importer](https://github.com/eoineoineoin/glTF_Physics_Godot_Importer) 93 | 94 | ## Appendix: Full Khronos Copyright Statement 95 | 96 | Copyright 2021-2023 The Khronos Group Inc. 97 | 98 | This specification is protected by copyright laws and contains material proprietary 99 | to Khronos. Except as described by these terms, it or any components 100 | may not be reproduced, republished, distributed, transmitted, displayed, broadcast, 101 | or otherwise exploited in any manner without the express prior written permission 102 | of Khronos. 103 | 104 | This specification has been created under the Khronos Intellectual Property Rights 105 | Policy, which is Attachment A of the Khronos Group Membership Agreement available at 106 | https://www.khronos.org/files/member_agreement.pdf. Khronos grants a conditional 107 | copyright license to use and reproduce the unmodified specification for any purpose, 108 | without fee or royalty, EXCEPT no licenses to any patent, trademark or other 109 | intellectual property rights are granted under these terms. Parties desiring to 110 | implement the specification and make use of Khronos trademarks in relation to that 111 | implementation, and receive reciprocal patent license protection under the Khronos 112 | IP Policy must become Adopters under the process defined by Khronos for this specification; 113 | see https://www.khronos.org/conformance/adopters/file-format-adopter-program. 114 | 115 | Some parts of this Specification are purely informative and do not define requirements 116 | necessary for compliance and so are outside the Scope of this Specification. These 117 | parts of the Specification are marked as being non-normative, or identified as 118 | **Implementation Notes**. 119 | 120 | Where this Specification includes normative references to external documents, only the 121 | specifically identified sections and functionality of those external documents are in 122 | Scope. Requirements defined by external documents not created by Khronos may contain 123 | contributions from non-members of Khronos not covered by the Khronos Intellectual 124 | Property Rights Policy. 125 | 126 | Khronos makes no, and expressly disclaims any, representations or warranties, 127 | express or implied, regarding this specification, including, without limitation: 128 | merchantability, fitness for a particular purpose, non-infringement of any 129 | intellectual property, correctness, accuracy, completeness, timeliness, and 130 | reliability. Under no circumstances will Khronos, or any of its Promoters, 131 | Contributors or Members, or their respective partners, officers, directors, 132 | employees, agents or representatives be liable for any damages, whether direct, 133 | indirect, special or consequential damages for lost revenues, lost profits, or 134 | otherwise, arising from or in connection with these materials. 135 | 136 | Khronos® and Vulkan® are registered trademarks, and ANARI™, WebGL™, glTF™, NNEF™, OpenVX™, 137 | SPIR™, SPIR‑V™, SYCL™, OpenVG™ and 3D Commerce™ are trademarks of The Khronos Group Inc. 138 | OpenXR™ is a trademark owned by The Khronos Group Inc. and is registered as a trademark in 139 | China, the European Union, Japan and the United Kingdom. OpenCL™ is a trademark of Apple Inc. 140 | and OpenGL® is a registered trademark and the OpenGL ES™ and OpenGL SC™ logos are trademarks 141 | of Hewlett Packard Enterprise used under license by Khronos. ASTC is a trademark of 142 | ARM Holdings PLC. All other product names, trademarks, and/or company names are used solely 143 | for identification and belong to their respective owners. 144 | -------------------------------------------------------------------------------- /extensions/2.0/Khronos/KHR_implicit_shapes/schema/glTF.KHR_implicit_shapes.schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json-schema.org/draft/2020-12/schema", 3 | "$id": "glTF.KHR_implicit_shapes.schema.json", 4 | "title": "KHR_implicit_shapes glTF Document Extension", 5 | "type": "object", 6 | "description": "Top level implicit shapes.", 7 | "allOf": [ { "$ref" : "glTFProperty.schema.json" } ], 8 | "properties": { 9 | "shapes": { 10 | "type": "array", 11 | "description": "An array of shape descriptions.", 12 | "items": { 13 | "type": "object", 14 | "$ref": "glTF.KHR_implicit_shapes.shape.schema.json" 15 | }, 16 | "minItems": 1 17 | }, 18 | "extensions": { }, 19 | "extras": { } 20 | }, 21 | "required": [ 22 | "shapes" 23 | ] 24 | } 25 | -------------------------------------------------------------------------------- /extensions/2.0/Khronos/KHR_implicit_shapes/schema/glTF.KHR_implicit_shapes.shape.box.schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json-schema.org/draft/2020-12/schema", 3 | "$id": "glTF.KHR_implicit_shapes.shape.box.schema.json", 4 | "title": "KHR_implicit_shapes Box Shape", 5 | "type": "object", 6 | "description": "Parameters describing a box shape.", 7 | "allOf": [ { "$ref": "glTFProperty.schema.json" } ], 8 | "properties": { 9 | "size": { 10 | "type": "array", 11 | "description": "The extents of the box in each axis in local space.", 12 | "items": { 13 | "type": "number", 14 | "exclusiveMinimum": 0.0 15 | }, 16 | "minItems": 3, 17 | "maxItems": 3, 18 | "default": [ 1, 1, 1 ] 19 | }, 20 | "extensions": { }, 21 | "extras": { } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /extensions/2.0/Khronos/KHR_implicit_shapes/schema/glTF.KHR_implicit_shapes.shape.capsule.schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json-schema.org/draft/2020-12/schema", 3 | "$id": "glTF.KHR_implicit_shapes.shape.capsule.schema.json", 4 | "title": "KHR_implicit_shapes Capsule Shape", 5 | "type": "object", 6 | "description": "Parameters describing a capsule shape.", 7 | "allOf": [ { "$ref": "glTFProperty.schema.json" } ], 8 | "properties": { 9 | "height": { 10 | "type": "number", 11 | "description": "The distance between the centers of the two capping spheres of capsule.", 12 | "exclusiveMinimum": 0.0, 13 | "default": 0.5 14 | }, 15 | "radiusBottom": { 16 | "type": "number", 17 | "description": "The radius of the sphere located at the bottom of the capsule (i.e. the sphere at the half-height along -Y)", 18 | "minimum": 0.0, 19 | "default": 0.25 20 | }, 21 | "radiusTop": { 22 | "type": "number", 23 | "description": "The radius of the sphere located at the top of the capsule (i.e. the sphere at the half-height along +Y)", 24 | "minimum": 0.0, 25 | "default": 0.25 26 | }, 27 | "extensions": { }, 28 | "extras": { } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /extensions/2.0/Khronos/KHR_implicit_shapes/schema/glTF.KHR_implicit_shapes.shape.cylinder.schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json-schema.org/draft/2020-12/schema", 3 | "$id": "glTF.KHR_implicit_shapes.shape.cylinder.schema.json", 4 | "title": "KHR_implicit_shapes Cylinder Shape", 5 | "type": "object", 6 | "description": "Parameters describing a cylinder shape.", 7 | "allOf": [ { "$ref": "glTFProperty.schema.json" } ], 8 | "properties": { 9 | "height": { 10 | "type": "number", 11 | "description": "The height of the cylinder, centered along the Y axis.", 12 | "exclusiveMinimum": 0.0, 13 | "default": 0.5 14 | }, 15 | "radiusBottom": { 16 | "type": "number", 17 | "description": "The radius of the bottom of the cylinder (the disk located along -Y.)", 18 | "minimum": 0.0, 19 | "default": 0.25 20 | }, 21 | "radiusTop": { 22 | "type": "number", 23 | "description": "The radius of the top of the cylinder (the disk located along +Y.)", 24 | "minimum": 0.0, 25 | "default": 0.25 26 | }, 27 | "extensions": { }, 28 | "extras": { } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /extensions/2.0/Khronos/KHR_implicit_shapes/schema/glTF.KHR_implicit_shapes.shape.schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json-schema.org/draft/2020-12/schema", 3 | "$id": "glTF.KHR_implicit_shapes.shape.schema.json", 4 | "title": "KHR_implicit_shapes Shape Resource", 5 | "type": "object", 6 | "description": "Parameters describing an implicit shape.", 7 | "allOf": [ { "$ref": "glTFChildOfRootProperty.schema.json" } ], 8 | "properties": { 9 | "type": { 10 | "description": "Specifies the shape type.", 11 | "anyOf": [ 12 | { 13 | "const": "sphere", 14 | "description": "A sphere with a specified radius, centered at the origin in local space." 15 | }, 16 | { 17 | "const": "box", 18 | "description": "An axis-aligned box with a size per-axis, centered at the origin in local space" 19 | }, 20 | { 21 | "const": "capsule", 22 | "description": "A capsule shape, centered at the origin in local space, equivalent to the convex hull of two spheres located along the Y axis (in local space) at a specified distance." 23 | }, 24 | { 25 | "const": "cylinder", 26 | "description": "A cylinder shape, centered at the origin in local space, equivalent to the convex hull of two circles in the X/Z plane positioned along the Y axis at a specified distance." 27 | }, 28 | { 29 | "type": "string" 30 | } 31 | ] 32 | }, 33 | "sphere": { 34 | "type": "object", 35 | "description": "A set of parameter values that are used to define a sphere shape.", 36 | "$ref": "glTF.KHR_implicit_shapes.shape.sphere.schema.json" 37 | }, 38 | "box": { 39 | "type": "object", 40 | "description": "A set of parameter values that are used to define a box shape.", 41 | "$ref": "glTF.KHR_implicit_shapes.shape.box.schema.json" 42 | }, 43 | "capsule": { 44 | "type": "object", 45 | "description": "A set of parameter values that are used to define a capsule shape.", 46 | "$ref": "glTF.KHR_implicit_shapes.shape.capsule.schema.json" 47 | }, 48 | "cylinder": { 49 | "type": "object", 50 | "description": "A set of parameter values that are used to define a cylinder shape.", 51 | "$ref": "glTF.KHR_implicit_shapes.shape.cylinder.schema.json" 52 | }, 53 | "name": { }, 54 | "extensions": { }, 55 | "extras": { } 56 | }, 57 | "required": [ 58 | "type" 59 | ] 60 | } 61 | -------------------------------------------------------------------------------- /extensions/2.0/Khronos/KHR_implicit_shapes/schema/glTF.KHR_implicit_shapes.shape.sphere.schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json-schema.org/draft/2020-12/schema", 3 | "$id": "glTF.KHR_implicit_shapes.shape.sphere.schema.json", 4 | "title": "KHR_implicit_shapes Sphere Shape", 5 | "type": "object", 6 | "description": "Parameters describing a sphere shape.", 7 | "allOf": [ { "$ref": "glTFProperty.schema.json" } ], 8 | "properties": { 9 | "radius": { 10 | "type": "number", 11 | "description": "The radius of the sphere.", 12 | "exclusiveMinimum": 0.0, 13 | "default": 0.5 14 | }, 15 | "extensions": { }, 16 | "extras": { } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /extensions/2.0/Khronos/KHR_physics_rigid_bodies/figures/Overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eoineoineoin/glTF_Physics/04fe68e4030c7e01361f8d19300639aef6008e77/extensions/2.0/Khronos/KHR_physics_rigid_bodies/figures/Overview.png -------------------------------------------------------------------------------- /extensions/2.0/Khronos/KHR_physics_rigid_bodies/figures/Overview.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | meshsceneshapematerialfilterjointnodeThe concepts used in rigid body simulation require the introduction of several new top-level elements. Shapes provide a geometric representation of objects for collision detection while filters and materials describe how they behave. Joints describe physical connections between nodes.shapes Provided by the KHR_implicit_shapes extensionfilters, materials, joints Added by this extensionRelationshipsThese new elemements relate to the existing glTF objects as illustrated here: 361 | -------------------------------------------------------------------------------- /extensions/2.0/Khronos/KHR_physics_rigid_bodies/schema/geometry.schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json-schema.org/draft/2020-12/schema", 3 | "$id": "node.KHR_physics_rigid_bodies.collider.schema.json", 4 | "title": "KHR_physics_rigid_bodies Node Collider Property", 5 | "type": "object", 6 | "description": "Parameters describing a shape used for collison detection and response.", 7 | "allOf": [ { "$ref": "glTFProperty.schema.json" } ], 8 | "properties": { 9 | "convexHull": { 10 | "type": "boolean", 11 | "description": "Specifies whether the geometry should be used to generate a convex hull.", 12 | "gltf_detailedDescription": "Specifies how the collision shape is generated from the geometry. When this value is false, the collision volume of this shape is determined byt the node or shape property. When this value is true, this shape should be a convex hull generated by the shape or node.", 13 | "default": false 14 | }, 15 | "extensions": { }, 16 | "extras": { } 17 | }, 18 | "oneOf": [ 19 | "shape": { 20 | "allOf": [{ "$ref": "glTFid.schema.json" }], 21 | "description": "The index of the shape in the top level shapes array." 22 | }, 23 | "node": { 24 | "allOf": [{ "$ref": "glTFid.schema.json" }], 25 | "description": "The index of a node providing mesh geometry." 26 | } 27 | ], 28 | "required": [ 29 | "shape" 30 | ] 31 | } 32 | -------------------------------------------------------------------------------- /extensions/2.0/Khronos/KHR_physics_rigid_bodies/schema/glTF.KHR_physics_rigid_bodies.collision_filter.schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json-schema.org/draft/2020-12/schema", 3 | "$id": "glTF.KHR_physics_rigid_bodies.collision_filter.schema.json", 4 | "title": "KHR_physics_rigid_bodies Collision Filter", 5 | "type": "object", 6 | "description": "Parameters describing a parameterization of a collision filter, allowing for disabling collision between pairs of shapes.", 7 | "allOf": [ { "$ref": "glTFChildOfRootProperty.schema.json" } ], 8 | "properties": { 9 | "collisionSystems": { 10 | "type": "array", 11 | "description": "An array of strings representing the names of the collision systems of which this object is a member.", 12 | "items": { 13 | "type": "string" 14 | } 15 | }, 16 | "collideWithSystems": { 17 | "type": "array", 18 | "description": "An array of strings representing the name of the collision systems which this object can collide with.", 19 | "items": { 20 | "type": "string" 21 | } 22 | }, 23 | "notCollideWithSystems": { 24 | "type": "array", 25 | "description": "An array of strings representing the names of the collision systems which this object does not collide with.", 26 | "items": { 27 | "type": "string" 28 | } 29 | }, 30 | "extensions": { }, 31 | "extras": { } 32 | }, 33 | "not": { 34 | "anyOf": [ 35 | { "required": [ "collideWithSystems", "notCollideWithSystems" ] } 36 | ] 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /extensions/2.0/Khronos/KHR_physics_rigid_bodies/schema/glTF.KHR_physics_rigid_bodies.joint.drive.schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json-schema.org/draft/2020-12/schema", 3 | "$id": "glTF.KHR_physics_rigid_bodies.joint.drive.schema.json", 4 | "title": "KHR_physics_rigid_bodies Physics Joint Drive", 5 | "type": "object", 6 | "description": "Parameters describing a drive or motor which applies forces within a joint.", 7 | "allOf": [ { "$ref": "glTFProperty.schema.json" } ], 8 | "properties": { 9 | "type": { 10 | "description": "Determines the degree of freedom which this drive controls.", 11 | "anyOf": [ 12 | { 13 | "const": "linear", 14 | "description": "The drive applies a linear force along the driven axis." 15 | }, 16 | { 17 | "const": "angular", 18 | "description": "The drive applies a torque about the driven axis." 19 | }, 20 | { 21 | "type": "string" 22 | } 23 | ] 24 | }, 25 | "mode": { 26 | "description": "Specifies the force calculation mode.", 27 | "anyOf": [ 28 | { 29 | "const": "force", 30 | "description": "Value computed from the spring equation is the force to apply along the axis." 31 | }, 32 | { 33 | "const": "acceleration", 34 | "description": "Value computed from the spring equation is the acceleration to apply along the axis." 35 | }, 36 | { 37 | "type": "string" 38 | } 39 | ] 40 | }, 41 | "axis": { 42 | "type": "integer", 43 | "minimum": 0, 44 | "maximum": 2, 45 | "description": "The index of the axis which this drive applies forces on." 46 | }, 47 | "maxForce": { 48 | "type": "number", 49 | "description": "The maximum force (or torque, for angular drives) the drive can apply. If not provided, this drive is not force-limited.", 50 | "minimum": 0 51 | }, 52 | "positionTarget": { 53 | "type": "number", 54 | "description": "The target translation or angle along/about the axis that this drive attempts to achieve." 55 | }, 56 | "velocityTarget": { 57 | "type": "number", 58 | "description": "The target linear velocity or angular velocity along/about the axis that this drive attempts to achieve." 59 | }, 60 | "stiffness": { 61 | "type": "number", 62 | "description": "The stiffness of the drive, scaling the force based on the position target.", 63 | "default": 0, 64 | "minimum": 0 65 | }, 66 | "damping": { 67 | "type": "number", 68 | "description": "The damping of the drive, scaling the force based on the velocity target.", 69 | "default": 0, 70 | "minimum": 0 71 | } 72 | }, 73 | "required": [ 74 | "type", 75 | "mode", 76 | "axis" 77 | ], 78 | "dependencies": { 79 | "positionTarget": [ "stiffness" ], 80 | "stiffness": [ "positionTarget" ], 81 | "velocityTarget": [ "damping" ], 82 | "damping": [ "velocityTarget" ] 83 | } 84 | } 85 | -------------------------------------------------------------------------------- /extensions/2.0/Khronos/KHR_physics_rigid_bodies/schema/glTF.KHR_physics_rigid_bodies.joint.limit.schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json-schema.org/draft/2020-12/schema", 3 | "$id": "glTF.KHR_physics_rigid_bodies.joint.limit.schema.json", 4 | "title": "KHR_physics_rigid_bodies Physics Joint Limit", 5 | "type": "object", 6 | "description": "Parameters describing how a joint constrains the relative motion of a pair of nodes.", 7 | "allOf": [ { "$ref": "glTFProperty.schema.json" } ], 8 | "properties": { 9 | "min": { 10 | "type": "number", 11 | "description": "The minimum of the allowed range of relative distance in meters, or angle in radians." 12 | }, 13 | "max": { 14 | "type": "number", 15 | "description": "The maximum of the allowed range of relative distance in meters, or angle in radians." 16 | }, 17 | "stiffness": { 18 | "type": "number", 19 | "description": "The spring constant used to calculate a restorative force when the joint is extended beyond the limit. If not present, the limit should be infinitely stiff.", 20 | "minimum": 0.0 21 | }, 22 | "damping": { 23 | "type": "number", 24 | "description": "Damping applied to the velocity when the joint is extended beyond the limit.", 25 | "minimum": 0.0, 26 | "default": 0.0 27 | }, 28 | "extensions": { }, 29 | "extras": { } 30 | }, 31 | "oneOf": [ 32 | { 33 | "type": "object", 34 | "properties": { 35 | "linearAxes": { 36 | "description": "The indices of the linear axes which are limited, constraining the linear motion in 1, 2 or 3 dimensions. 1D keeps an object some distance from an infinite plane. 2D keeps an object some distance from an infinite line. 3D keeps an object some distance from a point. Can only contain 0 (X), 1 (Y), or 2 (Z), so [0, 1, 2] constrains all three axes.", 37 | "type": "array", 38 | "items": { 39 | "type": "integer", 40 | "minimum": 0, 41 | "maximum": 2 42 | }, 43 | "minItems": 1, 44 | "maxItems": 3, 45 | "uniqueItems": true 46 | } 47 | }, 48 | "required": ["linearAxes"] 49 | }, 50 | { 51 | "type": "object", 52 | "properties": { 53 | "angularAxes": { 54 | "description": "The indices of the angular axes which are limited, constraining the angular motion in 1, 2 or 3 dimensions. 1D limits rotation about one axis (e.g. a universal joint). 2D limits rotation about two axes (e.g. a cone). 3D limits rotation about all three axes. Can only contain 0 (X), 1 (Y), or 2 (Z), so [0, 1, 2] constrains all three axes.", 55 | "type": "array", 56 | "items": { 57 | "type": "integer", 58 | "minimum": 0, 59 | "maximum": 2 60 | }, 61 | "minItems": 1, 62 | "maxItems": 3, 63 | "uniqueItems": true 64 | } 65 | }, 66 | "required": ["angularAxes"] 67 | } 68 | ] 69 | } 70 | -------------------------------------------------------------------------------- /extensions/2.0/Khronos/KHR_physics_rigid_bodies/schema/glTF.KHR_physics_rigid_bodies.joint.schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json-schema.org/draft/2020-12/schema", 3 | "$id": "glTF.KHR_physics_rigid_bodies.joint.schema.json", 4 | "title": "KHR_physics_rigid_bodies Physics Joint", 5 | "type": "object", 6 | "description": "Parameters describing a joint, which may constrain or drive the relative motion of a pair of nodes.", 7 | "allOf": [ { "$ref": "glTFChildOfRootProperty.schema.json" } ], 8 | "properties": { 9 | "limits": { 10 | "type": "array", 11 | "description": "The set of limits which constrain relative motion.", 12 | "items": { 13 | "type": "object", 14 | "$ref": "glTF.KHR_physics_rigid_bodies.joint.limit.schema.json" 15 | } 16 | }, 17 | "drives": { 18 | "type": "array", 19 | "description": "The set of drives applying forces to this joint.", 20 | "items": { 21 | "type": "object", 22 | "$ref": "glTF.KHR_physics_rigid_bodies.joint.drive.schema.json" 23 | } 24 | }, 25 | "extensions": { }, 26 | "extras": { } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /extensions/2.0/Khronos/KHR_physics_rigid_bodies/schema/glTF.KHR_physics_rigid_bodies.material.schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json-schema.org/draft/2020-12/schema", 3 | "$id": "glTF.KHR_physics_rigid_bodies.material.schema.json", 4 | "title": "KHR_physics_rigid_bodies Physics Material", 5 | "type": "object", 6 | "description": "Parameters describing the collision response of a surface in a physics simulation.", 7 | "allOf": [ { "$ref": "glTFChildOfRootProperty.schema.json" } ], 8 | "properties": { 9 | "staticFriction": { 10 | "type": "number", 11 | "description": "The friction used when an object is laying still on a surface. Usually a value from 0 to 1. A value of 0 feels like ice, a value of 1 will make it very hard to get the object moving. Simulations which do not differentiate between static and dynamic friction should use the dynamic friction value.", 12 | "minimum": 0.0, 13 | "default": 0.6 14 | }, 15 | "dynamicFriction": { 16 | "type": "number", 17 | "description": "The friction used when already moving. Usually a value from 0 to 1. A value of 0 feels like ice, a value of 1 will make it come to rest very quickly unless a lot of force or gravity pushes the object.", 18 | "minimum": 0.0, 19 | "default": 0.6 20 | }, 21 | "restitution": { 22 | "type": "number", 23 | "description": "How bouncy is the surface? A value of 0 will not bounce. A value of 1 will bounce without any loss of energy.", 24 | "minimum": 0.0, 25 | "default": 0.0 26 | }, 27 | "frictionCombine": { 28 | "type": "string", 29 | "description": "Determines how friction should be combined when two objects interact.", 30 | "enum": ["average", "minimum", "maximum", "multiply"] 31 | }, 32 | "restitutionCombine": { 33 | "type": "string", 34 | "description": "Determines how restitution should be combined when two objects interact.", 35 | "enum": ["average", "minimum", "maximum", "multiply"] 36 | }, 37 | "extensions": { }, 38 | "extras": { } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /extensions/2.0/Khronos/KHR_physics_rigid_bodies/schema/glTF.KHR_physics_rigid_bodies.schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json-schema.org/draft/2020-12/schema", 3 | "$id": "glTF.KHR_physics_rigid_bodies.schema.json", 4 | "title": "KHR_physics_rigid_bodies glTF Document Extension", 5 | "type": "object", 6 | "description": "Top level physics properties and resources.", 7 | "allOf": [ { "$ref": "glTFProperty.schema.json" } ], 8 | "properties": { 9 | "physicsMaterials": { 10 | "type": "array", 11 | "description": "An array of physics materials.", 12 | "items": { 13 | "type": "object", 14 | "$ref": "glTF.KHR_physics_rigid_bodies.material.schema.json" 15 | }, 16 | "minItems": 1 17 | }, 18 | "collisionFilters": { 19 | "type": "array", 20 | "description": "An array of collision filter descriptions.", 21 | "items": { 22 | "type": "object", 23 | "$ref": "glTF.KHR_physics_rigid_bodies.collision_filter.schema.json" 24 | }, 25 | "minItems": 1 26 | }, 27 | "physicsJoints": { 28 | "type": "array", 29 | "description": "An array of physics joint descriptions.", 30 | "items": { 31 | "type": "object", 32 | "$ref": "glTF.KHR_physics_rigid_bodies.joint.schema.json" 33 | }, 34 | "minItems": 1 35 | }, 36 | "extensions": { }, 37 | "extras": { } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /extensions/2.0/Khronos/KHR_physics_rigid_bodies/schema/node.KHR_physics_rigid_bodies.collider.schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json-schema.org/draft/2020-12/schema", 3 | "$id": "node.KHR_physics_rigid_bodies.collider.schema.json", 4 | "title": "KHR_physics_rigid_bodies Node Collider Property", 5 | "type": "object", 6 | "description": "Parameters describing a shape used for collison detection and response.", 7 | "allOf": [ { "$ref": "glTFProperty.schema.json" } ], 8 | "properties": { 9 | "geometry": { 10 | "allOf": [{ "$ref": "geometry.schema.json" }], 11 | "description": "An object describing the geometric representation of this collider" 12 | }, 13 | "physicsMaterial": { 14 | "allOf": [ { "$ref": "glTFid.schema.json" } ], 15 | "description": "The index of the physics material in the top level physicsMaterials array." 16 | }, 17 | "collisionFilter": { 18 | "allOf": [ { "$ref": "glTFid.schema.json" } ], 19 | "description": "The index of the filter information in the top level collisionFilters array." 20 | }, 21 | "extensions": { }, 22 | "extras": { } 23 | }, 24 | "required": [ 25 | "geometry" 26 | ] 27 | } 28 | -------------------------------------------------------------------------------- /extensions/2.0/Khronos/KHR_physics_rigid_bodies/schema/node.KHR_physics_rigid_bodies.joint.schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json-schema.org/draft/2020-12/schema", 3 | "$id": "node.KHR_physics_rigid_bodies.joint.schema.json", 4 | "title": "KHR_physics_rigid_bodies Node Joint Property", 5 | "type": "object", 6 | "description": "Parameters describing how the relative motion of a pair of nodes is constrained.", 7 | "allOf": [ { "$ref": "glTFProperty.schema.json" } ], 8 | "properties": { 9 | "connectedNode": { 10 | "allOf": [{"$ref": "glTFid.schema.json"}], 11 | "description": "The index of the node to which this is connected." 12 | }, 13 | "joint": { 14 | "allOf": [ { "$ref": "glTFid.schema.json" } ], 15 | "description": "The index of the joint in the top level physicsJoints array." 16 | }, 17 | "enableCollision": { 18 | "type": "boolean", 19 | "description": "If true, allow the connected objects to collide. Connected objects do not collide by default.", 20 | "default": false 21 | }, 22 | "extensions": { }, 23 | "extras": { } 24 | }, 25 | "required": [ "connectedNode", "joint" ] 26 | } 27 | -------------------------------------------------------------------------------- /extensions/2.0/Khronos/KHR_physics_rigid_bodies/schema/node.KHR_physics_rigid_bodies.motion.schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json-schema.org/draft/2020-12/schema", 3 | "$id": "node.KHR_physics_rigid_bodies.motion.schema.json", 4 | "title": "KHR_physics_rigid_bodies Node Motion Property", 5 | "type": "object", 6 | "description": "Parameters describing how a node's transform should be driven by physics simulation.", 7 | "allOf": [ { "$ref": "glTFProperty.schema.json" } ], 8 | "properties": { 9 | "isKinematic": { 10 | "type": "boolean", 11 | "description": "If enabled, the object effectively has infinite mass. It's velocity will remain constant during physics simulation.", 12 | "default": false 13 | }, 14 | "mass": { 15 | "type": "number", 16 | "description": "The mass of the object.", 17 | "exclusiveMinimum": 0.0 18 | }, 19 | "centerOfMass": { 20 | "type": "array", 21 | "description": "The center of mass of the object in local space.", 22 | "items": { 23 | "type": "number" 24 | }, 25 | "minItems": 3, 26 | "maxItems": 3 27 | }, 28 | "inertiaDiagonal": { 29 | "type": "array", 30 | "description": "The principal moments of inertia. Larger values imply the rigid body is harder to rotate.", 31 | "items": { 32 | "type": "number", 33 | "exclusiveMinimum": 0.0 34 | }, 35 | "minItems": 3, 36 | "maxItems": 3 37 | }, 38 | "inertiaOrientation": { 39 | "type": "array", 40 | "description": "The rotation quaternion rotating from inertia major axis space to body space.", 41 | "items": { 42 | "type": "number" 43 | }, 44 | "minItems": 4, 45 | "maxItems": 4 46 | }, 47 | "linearVelocity": { 48 | "type": "array", 49 | "description": "The initial linear velocity of the object.", 50 | "items": { 51 | "type": "number" 52 | }, 53 | "minItems": 3, 54 | "maxItems": 3, 55 | "default": [ 0.0, 0.0, 0.0 ] 56 | }, 57 | "angularVelocity": { 58 | "type": "array", 59 | "description": "The initial angular velocity of the object.", 60 | "items": { 61 | "type": "number" 62 | }, 63 | "minItems": 3, 64 | "maxItems": 3, 65 | "default": [ 0.0, 0.0, 0.0 ] 66 | }, 67 | "gravityFactor": { 68 | "type": "number", 69 | "description": "A multiplier applied to the acceleration due to gravity.", 70 | "default": 1.0 71 | }, 72 | "extensions": { }, 73 | "extras": { } 74 | } 75 | } 76 | -------------------------------------------------------------------------------- /extensions/2.0/Khronos/KHR_physics_rigid_bodies/schema/node.KHR_physics_rigid_bodies.schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json-schema.org/draft/2020-12/schema", 3 | "$id": "node.KHR_physics_rigid_bodies.schema.json", 4 | "title": "KHR_physics_rigid_bodies glTF Node Extension", 5 | "type": "object", 6 | "description": "Physics properties for a node.", 7 | "allOf": [ { "$ref": "glTFProperty.schema.json" } ], 8 | "properties": { 9 | "motion": { 10 | "allOf": [ { "$ref": "node.KHR_physics_rigid_bodies.motion.schema.json" } ], 11 | "description": "A set of parameter values that enable this node and its children to be moved by physics simuation." 12 | }, 13 | "collider": { 14 | "allOf": [ { "$ref": "node.KHR_physics_rigid_bodies.collider.schema.json" } ], 15 | "description": "A set of parameter values that are used to provide a collision geometry for physics simulation." 16 | }, 17 | "trigger": { 18 | "allOf": [ { "$ref": "node.KHR_physics_rigid_bodies.trigger.schema.json" } ], 19 | "description": "A set of parameter values that are used to provide a collision geometry for trigger events." 20 | }, 21 | "joint": { 22 | "allOf": [ { "$ref": "node.KHR_physics_rigid_bodies.joint.schema.json" } ], 23 | "description": "A set of parameter values that are used to constrain how this node moves relative to another during physics simulation." 24 | }, 25 | "extensions": { }, 26 | "extras": { } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /extensions/2.0/Khronos/KHR_physics_rigid_bodies/schema/node.KHR_physics_rigid_bodies.trigger.schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json-schema.org/draft/2020-12/schema", 3 | "$id": "node.KHR_physics_rigid_bodies.trigger.schema.json", 4 | "title": "KHR_physics_rigid_bodies Node Trigger Property", 5 | "type": "object", 6 | "description": "Parameters describing a volume used for collison detection, but does not cause a collision response.", 7 | "allOf": [{ "$ref": "glTFProperty.schema.json" }], 8 | "properties": { 9 | "geometry": { 10 | "allOf": [{ "$ref": "geometry.schema.json" }], 11 | "description": "An object describing the geometric representation of this trigger" 12 | }, 13 | "nodes": { 14 | "type": "array", 15 | "description": "For compound triggers, the set of descendant glTF nodes with a trigger property that make up this compound trigger.", 16 | "items": { 17 | "$ref": "glTFid.schema.json" 18 | }, 19 | "uniqueItems": true, 20 | "minItems": 1 21 | }, 22 | "collisionFilter": { 23 | "allOf": [{ "$ref": "glTFid.schema.json" }], 24 | "description": "The index of the filter information in the top level collisionFilters array." 25 | }, 26 | "extensions": { }, 27 | "extras": { } 28 | }, 29 | "anyOf": [ 30 | { 31 | "allOf": [ 32 | { "required": ["geometry"] }, 33 | { "not": { "required": ["nodes"] } } 34 | ] 35 | }, 36 | { 37 | "allOf": [ 38 | { "required": ["nodes"] }, 39 | { "not": { "required": ["geometry"] } }, 40 | { "not": { "required": ["collisionFilter"] } } 41 | ] 42 | } 43 | ] 44 | } 45 | -------------------------------------------------------------------------------- /samples/Filtering/Filtering.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eoineoineoin/glTF_Physics/04fe68e4030c7e01361f8d19300639aef6008e77/samples/Filtering/Filtering.bin -------------------------------------------------------------------------------- /samples/Filtering/Filtering.glb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eoineoineoin/glTF_Physics/04fe68e4030c7e01361f8d19300639aef6008e77/samples/Filtering/Filtering.glb -------------------------------------------------------------------------------- /samples/Filtering/Filtering.gltf: -------------------------------------------------------------------------------- 1 | { 2 | "asset":{ 3 | "generator":"Khronos glTF Blender I/O v4.4.55", 4 | "version":"2.0" 5 | }, 6 | "extensionsUsed":[ 7 | "KHR_implicit_shapes", 8 | "KHR_physics_rigid_bodies", 9 | "KHR_lights_punctual" 10 | ], 11 | "extensionsRequired":[ 12 | "KHR_lights_punctual" 13 | ], 14 | "extensions":{ 15 | "KHR_implicit_shapes":{ 16 | "shapes":[ 17 | { 18 | "type":"box", 19 | "box":{ 20 | "size":[ 21 | 10.125984191894531, 22 | 0.30352783203125, 23 | 5.202268600463867 24 | ] 25 | } 26 | }, 27 | { 28 | "type":"box", 29 | "box":{ 30 | "size":[ 31 | 1, 32 | 1, 33 | 1 34 | ] 35 | } 36 | } 37 | ] 38 | }, 39 | "KHR_physics_rigid_bodies":{ 40 | "physicsMaterials":[ 41 | { 42 | "staticFriction":0.5, 43 | "dynamicFriction":0.5, 44 | "restitution":0 45 | } 46 | ], 47 | "collisionFilters":[ 48 | { 49 | "collisionSystems":[ 50 | "System_0", 51 | "System_1" 52 | ], 53 | "collideWithSystems":[ 54 | "System_0", 55 | "System_1" 56 | ] 57 | }, 58 | { 59 | "collisionSystems":[ 60 | "System_1" 61 | ], 62 | "collideWithSystems":[ 63 | "System_1" 64 | ] 65 | }, 66 | { 67 | "collisionSystems":[ 68 | "System_0" 69 | ], 70 | "collideWithSystems":[ 71 | "System_0" 72 | ] 73 | } 74 | ] 75 | }, 76 | "KHR_lights_punctual":{ 77 | "lights":[ 78 | { 79 | "color":[ 80 | 1, 81 | 1, 82 | 1 83 | ], 84 | "intensity":543.5141306588226, 85 | "type":"point", 86 | "name":"Light" 87 | } 88 | ] 89 | } 90 | }, 91 | "scene":0, 92 | "scenes":[ 93 | { 94 | "name":"Scene", 95 | "nodes":[ 96 | 0, 97 | 1, 98 | 2, 99 | 3, 100 | 4, 101 | 5, 102 | 14, 103 | 15, 104 | 16, 105 | 17, 106 | 18 107 | ] 108 | } 109 | ], 110 | "nodes":[ 111 | { 112 | "extensions":{ 113 | "KHR_physics_rigid_bodies":{ 114 | "collider":{ 115 | "geometry":{ 116 | "shape":0 117 | }, 118 | "physicsMaterial":0, 119 | "collisionFilter":0 120 | } 121 | } 122 | }, 123 | "mesh":0, 124 | "name":"Ground" 125 | }, 126 | { 127 | "extensions":{ 128 | "KHR_lights_punctual":{ 129 | "light":0 130 | } 131 | }, 132 | "name":"Light", 133 | "rotation":[ 134 | -0.28416627645492554, 135 | 0.7269423007965088, 136 | 0.34203392267227173, 137 | 0.5232754945755005 138 | ], 139 | "translation":[ 140 | 9.169910430908203, 141 | 13.784093856811523, 142 | 13.098337173461914 143 | ] 144 | }, 145 | { 146 | "extensions":{ 147 | "KHR_physics_rigid_bodies":{ 148 | "motion":{ 149 | "mass":1 150 | }, 151 | "collider":{ 152 | "geometry":{ 153 | "shape":1 154 | }, 155 | "physicsMaterial":0, 156 | "collisionFilter":1 157 | } 158 | } 159 | }, 160 | "mesh":1, 161 | "name":"DynamicBlue", 162 | "translation":[ 163 | -3.2672903537750244, 164 | 4.036258697509766, 165 | -0.04527702182531357 166 | ] 167 | }, 168 | { 169 | "extensions":{ 170 | "KHR_physics_rigid_bodies":{ 171 | "motion":{ 172 | "mass":1 173 | }, 174 | "collider":{ 175 | "geometry":{ 176 | "shape":1 177 | }, 178 | "physicsMaterial":0, 179 | "collisionFilter":2 180 | } 181 | } 182 | }, 183 | "mesh":2, 184 | "name":"DynamicGreen", 185 | "translation":[ 186 | -1.097005844116211, 187 | 4.036258697509766, 188 | -0.04527702182531357 189 | ] 190 | }, 191 | { 192 | "extensions":{ 193 | "KHR_physics_rigid_bodies":{ 194 | "collider":{ 195 | "geometry":{ 196 | "shape":1 197 | }, 198 | "physicsMaterial":0, 199 | "collisionFilter":2 200 | } 201 | } 202 | }, 203 | "mesh":3, 204 | "name":"StaticGreen.001", 205 | "translation":[ 206 | -1.260768175125122, 207 | 2.2043325901031494, 208 | -0.2545289099216461 209 | ] 210 | }, 211 | { 212 | "extensions":{ 213 | "KHR_physics_rigid_bodies":{ 214 | "collider":{ 215 | "geometry":{ 216 | "shape":1 217 | }, 218 | "physicsMaterial":0, 219 | "collisionFilter":2 220 | } 221 | } 222 | }, 223 | "mesh":4, 224 | "name":"StaticGreen.002", 225 | "translation":[ 226 | 0.7522521018981934, 227 | 2.2043325901031494, 228 | -0.2545289099216461 229 | ] 230 | }, 231 | { 232 | "mesh":5, 233 | "name":"physicsMeshDataNode", 234 | "rotation":[ 235 | 0, 236 | 0, 237 | 0, 238 | 1 239 | ], 240 | "translation":[ 241 | 0, 242 | 0, 243 | 0 244 | ] 245 | }, 246 | { 247 | "extensions":{ 248 | "KHR_physics_rigid_bodies":{ 249 | "collider":{ 250 | "geometry":{ 251 | "convexHull":true, 252 | "node":6 253 | }, 254 | "physicsMaterial":0, 255 | "collisionFilter":1 256 | } 257 | } 258 | }, 259 | "mesh":5, 260 | "name":"DynamicChildBlue", 261 | "translation":[ 262 | 0.6112397313117981, 263 | -1, 264 | -0.04527702182531357 265 | ] 266 | }, 267 | { 268 | "mesh":6, 269 | "name":"physicsMeshDataNode", 270 | "rotation":[ 271 | 0, 272 | 0, 273 | 0, 274 | 1 275 | ], 276 | "translation":[ 277 | 0, 278 | 0, 279 | 0 280 | ] 281 | }, 282 | { 283 | "extensions":{ 284 | "KHR_physics_rigid_bodies":{ 285 | "collider":{ 286 | "geometry":{ 287 | "convexHull":true, 288 | "node":8 289 | }, 290 | "physicsMaterial":0, 291 | "collisionFilter":2 292 | } 293 | } 294 | }, 295 | "mesh":6, 296 | "name":"DynamicChildGreen", 297 | "translation":[ 298 | 0.6112397313117981, 299 | 1.2611083984375, 300 | -0.04527702182531357 301 | ] 302 | }, 303 | { 304 | "mesh":7, 305 | "name":"Wire1", 306 | "scale":[ 307 | 0.021387485787272453, 308 | 1, 309 | 0.021387485787272453 310 | ], 311 | "translation":[ 312 | 1.0609984397888184, 313 | 0.13055419921875, 314 | -0.5029261708259583 315 | ] 316 | }, 317 | { 318 | "mesh":8, 319 | "name":"Wire2", 320 | "scale":[ 321 | 0.021387485787272453, 322 | 1, 323 | 0.021387485787272453 324 | ], 325 | "translation":[ 326 | 0.17944756150245667, 327 | 0.13055419921875, 328 | -0.5029261708259583 329 | ] 330 | }, 331 | { 332 | "mesh":9, 333 | "name":"Wire3", 334 | "scale":[ 335 | 0.021387485787272453, 336 | 1, 337 | 0.021387485787272453 338 | ], 339 | "translation":[ 340 | 1.0609984397888184, 341 | 0.13055419921875, 342 | 0.40470898151397705 343 | ] 344 | }, 345 | { 346 | "mesh":10, 347 | "name":"Wire4", 348 | "scale":[ 349 | 0.021387485787272453, 350 | 1, 351 | 0.021387485787272453 352 | ], 353 | "translation":[ 354 | 0.17944756150245667, 355 | 0.13055419921875, 356 | 0.40470898151397705 357 | ] 358 | }, 359 | { 360 | "children":[ 361 | 7, 362 | 9, 363 | 10, 364 | 11, 365 | 12, 366 | 13 367 | ], 368 | "extensions":{ 369 | "KHR_physics_rigid_bodies":{ 370 | "motion":{ 371 | "mass":1 372 | } 373 | } 374 | }, 375 | "name":"DynamicCompound", 376 | "translation":[ 377 | 0.30477476119995117, 378 | 5.036258697509766, 379 | 0 380 | ] 381 | }, 382 | { 383 | "extensions":{ 384 | "KHR_physics_rigid_bodies":{ 385 | "motion":{ 386 | "mass":1 387 | }, 388 | "collider":{ 389 | "geometry":{ 390 | "shape":1 391 | }, 392 | "physicsMaterial":0, 393 | "collisionFilter":2 394 | } 395 | } 396 | }, 397 | "mesh":11, 398 | "name":"DynamicGreen.001", 399 | "translation":[ 400 | 2.881042957305908, 401 | 4.036258697509766, 402 | -0.04527702182531357 403 | ] 404 | }, 405 | { 406 | "extensions":{ 407 | "KHR_physics_rigid_bodies":{ 408 | "collider":{ 409 | "geometry":{ 410 | "shape":1 411 | }, 412 | "physicsMaterial":0, 413 | "collisionFilter":1 414 | } 415 | } 416 | }, 417 | "mesh":12, 418 | "name":"StaticCube.003", 419 | "translation":[ 420 | 2.717280626296997, 421 | 2.2043325901031494, 422 | -0.2545289099216461 423 | ] 424 | }, 425 | { 426 | "extensions":{ 427 | "KHR_physics_rigid_bodies":{ 428 | "collider":{ 429 | "geometry":{ 430 | "shape":1 431 | }, 432 | "physicsMaterial":0, 433 | "collisionFilter":2 434 | } 435 | } 436 | }, 437 | "mesh":13, 438 | "name":"StaticGreen", 439 | "translation":[ 440 | -3.4310526847839355, 441 | 2.2043325901031494, 442 | -0.2545289099216461 443 | ] 444 | }, 445 | { 446 | "camera":0, 447 | "name":"Camera", 448 | "rotation":[ 449 | -0.11146889626979828, 450 | 0, 451 | 0, 452 | 0.9937679171562195 453 | ], 454 | "translation":[ 455 | -0.28446364402770996, 456 | 7.284982681274414, 457 | 21.28097152709961 458 | ] 459 | } 460 | ], 461 | "cameras":[ 462 | { 463 | "name":"Camera", 464 | "perspective":{ 465 | "aspectRatio":1.7777777777777777, 466 | "yfov":0.39959652046304894, 467 | "zfar":1000, 468 | "znear":0.10000000149011612 469 | }, 470 | "type":"perspective" 471 | } 472 | ], 473 | "materials":[ 474 | { 475 | "doubleSided":true, 476 | "name":"Stripey_Baked", 477 | "pbrMetallicRoughness":{ 478 | "baseColorTexture":{ 479 | "index":0 480 | }, 481 | "metallicFactor":0, 482 | "roughnessFactor":0.5 483 | } 484 | }, 485 | { 486 | "doubleSided":true, 487 | "name":"SkyBlue", 488 | "pbrMetallicRoughness":{ 489 | "baseColorFactor":[ 490 | 0.18116337060928345, 491 | 0.6104952096939087, 492 | 0.7230551242828369, 493 | 1 494 | ], 495 | "metallicFactor":0, 496 | "roughnessFactor":0.5 497 | } 498 | }, 499 | { 500 | "doubleSided":true, 501 | "name":"LightGreen", 502 | "pbrMetallicRoughness":{ 503 | "baseColorFactor":[ 504 | 0.1620289385318756, 505 | 0.5271148681640625, 506 | 0.1328684538602829, 507 | 1 508 | ], 509 | "metallicFactor":0, 510 | "roughnessFactor":0.5 511 | } 512 | }, 513 | { 514 | "alphaMode":"BLEND", 515 | "doubleSided":true, 516 | "name":"Wire", 517 | "pbrMetallicRoughness":{ 518 | "baseColorFactor":[ 519 | 0.006612617522478104, 520 | 0.006612617522478104, 521 | 0.006612617522478104, 522 | 0.11328125 523 | ], 524 | "metallicFactor":0, 525 | "roughnessFactor":0.5 526 | } 527 | } 528 | ], 529 | "meshes":[ 530 | { 531 | "name":"Cube", 532 | "primitives":[ 533 | { 534 | "attributes":{ 535 | "POSITION":0, 536 | "NORMAL":1, 537 | "TEXCOORD_0":2 538 | }, 539 | "indices":3, 540 | "material":0 541 | } 542 | ] 543 | }, 544 | { 545 | "name":"Cube.002", 546 | "primitives":[ 547 | { 548 | "attributes":{ 549 | "POSITION":4, 550 | "NORMAL":5, 551 | "TEXCOORD_0":6 552 | }, 553 | "indices":7, 554 | "material":1 555 | } 556 | ] 557 | }, 558 | { 559 | "name":"Cube.003", 560 | "primitives":[ 561 | { 562 | "attributes":{ 563 | "POSITION":8, 564 | "NORMAL":9, 565 | "TEXCOORD_0":10 566 | }, 567 | "indices":7, 568 | "material":2 569 | } 570 | ] 571 | }, 572 | { 573 | "name":"Cube.004", 574 | "primitives":[ 575 | { 576 | "attributes":{ 577 | "POSITION":11, 578 | "NORMAL":12, 579 | "TEXCOORD_0":13 580 | }, 581 | "indices":7, 582 | "material":2 583 | } 584 | ] 585 | }, 586 | { 587 | "name":"Cube.006", 588 | "primitives":[ 589 | { 590 | "attributes":{ 591 | "POSITION":14, 592 | "NORMAL":15, 593 | "TEXCOORD_0":16 594 | }, 595 | "indices":7, 596 | "material":2 597 | } 598 | ] 599 | }, 600 | { 601 | "name":"Cube.005", 602 | "primitives":[ 603 | { 604 | "attributes":{ 605 | "POSITION":17, 606 | "NORMAL":18, 607 | "TEXCOORD_0":19 608 | }, 609 | "indices":7, 610 | "material":1 611 | } 612 | ] 613 | }, 614 | { 615 | "name":"Cube.007", 616 | "primitives":[ 617 | { 618 | "attributes":{ 619 | "POSITION":20, 620 | "NORMAL":21, 621 | "TEXCOORD_0":22 622 | }, 623 | "indices":7, 624 | "material":2 625 | } 626 | ] 627 | }, 628 | { 629 | "name":"Cylinder", 630 | "primitives":[ 631 | { 632 | "attributes":{ 633 | "POSITION":23, 634 | "NORMAL":24, 635 | "TEXCOORD_0":25 636 | }, 637 | "indices":26, 638 | "material":3 639 | } 640 | ] 641 | }, 642 | { 643 | "name":"Cylinder.001", 644 | "primitives":[ 645 | { 646 | "attributes":{ 647 | "POSITION":27, 648 | "NORMAL":28, 649 | "TEXCOORD_0":29 650 | }, 651 | "indices":26, 652 | "material":3 653 | } 654 | ] 655 | }, 656 | { 657 | "name":"Cylinder.002", 658 | "primitives":[ 659 | { 660 | "attributes":{ 661 | "POSITION":30, 662 | "NORMAL":31, 663 | "TEXCOORD_0":32 664 | }, 665 | "indices":26, 666 | "material":3 667 | } 668 | ] 669 | }, 670 | { 671 | "name":"Cylinder.003", 672 | "primitives":[ 673 | { 674 | "attributes":{ 675 | "POSITION":33, 676 | "NORMAL":34, 677 | "TEXCOORD_0":35 678 | }, 679 | "indices":26, 680 | "material":3 681 | } 682 | ] 683 | }, 684 | { 685 | "name":"Cube.009", 686 | "primitives":[ 687 | { 688 | "attributes":{ 689 | "POSITION":36, 690 | "NORMAL":37, 691 | "TEXCOORD_0":38 692 | }, 693 | "indices":7, 694 | "material":2 695 | } 696 | ] 697 | }, 698 | { 699 | "name":"Cube.010", 700 | "primitives":[ 701 | { 702 | "attributes":{ 703 | "POSITION":39, 704 | "NORMAL":40, 705 | "TEXCOORD_0":41 706 | }, 707 | "indices":7, 708 | "material":1 709 | } 710 | ] 711 | }, 712 | { 713 | "name":"Cube.011", 714 | "primitives":[ 715 | { 716 | "attributes":{ 717 | "POSITION":42, 718 | "NORMAL":43, 719 | "TEXCOORD_0":44 720 | }, 721 | "indices":7, 722 | "material":2 723 | } 724 | ] 725 | } 726 | ], 727 | "textures":[ 728 | { 729 | "sampler":0, 730 | "source":0 731 | } 732 | ], 733 | "images":[ 734 | { 735 | "mimeType":"image/png", 736 | "name":"Ground_color", 737 | "uri":"Ground_color.png" 738 | } 739 | ], 740 | "accessors":[ 741 | { 742 | "bufferView":0, 743 | "componentType":5126, 744 | "count":24, 745 | "max":[ 746 | 5.062992095947266, 747 | 0.151763916015625, 748 | 2.6011343002319336 749 | ], 750 | "min":[ 751 | -5.062992095947266, 752 | -0.151763916015625, 753 | -2.6011343002319336 754 | ], 755 | "type":"VEC3" 756 | }, 757 | { 758 | "bufferView":1, 759 | "componentType":5126, 760 | "count":24, 761 | "type":"VEC3" 762 | }, 763 | { 764 | "bufferView":2, 765 | "componentType":5126, 766 | "count":24, 767 | "type":"VEC2" 768 | }, 769 | { 770 | "bufferView":3, 771 | "componentType":5123, 772 | "count":36, 773 | "type":"SCALAR" 774 | }, 775 | { 776 | "bufferView":4, 777 | "componentType":5126, 778 | "count":24, 779 | "max":[ 780 | 0.5, 781 | 0.5, 782 | 0.5 783 | ], 784 | "min":[ 785 | -0.5, 786 | -0.5, 787 | -0.5 788 | ], 789 | "type":"VEC3" 790 | }, 791 | { 792 | "bufferView":5, 793 | "componentType":5126, 794 | "count":24, 795 | "type":"VEC3" 796 | }, 797 | { 798 | "bufferView":6, 799 | "componentType":5126, 800 | "count":24, 801 | "type":"VEC2" 802 | }, 803 | { 804 | "bufferView":7, 805 | "componentType":5123, 806 | "count":36, 807 | "type":"SCALAR" 808 | }, 809 | { 810 | "bufferView":8, 811 | "componentType":5126, 812 | "count":24, 813 | "max":[ 814 | 0.5, 815 | 0.5, 816 | 0.5 817 | ], 818 | "min":[ 819 | -0.5, 820 | -0.5, 821 | -0.5 822 | ], 823 | "type":"VEC3" 824 | }, 825 | { 826 | "bufferView":9, 827 | "componentType":5126, 828 | "count":24, 829 | "type":"VEC3" 830 | }, 831 | { 832 | "bufferView":10, 833 | "componentType":5126, 834 | "count":24, 835 | "type":"VEC2" 836 | }, 837 | { 838 | "bufferView":11, 839 | "componentType":5126, 840 | "count":24, 841 | "max":[ 842 | 0.5, 843 | 0.5, 844 | 0.5 845 | ], 846 | "min":[ 847 | -0.5, 848 | -0.5, 849 | -0.5 850 | ], 851 | "type":"VEC3" 852 | }, 853 | { 854 | "bufferView":12, 855 | "componentType":5126, 856 | "count":24, 857 | "type":"VEC3" 858 | }, 859 | { 860 | "bufferView":13, 861 | "componentType":5126, 862 | "count":24, 863 | "type":"VEC2" 864 | }, 865 | { 866 | "bufferView":14, 867 | "componentType":5126, 868 | "count":24, 869 | "max":[ 870 | 0.5, 871 | 0.5, 872 | 0.5 873 | ], 874 | "min":[ 875 | -0.5, 876 | -0.5, 877 | -0.5 878 | ], 879 | "type":"VEC3" 880 | }, 881 | { 882 | "bufferView":15, 883 | "componentType":5126, 884 | "count":24, 885 | "type":"VEC3" 886 | }, 887 | { 888 | "bufferView":16, 889 | "componentType":5126, 890 | "count":24, 891 | "type":"VEC2" 892 | }, 893 | { 894 | "bufferView":17, 895 | "componentType":5126, 896 | "count":24, 897 | "max":[ 898 | 0.5, 899 | 0.5, 900 | 0.5 901 | ], 902 | "min":[ 903 | -0.5, 904 | -0.5, 905 | -0.5 906 | ], 907 | "type":"VEC3" 908 | }, 909 | { 910 | "bufferView":18, 911 | "componentType":5126, 912 | "count":24, 913 | "type":"VEC3" 914 | }, 915 | { 916 | "bufferView":19, 917 | "componentType":5126, 918 | "count":24, 919 | "type":"VEC2" 920 | }, 921 | { 922 | "bufferView":20, 923 | "componentType":5126, 924 | "count":24, 925 | "max":[ 926 | 0.5, 927 | 0.5, 928 | 0.5 929 | ], 930 | "min":[ 931 | -0.5, 932 | -0.5, 933 | -0.5 934 | ], 935 | "type":"VEC3" 936 | }, 937 | { 938 | "bufferView":21, 939 | "componentType":5126, 940 | "count":24, 941 | "type":"VEC3" 942 | }, 943 | { 944 | "bufferView":22, 945 | "componentType":5126, 946 | "count":24, 947 | "type":"VEC2" 948 | }, 949 | { 950 | "bufferView":23, 951 | "componentType":5126, 952 | "count":48, 953 | "max":[ 954 | 1, 955 | 1, 956 | 1 957 | ], 958 | "min":[ 959 | -1, 960 | -1, 961 | -1 962 | ], 963 | "type":"VEC3" 964 | }, 965 | { 966 | "bufferView":24, 967 | "componentType":5126, 968 | "count":48, 969 | "type":"VEC3" 970 | }, 971 | { 972 | "bufferView":25, 973 | "componentType":5126, 974 | "count":48, 975 | "type":"VEC2" 976 | }, 977 | { 978 | "bufferView":26, 979 | "componentType":5123, 980 | "count":84, 981 | "type":"SCALAR" 982 | }, 983 | { 984 | "bufferView":27, 985 | "componentType":5126, 986 | "count":48, 987 | "max":[ 988 | 1, 989 | 1, 990 | 1 991 | ], 992 | "min":[ 993 | -1, 994 | -1, 995 | -1 996 | ], 997 | "type":"VEC3" 998 | }, 999 | { 1000 | "bufferView":28, 1001 | "componentType":5126, 1002 | "count":48, 1003 | "type":"VEC3" 1004 | }, 1005 | { 1006 | "bufferView":29, 1007 | "componentType":5126, 1008 | "count":48, 1009 | "type":"VEC2" 1010 | }, 1011 | { 1012 | "bufferView":30, 1013 | "componentType":5126, 1014 | "count":48, 1015 | "max":[ 1016 | 1, 1017 | 1, 1018 | 1 1019 | ], 1020 | "min":[ 1021 | -1, 1022 | -1, 1023 | -1 1024 | ], 1025 | "type":"VEC3" 1026 | }, 1027 | { 1028 | "bufferView":31, 1029 | "componentType":5126, 1030 | "count":48, 1031 | "type":"VEC3" 1032 | }, 1033 | { 1034 | "bufferView":32, 1035 | "componentType":5126, 1036 | "count":48, 1037 | "type":"VEC2" 1038 | }, 1039 | { 1040 | "bufferView":33, 1041 | "componentType":5126, 1042 | "count":48, 1043 | "max":[ 1044 | 1, 1045 | 1, 1046 | 1 1047 | ], 1048 | "min":[ 1049 | -1, 1050 | -1, 1051 | -1 1052 | ], 1053 | "type":"VEC3" 1054 | }, 1055 | { 1056 | "bufferView":34, 1057 | "componentType":5126, 1058 | "count":48, 1059 | "type":"VEC3" 1060 | }, 1061 | { 1062 | "bufferView":35, 1063 | "componentType":5126, 1064 | "count":48, 1065 | "type":"VEC2" 1066 | }, 1067 | { 1068 | "bufferView":36, 1069 | "componentType":5126, 1070 | "count":24, 1071 | "max":[ 1072 | 0.5, 1073 | 0.5, 1074 | 0.5 1075 | ], 1076 | "min":[ 1077 | -0.5, 1078 | -0.5, 1079 | -0.5 1080 | ], 1081 | "type":"VEC3" 1082 | }, 1083 | { 1084 | "bufferView":37, 1085 | "componentType":5126, 1086 | "count":24, 1087 | "type":"VEC3" 1088 | }, 1089 | { 1090 | "bufferView":38, 1091 | "componentType":5126, 1092 | "count":24, 1093 | "type":"VEC2" 1094 | }, 1095 | { 1096 | "bufferView":39, 1097 | "componentType":5126, 1098 | "count":24, 1099 | "max":[ 1100 | 0.5, 1101 | 0.5, 1102 | 0.5 1103 | ], 1104 | "min":[ 1105 | -0.5, 1106 | -0.5, 1107 | -0.5 1108 | ], 1109 | "type":"VEC3" 1110 | }, 1111 | { 1112 | "bufferView":40, 1113 | "componentType":5126, 1114 | "count":24, 1115 | "type":"VEC3" 1116 | }, 1117 | { 1118 | "bufferView":41, 1119 | "componentType":5126, 1120 | "count":24, 1121 | "type":"VEC2" 1122 | }, 1123 | { 1124 | "bufferView":42, 1125 | "componentType":5126, 1126 | "count":24, 1127 | "max":[ 1128 | 0.5, 1129 | 0.5, 1130 | 0.5 1131 | ], 1132 | "min":[ 1133 | -0.5, 1134 | -0.5, 1135 | -0.5 1136 | ], 1137 | "type":"VEC3" 1138 | }, 1139 | { 1140 | "bufferView":43, 1141 | "componentType":5126, 1142 | "count":24, 1143 | "type":"VEC3" 1144 | }, 1145 | { 1146 | "bufferView":44, 1147 | "componentType":5126, 1148 | "count":24, 1149 | "type":"VEC2" 1150 | } 1151 | ], 1152 | "bufferViews":[ 1153 | { 1154 | "buffer":0, 1155 | "byteLength":288, 1156 | "byteOffset":0, 1157 | "target":34962 1158 | }, 1159 | { 1160 | "buffer":0, 1161 | "byteLength":288, 1162 | "byteOffset":288, 1163 | "target":34962 1164 | }, 1165 | { 1166 | "buffer":0, 1167 | "byteLength":192, 1168 | "byteOffset":576, 1169 | "target":34962 1170 | }, 1171 | { 1172 | "buffer":0, 1173 | "byteLength":72, 1174 | "byteOffset":768, 1175 | "target":34963 1176 | }, 1177 | { 1178 | "buffer":0, 1179 | "byteLength":288, 1180 | "byteOffset":840, 1181 | "target":34962 1182 | }, 1183 | { 1184 | "buffer":0, 1185 | "byteLength":288, 1186 | "byteOffset":1128, 1187 | "target":34962 1188 | }, 1189 | { 1190 | "buffer":0, 1191 | "byteLength":192, 1192 | "byteOffset":1416, 1193 | "target":34962 1194 | }, 1195 | { 1196 | "buffer":0, 1197 | "byteLength":72, 1198 | "byteOffset":1608, 1199 | "target":34963 1200 | }, 1201 | { 1202 | "buffer":0, 1203 | "byteLength":288, 1204 | "byteOffset":1680, 1205 | "target":34962 1206 | }, 1207 | { 1208 | "buffer":0, 1209 | "byteLength":288, 1210 | "byteOffset":1968, 1211 | "target":34962 1212 | }, 1213 | { 1214 | "buffer":0, 1215 | "byteLength":192, 1216 | "byteOffset":2256, 1217 | "target":34962 1218 | }, 1219 | { 1220 | "buffer":0, 1221 | "byteLength":288, 1222 | "byteOffset":2448, 1223 | "target":34962 1224 | }, 1225 | { 1226 | "buffer":0, 1227 | "byteLength":288, 1228 | "byteOffset":2736, 1229 | "target":34962 1230 | }, 1231 | { 1232 | "buffer":0, 1233 | "byteLength":192, 1234 | "byteOffset":3024, 1235 | "target":34962 1236 | }, 1237 | { 1238 | "buffer":0, 1239 | "byteLength":288, 1240 | "byteOffset":3216, 1241 | "target":34962 1242 | }, 1243 | { 1244 | "buffer":0, 1245 | "byteLength":288, 1246 | "byteOffset":3504, 1247 | "target":34962 1248 | }, 1249 | { 1250 | "buffer":0, 1251 | "byteLength":192, 1252 | "byteOffset":3792, 1253 | "target":34962 1254 | }, 1255 | { 1256 | "buffer":0, 1257 | "byteLength":288, 1258 | "byteOffset":3984, 1259 | "target":34962 1260 | }, 1261 | { 1262 | "buffer":0, 1263 | "byteLength":288, 1264 | "byteOffset":4272, 1265 | "target":34962 1266 | }, 1267 | { 1268 | "buffer":0, 1269 | "byteLength":192, 1270 | "byteOffset":4560, 1271 | "target":34962 1272 | }, 1273 | { 1274 | "buffer":0, 1275 | "byteLength":288, 1276 | "byteOffset":4752, 1277 | "target":34962 1278 | }, 1279 | { 1280 | "buffer":0, 1281 | "byteLength":288, 1282 | "byteOffset":5040, 1283 | "target":34962 1284 | }, 1285 | { 1286 | "buffer":0, 1287 | "byteLength":192, 1288 | "byteOffset":5328, 1289 | "target":34962 1290 | }, 1291 | { 1292 | "buffer":0, 1293 | "byteLength":576, 1294 | "byteOffset":5520, 1295 | "target":34962 1296 | }, 1297 | { 1298 | "buffer":0, 1299 | "byteLength":576, 1300 | "byteOffset":6096, 1301 | "target":34962 1302 | }, 1303 | { 1304 | "buffer":0, 1305 | "byteLength":384, 1306 | "byteOffset":6672, 1307 | "target":34962 1308 | }, 1309 | { 1310 | "buffer":0, 1311 | "byteLength":168, 1312 | "byteOffset":7056, 1313 | "target":34963 1314 | }, 1315 | { 1316 | "buffer":0, 1317 | "byteLength":576, 1318 | "byteOffset":7224, 1319 | "target":34962 1320 | }, 1321 | { 1322 | "buffer":0, 1323 | "byteLength":576, 1324 | "byteOffset":7800, 1325 | "target":34962 1326 | }, 1327 | { 1328 | "buffer":0, 1329 | "byteLength":384, 1330 | "byteOffset":8376, 1331 | "target":34962 1332 | }, 1333 | { 1334 | "buffer":0, 1335 | "byteLength":576, 1336 | "byteOffset":8760, 1337 | "target":34962 1338 | }, 1339 | { 1340 | "buffer":0, 1341 | "byteLength":576, 1342 | "byteOffset":9336, 1343 | "target":34962 1344 | }, 1345 | { 1346 | "buffer":0, 1347 | "byteLength":384, 1348 | "byteOffset":9912, 1349 | "target":34962 1350 | }, 1351 | { 1352 | "buffer":0, 1353 | "byteLength":576, 1354 | "byteOffset":10296, 1355 | "target":34962 1356 | }, 1357 | { 1358 | "buffer":0, 1359 | "byteLength":576, 1360 | "byteOffset":10872, 1361 | "target":34962 1362 | }, 1363 | { 1364 | "buffer":0, 1365 | "byteLength":384, 1366 | "byteOffset":11448, 1367 | "target":34962 1368 | }, 1369 | { 1370 | "buffer":0, 1371 | "byteLength":288, 1372 | "byteOffset":11832, 1373 | "target":34962 1374 | }, 1375 | { 1376 | "buffer":0, 1377 | "byteLength":288, 1378 | "byteOffset":12120, 1379 | "target":34962 1380 | }, 1381 | { 1382 | "buffer":0, 1383 | "byteLength":192, 1384 | "byteOffset":12408, 1385 | "target":34962 1386 | }, 1387 | { 1388 | "buffer":0, 1389 | "byteLength":288, 1390 | "byteOffset":12600, 1391 | "target":34962 1392 | }, 1393 | { 1394 | "buffer":0, 1395 | "byteLength":288, 1396 | "byteOffset":12888, 1397 | "target":34962 1398 | }, 1399 | { 1400 | "buffer":0, 1401 | "byteLength":192, 1402 | "byteOffset":13176, 1403 | "target":34962 1404 | }, 1405 | { 1406 | "buffer":0, 1407 | "byteLength":288, 1408 | "byteOffset":13368, 1409 | "target":34962 1410 | }, 1411 | { 1412 | "buffer":0, 1413 | "byteLength":288, 1414 | "byteOffset":13656, 1415 | "target":34962 1416 | }, 1417 | { 1418 | "buffer":0, 1419 | "byteLength":192, 1420 | "byteOffset":13944, 1421 | "target":34962 1422 | } 1423 | ], 1424 | "samplers":[ 1425 | { 1426 | "magFilter":9729, 1427 | "minFilter":9987 1428 | } 1429 | ], 1430 | "buffers":[ 1431 | { 1432 | "byteLength":14136, 1433 | "uri":"Filtering.bin" 1434 | } 1435 | ] 1436 | } 1437 | -------------------------------------------------------------------------------- /samples/Filtering/Ground_color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eoineoineoin/glTF_Physics/04fe68e4030c7e01361f8d19300639aef6008e77/samples/Filtering/Ground_color.png -------------------------------------------------------------------------------- /samples/JointTypes/GroundBox_color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eoineoineoin/glTF_Physics/04fe68e4030c7e01361f8d19300639aef6008e77/samples/JointTypes/GroundBox_color.png -------------------------------------------------------------------------------- /samples/JointTypes/JointTypes.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eoineoineoin/glTF_Physics/04fe68e4030c7e01361f8d19300639aef6008e77/samples/JointTypes/JointTypes.bin -------------------------------------------------------------------------------- /samples/JointTypes/JointTypes.glb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eoineoineoin/glTF_Physics/04fe68e4030c7e01361f8d19300639aef6008e77/samples/JointTypes/JointTypes.glb -------------------------------------------------------------------------------- /samples/Materials_Friction/Materials_Friction.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eoineoineoin/glTF_Physics/04fe68e4030c7e01361f8d19300639aef6008e77/samples/Materials_Friction/Materials_Friction.bin -------------------------------------------------------------------------------- /samples/Materials_Friction/Materials_Friction.glb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eoineoineoin/glTF_Physics/04fe68e4030c7e01361f8d19300639aef6008e77/samples/Materials_Friction/Materials_Friction.glb -------------------------------------------------------------------------------- /samples/Materials_Friction/Materials_Friction.gltf: -------------------------------------------------------------------------------- 1 | { 2 | "asset":{ 3 | "generator":"Khronos glTF Blender I/O v4.4.55", 4 | "version":"2.0" 5 | }, 6 | "extensionsUsed":[ 7 | "KHR_lights_punctual", 8 | "KHR_implicit_shapes", 9 | "KHR_physics_rigid_bodies" 10 | ], 11 | "extensionsRequired":[ 12 | "KHR_lights_punctual" 13 | ], 14 | "extensions":{ 15 | "KHR_lights_punctual":{ 16 | "lights":[ 17 | { 18 | "color":[ 19 | 1, 20 | 1, 21 | 1 22 | ], 23 | "intensity":54.35141306588226, 24 | "spot":{ 25 | "innerConeAngle":0.556323685321221, 26 | "outerConeAngle":0.6544984579086304 27 | }, 28 | "type":"spot", 29 | "name":"Light" 30 | } 31 | ] 32 | }, 33 | "KHR_implicit_shapes":{ 34 | "shapes":[ 35 | { 36 | "type":"box", 37 | "box":{ 38 | "size":[ 39 | 3.131088972091675, 40 | 0.6419965624809265, 41 | 4.807734966278076 42 | ] 43 | } 44 | }, 45 | { 46 | "type":"box", 47 | "box":{ 48 | "size":[ 49 | 0.6135247349739075, 50 | 0.17837563157081604, 51 | 0.2775302827358246 52 | ] 53 | } 54 | }, 55 | { 56 | "type":"box", 57 | "box":{ 58 | "size":[ 59 | 10.376665115356445, 60 | 0.3404197692871094, 61 | 10.376665115356445 62 | ] 63 | } 64 | } 65 | ] 66 | }, 67 | "KHR_physics_rigid_bodies":{ 68 | "physicsMaterials":[ 69 | { 70 | "staticFriction":0.5472973585128784, 71 | "dynamicFriction":0.5472973585128784, 72 | "restitution":0 73 | }, 74 | { 75 | "staticFriction":0.02364865504205227, 76 | "dynamicFriction":0.02364865504205227, 77 | "restitution":0 78 | }, 79 | { 80 | "staticFriction":0, 81 | "dynamicFriction":0, 82 | "restitution":0 83 | } 84 | ], 85 | "collisionFilters":[ 86 | { 87 | "collisionSystems":[ 88 | "System_0" 89 | ], 90 | "collideWithSystems":[ 91 | "System_0" 92 | ] 93 | } 94 | ] 95 | } 96 | }, 97 | "scene":0, 98 | "scenes":[ 99 | { 100 | "name":"Scene", 101 | "nodes":[ 102 | 0, 103 | 1, 104 | 3, 105 | 4, 106 | 5 107 | ] 108 | } 109 | ], 110 | "nodes":[ 111 | { 112 | "extensions":{ 113 | "KHR_lights_punctual":{ 114 | "light":0 115 | } 116 | }, 117 | "name":"Light", 118 | "rotation":[ 119 | -0.28416627645492554, 120 | 0.7269423007965088, 121 | 0.34203392267227173, 122 | 0.5232754945755005 123 | ], 124 | "translation":[ 125 | 6.580799579620361, 126 | 9.417851448059082, 127 | -1.9711658954620361 128 | ] 129 | }, 130 | { 131 | "camera":0, 132 | "name":"Camera", 133 | "rotation":[ 134 | -0.15270371735095978, 135 | -0.3801100552082062, 136 | -0.06378371268510818, 137 | 0.9100162386894226 138 | ], 139 | "translation":[ 140 | -13.775691032409668, 141 | 8.082464218139648, 142 | 13.23838996887207 143 | ] 144 | }, 145 | { 146 | "mesh":0, 147 | "name":"HoneySurface" 148 | }, 149 | { 150 | "children":[ 151 | 2 152 | ], 153 | "extensions":{ 154 | "KHR_physics_rigid_bodies":{ 155 | "motion":{ 156 | "mass":1 157 | }, 158 | "collider":{ 159 | "geometry":{ 160 | "shape":0 161 | }, 162 | "physicsMaterial":0, 163 | "collisionFilter":0 164 | } 165 | } 166 | }, 167 | "mesh":1, 168 | "name":"HoneyCombWalls", 169 | "rotation":[ 170 | 0.4130883514881134, 171 | 0, 172 | 0, 173 | 0.91069096326828 174 | ], 175 | "scale":[ 176 | 0.46723151206970215, 177 | 0.46723151206970215, 178 | 0.46723151206970215 179 | ], 180 | "translation":[ 181 | 1.6627352237701416, 182 | 4.293732643127441, 183 | -3.7623164653778076 184 | ] 185 | }, 186 | { 187 | "extensions":{ 188 | "KHR_physics_rigid_bodies":{ 189 | "motion":{ 190 | "mass":1 191 | }, 192 | "collider":{ 193 | "geometry":{ 194 | "shape":1 195 | }, 196 | "physicsMaterial":1, 197 | "collisionFilter":0 198 | } 199 | } 200 | }, 201 | "mesh":2, 202 | "name":"Soap2.001", 203 | "rotation":[ 204 | 0.2973649799823761, 205 | -0.6407380700111389, 206 | -0.2964212894439697, 207 | 0.6427777409553528 208 | ], 209 | "scale":[ 210 | 3.5888543128967285, 211 | 3.5888540744781494, 212 | 3.5888543128967285 213 | ], 214 | "translation":[ 215 | -1.348071813583374, 216 | 4.190501689910889, 217 | -3.8256332874298096 218 | ] 219 | }, 220 | { 221 | "extensions":{ 222 | "KHR_physics_rigid_bodies":{ 223 | "collider":{ 224 | "geometry":{ 225 | "shape":2 226 | }, 227 | "physicsMaterial":2, 228 | "collisionFilter":0 229 | } 230 | } 231 | }, 232 | "mesh":3, 233 | "name":"SlopedFloor", 234 | "rotation":[ 235 | 0.25288188457489014, 236 | 0, 237 | 0, 238 | 0.9674971699714661 239 | ], 240 | "translation":[ 241 | 0, 242 | 1.2808959484100342, 243 | -1.0667122602462769 244 | ] 245 | } 246 | ], 247 | "cameras":[ 248 | { 249 | "name":"Camera", 250 | "perspective":{ 251 | "aspectRatio":1.7777777777777777, 252 | "yfov":0.39959652046304894, 253 | "zfar":100, 254 | "znear":0.10000000149011612 255 | }, 256 | "type":"perspective" 257 | } 258 | ], 259 | "materials":[ 260 | { 261 | "alphaMode":"BLEND", 262 | "doubleSided":true, 263 | "name":"Honey", 264 | "pbrMetallicRoughness":{ 265 | "baseColorFactor":[ 266 | 0.8000000715255737, 267 | 0.2762853801250458, 268 | 0.005892840214073658, 269 | 0.8255813717842102 270 | ], 271 | "metallicFactor":0, 272 | "roughnessFactor":0.07364341616630554 273 | } 274 | }, 275 | { 276 | "doubleSided":true, 277 | "name":"HoneycombWalls", 278 | "pbrMetallicRoughness":{ 279 | "baseColorFactor":[ 280 | 0.8000000715255737, 281 | 0.6449140906333923, 282 | 0.15321294963359833, 283 | 1 284 | ], 285 | "metallicFactor":0 286 | } 287 | }, 288 | { 289 | "doubleSided":true, 290 | "name":"Material.001", 291 | "pbrMetallicRoughness":{ 292 | "baseColorFactor":[ 293 | 0.8000000715255737, 294 | 0.05420894920825958, 295 | 0.36806991696357727, 296 | 1 297 | ], 298 | "metallicFactor":0, 299 | "roughnessFactor":0.5581947565078735 300 | } 301 | }, 302 | { 303 | "doubleSided":true, 304 | "name":"SlopedFloor", 305 | "pbrMetallicRoughness":{ 306 | "baseColorTexture":{ 307 | "index":0 308 | }, 309 | "metallicFactor":0, 310 | "roughnessFactor":0.5 311 | } 312 | } 313 | ], 314 | "meshes":[ 315 | { 316 | "name":"HoneyComb.001", 317 | "primitives":[ 318 | { 319 | "attributes":{ 320 | "POSITION":0, 321 | "NORMAL":1 322 | }, 323 | "indices":2, 324 | "material":0 325 | } 326 | ] 327 | }, 328 | { 329 | "name":"HoneyComb", 330 | "primitives":[ 331 | { 332 | "attributes":{ 333 | "POSITION":3, 334 | "NORMAL":4 335 | }, 336 | "indices":5, 337 | "material":1 338 | } 339 | ] 340 | }, 341 | { 342 | "name":"Cube.003", 343 | "primitives":[ 344 | { 345 | "attributes":{ 346 | "POSITION":6, 347 | "NORMAL":7, 348 | "TEXCOORD_0":8 349 | }, 350 | "indices":9, 351 | "material":2 352 | }, 353 | { 354 | "attributes":{ 355 | "POSITION":10, 356 | "NORMAL":11, 357 | "TEXCOORD_0":12 358 | }, 359 | "indices":13, 360 | "material":2 361 | } 362 | ] 363 | }, 364 | { 365 | "name":"Cube.001", 366 | "primitives":[ 367 | { 368 | "attributes":{ 369 | "POSITION":14, 370 | "NORMAL":15, 371 | "TEXCOORD_0":16 372 | }, 373 | "indices":17, 374 | "material":3 375 | } 376 | ] 377 | } 378 | ], 379 | "textures":[ 380 | { 381 | "sampler":0, 382 | "source":0 383 | } 384 | ], 385 | "images":[ 386 | { 387 | "mimeType":"image/png", 388 | "name":"SlopedFloor_color", 389 | "uri":"SlopedFloor_color.png" 390 | } 391 | ], 392 | "accessors":[ 393 | { 394 | "bufferView":0, 395 | "componentType":5126, 396 | "count":648, 397 | "max":[ 398 | 1.4655444622039795, 399 | 0.24976839125156403, 400 | 2.317265033721924 401 | ], 402 | "min":[ 403 | -1.4655444622039795, 404 | -0.24976839125156403, 405 | -2.317265033721924 406 | ], 407 | "type":"VEC3" 408 | }, 409 | { 410 | "bufferView":1, 411 | "componentType":5126, 412 | "count":648, 413 | "type":"VEC3" 414 | }, 415 | { 416 | "bufferView":2, 417 | "componentType":5123, 418 | "count":3024, 419 | "type":"SCALAR" 420 | }, 421 | { 422 | "bufferView":3, 423 | "componentType":5126, 424 | "count":810, 425 | "max":[ 426 | 1.5655444860458374, 427 | 0.32099828124046326, 428 | 2.403867483139038 429 | ], 430 | "min":[ 431 | -1.5655444860458374, 432 | -0.32099828124046326, 433 | -2.403867483139038 434 | ], 435 | "type":"VEC3" 436 | }, 437 | { 438 | "bufferView":4, 439 | "componentType":5126, 440 | "count":810, 441 | "type":"VEC3" 442 | }, 443 | { 444 | "bufferView":5, 445 | "componentType":5123, 446 | "count":5064, 447 | "type":"SCALAR" 448 | }, 449 | { 450 | "bufferView":6, 451 | "componentType":5126, 452 | "count":2736, 453 | "max":[ 454 | 0.30676236748695374, 455 | 0.08918781578540802, 456 | 0.1387651413679123 457 | ], 458 | "min":[ 459 | -0.30676236748695374, 460 | -0.06986423581838608, 461 | -0.1387651413679123 462 | ], 463 | "type":"VEC3" 464 | }, 465 | { 466 | "bufferView":7, 467 | "componentType":5126, 468 | "count":2736, 469 | "type":"VEC3" 470 | }, 471 | { 472 | "bufferView":8, 473 | "componentType":5126, 474 | "count":2736, 475 | "type":"VEC2" 476 | }, 477 | { 478 | "bufferView":9, 479 | "componentType":5123, 480 | "count":11262, 481 | "type":"SCALAR" 482 | }, 483 | { 484 | "bufferView":10, 485 | "componentType":5126, 486 | "count":2436, 487 | "max":[ 488 | 0.21350470185279846, 489 | 0.08735442906618118, 490 | 0.06141560152173042 491 | ], 492 | "min":[ 493 | -0.21233993768692017, 494 | 0.06715692579746246, 495 | -0.06703115999698639 496 | ], 497 | "type":"VEC3" 498 | }, 499 | { 500 | "bufferView":11, 501 | "componentType":5126, 502 | "count":2436, 503 | "type":"VEC3" 504 | }, 505 | { 506 | "bufferView":12, 507 | "componentType":5126, 508 | "count":2436, 509 | "type":"VEC2" 510 | }, 511 | { 512 | "bufferView":13, 513 | "componentType":5123, 514 | "count":7317, 515 | "type":"SCALAR" 516 | }, 517 | { 518 | "bufferView":14, 519 | "componentType":5126, 520 | "count":24, 521 | "max":[ 522 | 5.188332557678223, 523 | 0.1702098846435547, 524 | 5.188332557678223 525 | ], 526 | "min":[ 527 | -5.188332557678223, 528 | -0.1702098846435547, 529 | -5.188332557678223 530 | ], 531 | "type":"VEC3" 532 | }, 533 | { 534 | "bufferView":15, 535 | "componentType":5126, 536 | "count":24, 537 | "type":"VEC3" 538 | }, 539 | { 540 | "bufferView":16, 541 | "componentType":5126, 542 | "count":24, 543 | "type":"VEC2" 544 | }, 545 | { 546 | "bufferView":17, 547 | "componentType":5123, 548 | "count":36, 549 | "type":"SCALAR" 550 | } 551 | ], 552 | "bufferViews":[ 553 | { 554 | "buffer":0, 555 | "byteLength":7776, 556 | "byteOffset":0, 557 | "target":34962 558 | }, 559 | { 560 | "buffer":0, 561 | "byteLength":7776, 562 | "byteOffset":7776, 563 | "target":34962 564 | }, 565 | { 566 | "buffer":0, 567 | "byteLength":6048, 568 | "byteOffset":15552, 569 | "target":34963 570 | }, 571 | { 572 | "buffer":0, 573 | "byteLength":9720, 574 | "byteOffset":21600, 575 | "target":34962 576 | }, 577 | { 578 | "buffer":0, 579 | "byteLength":9720, 580 | "byteOffset":31320, 581 | "target":34962 582 | }, 583 | { 584 | "buffer":0, 585 | "byteLength":10128, 586 | "byteOffset":41040, 587 | "target":34963 588 | }, 589 | { 590 | "buffer":0, 591 | "byteLength":32832, 592 | "byteOffset":51168, 593 | "target":34962 594 | }, 595 | { 596 | "buffer":0, 597 | "byteLength":32832, 598 | "byteOffset":84000, 599 | "target":34962 600 | }, 601 | { 602 | "buffer":0, 603 | "byteLength":21888, 604 | "byteOffset":116832, 605 | "target":34962 606 | }, 607 | { 608 | "buffer":0, 609 | "byteLength":22524, 610 | "byteOffset":138720, 611 | "target":34963 612 | }, 613 | { 614 | "buffer":0, 615 | "byteLength":29232, 616 | "byteOffset":161244, 617 | "target":34962 618 | }, 619 | { 620 | "buffer":0, 621 | "byteLength":29232, 622 | "byteOffset":190476, 623 | "target":34962 624 | }, 625 | { 626 | "buffer":0, 627 | "byteLength":19488, 628 | "byteOffset":219708, 629 | "target":34962 630 | }, 631 | { 632 | "buffer":0, 633 | "byteLength":14634, 634 | "byteOffset":239196, 635 | "target":34963 636 | }, 637 | { 638 | "buffer":0, 639 | "byteLength":288, 640 | "byteOffset":253832, 641 | "target":34962 642 | }, 643 | { 644 | "buffer":0, 645 | "byteLength":288, 646 | "byteOffset":254120, 647 | "target":34962 648 | }, 649 | { 650 | "buffer":0, 651 | "byteLength":192, 652 | "byteOffset":254408, 653 | "target":34962 654 | }, 655 | { 656 | "buffer":0, 657 | "byteLength":72, 658 | "byteOffset":254600, 659 | "target":34963 660 | } 661 | ], 662 | "samplers":[ 663 | { 664 | "magFilter":9729, 665 | "minFilter":9987 666 | } 667 | ], 668 | "buffers":[ 669 | { 670 | "byteLength":254672, 671 | "uri":"Materials_Friction.bin" 672 | } 673 | ] 674 | } 675 | -------------------------------------------------------------------------------- /samples/Materials_Friction/SlopedFloor_color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eoineoineoin/glTF_Physics/04fe68e4030c7e01361f8d19300639aef6008e77/samples/Materials_Friction/SlopedFloor_color.png -------------------------------------------------------------------------------- /samples/Materials_Restitution/BasketballDiffuse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eoineoineoin/glTF_Physics/04fe68e4030c7e01361f8d19300639aef6008e77/samples/Materials_Restitution/BasketballDiffuse.png -------------------------------------------------------------------------------- /samples/Materials_Restitution/BasketballNormal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eoineoineoin/glTF_Physics/04fe68e4030c7e01361f8d19300639aef6008e77/samples/Materials_Restitution/BasketballNormal.png -------------------------------------------------------------------------------- /samples/Materials_Restitution/BasketballRoughness.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eoineoineoin/glTF_Physics/04fe68e4030c7e01361f8d19300639aef6008e77/samples/Materials_Restitution/BasketballRoughness.png -------------------------------------------------------------------------------- /samples/Materials_Restitution/Icosphere_color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eoineoineoin/glTF_Physics/04fe68e4030c7e01361f8d19300639aef6008e77/samples/Materials_Restitution/Icosphere_color.png -------------------------------------------------------------------------------- /samples/Materials_Restitution/Icosphere_roughness.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eoineoineoin/glTF_Physics/04fe68e4030c7e01361f8d19300639aef6008e77/samples/Materials_Restitution/Icosphere_roughness.png -------------------------------------------------------------------------------- /samples/Materials_Restitution/Materials_Restitution.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eoineoineoin/glTF_Physics/04fe68e4030c7e01361f8d19300639aef6008e77/samples/Materials_Restitution/Materials_Restitution.bin -------------------------------------------------------------------------------- /samples/Materials_Restitution/Materials_Restitution.glb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eoineoineoin/glTF_Physics/04fe68e4030c7e01361f8d19300639aef6008e77/samples/Materials_Restitution/Materials_Restitution.glb -------------------------------------------------------------------------------- /samples/Materials_Restitution/Materials_Restitution.gltf: -------------------------------------------------------------------------------- 1 | { 2 | "asset":{ 3 | "generator":"Khronos glTF Blender I/O v4.4.55", 4 | "version":"2.0" 5 | }, 6 | "extensionsUsed":[ 7 | "KHR_lights_punctual", 8 | "KHR_implicit_shapes", 9 | "KHR_physics_rigid_bodies" 10 | ], 11 | "extensionsRequired":[ 12 | "KHR_lights_punctual" 13 | ], 14 | "extensions":{ 15 | "KHR_lights_punctual":{ 16 | "lights":[ 17 | { 18 | "color":[ 19 | 1, 20 | 1, 21 | 1 22 | ], 23 | "intensity":54.35141306588226, 24 | "type":"point", 25 | "name":"Light" 26 | } 27 | ] 28 | }, 29 | "KHR_implicit_shapes":{ 30 | "shapes":[ 31 | { 32 | "type":"box", 33 | "box":{ 34 | "size":[ 35 | 10.376665115356445, 36 | 0.3404197692871094, 37 | 10.376665115356445 38 | ] 39 | } 40 | }, 41 | { 42 | "type":"sphere", 43 | "sphere":{ 44 | "radius":0.11820516580760172 45 | } 46 | }, 47 | { 48 | "type":"sphere", 49 | "sphere":{ 50 | "radius":0.9308800591777242 51 | } 52 | } 53 | ] 54 | }, 55 | "KHR_physics_rigid_bodies":{ 56 | "physicsMaterials":[ 57 | { 58 | "staticFriction":0, 59 | "dynamicFriction":0, 60 | "restitution":0 61 | }, 62 | { 63 | "staticFriction":0.5, 64 | "dynamicFriction":0.5, 65 | "restitution":0.949999988079071, 66 | "restitutionCombine":"maximum" 67 | }, 68 | { 69 | "staticFriction":0.5, 70 | "dynamicFriction":0.5, 71 | "restitution":0.2033868134021759 72 | } 73 | ], 74 | "collisionFilters":[ 75 | { 76 | "collisionSystems":[ 77 | "System_0" 78 | ], 79 | "collideWithSystems":[ 80 | "System_0" 81 | ] 82 | } 83 | ] 84 | } 85 | }, 86 | "scene":0, 87 | "scenes":[ 88 | { 89 | "name":"Scene", 90 | "nodes":[ 91 | 0, 92 | 1, 93 | 2, 94 | 3, 95 | 4 96 | ] 97 | } 98 | ], 99 | "nodes":[ 100 | { 101 | "extensions":{ 102 | "KHR_lights_punctual":{ 103 | "light":0 104 | } 105 | }, 106 | "name":"Light", 107 | "rotation":[ 108 | -0.28416627645492554, 109 | 0.7269423007965088, 110 | 0.34203392267227173, 111 | 0.5232754945755005 112 | ], 113 | "translation":[ 114 | 4.076245307922363, 115 | 5.903861999511719, 116 | -1.0054539442062378 117 | ] 118 | }, 119 | { 120 | "camera":0, 121 | "name":"Camera", 122 | "rotation":[ 123 | -0.14519648253917694, 124 | 0, 125 | 0, 126 | 0.9894028902053833 127 | ], 128 | "translation":[ 129 | -0.021041998639702797, 130 | 2.5271661281585693, 131 | 7.237770080566406 132 | ] 133 | }, 134 | { 135 | "extensions":{ 136 | "KHR_physics_rigid_bodies":{ 137 | "collider":{ 138 | "geometry":{ 139 | "shape":0 140 | }, 141 | "physicsMaterial":0, 142 | "collisionFilter":0 143 | } 144 | } 145 | }, 146 | "mesh":0, 147 | "name":"Floor", 148 | "scale":[ 149 | 0.16844403743743896, 150 | 0.16844403743743896, 151 | 0.16844403743743896 152 | ] 153 | }, 154 | { 155 | "extensions":{ 156 | "KHR_physics_rigid_bodies":{ 157 | "motion":{ 158 | "mass":0.5799999833106995 159 | }, 160 | "collider":{ 161 | "geometry":{ 162 | "shape":1 163 | }, 164 | "physicsMaterial":1, 165 | "collisionFilter":0 166 | } 167 | } 168 | }, 169 | "mesh":1, 170 | "name":"Basketball", 171 | "translation":[ 172 | -0.5, 173 | 1.5, 174 | 0 175 | ] 176 | }, 177 | { 178 | "extensions":{ 179 | "KHR_physics_rigid_bodies":{ 180 | "motion":{ 181 | "mass":1 182 | }, 183 | "collider":{ 184 | "geometry":{ 185 | "shape":2 186 | }, 187 | "physicsMaterial":2, 188 | "collisionFilter":0 189 | } 190 | } 191 | }, 192 | "mesh":2, 193 | "name":"Bowlingball", 194 | "scale":[ 195 | 0.11691740900278091, 196 | 0.11691740900278091, 197 | 0.11691740900278091 198 | ], 199 | "translation":[ 200 | 0.5, 201 | 1.5, 202 | 0 203 | ] 204 | } 205 | ], 206 | "cameras":[ 207 | { 208 | "name":"Camera", 209 | "perspective":{ 210 | "aspectRatio":1.7777777777777777, 211 | "yfov":0.39959652046304894, 212 | "zfar":100, 213 | "znear":0.10000000149011612 214 | }, 215 | "type":"perspective" 216 | } 217 | ], 218 | "materials":[ 219 | { 220 | "doubleSided":true, 221 | "name":"FloorBaked", 222 | "pbrMetallicRoughness":{ 223 | "baseColorTexture":{ 224 | "index":0 225 | }, 226 | "metallicFactor":0, 227 | "roughnessFactor":0.5 228 | } 229 | }, 230 | { 231 | "doubleSided":true, 232 | "name":"Basketball", 233 | "normalTexture":{ 234 | "index":1 235 | }, 236 | "pbrMetallicRoughness":{ 237 | "baseColorTexture":{ 238 | "index":2 239 | }, 240 | "metallicFactor":0.6363636255264282, 241 | "metallicRoughnessTexture":{ 242 | "index":3 243 | } 244 | } 245 | }, 246 | { 247 | "doubleSided":true, 248 | "name":"BowlingBallBaked.002", 249 | "pbrMetallicRoughness":{ 250 | "baseColorTexture":{ 251 | "index":4 252 | }, 253 | "metallicFactor":0, 254 | "metallicRoughnessTexture":{ 255 | "index":5 256 | } 257 | } 258 | } 259 | ], 260 | "meshes":[ 261 | { 262 | "name":"Cube.001", 263 | "primitives":[ 264 | { 265 | "attributes":{ 266 | "POSITION":0, 267 | "NORMAL":1, 268 | "TEXCOORD_0":2 269 | }, 270 | "indices":3, 271 | "material":0 272 | } 273 | ] 274 | }, 275 | { 276 | "name":"Mesh", 277 | "primitives":[ 278 | { 279 | "attributes":{ 280 | "POSITION":4, 281 | "NORMAL":5, 282 | "TEXCOORD_0":6 283 | }, 284 | "indices":7, 285 | "material":1 286 | } 287 | ] 288 | }, 289 | { 290 | "name":"Icosphere", 291 | "primitives":[ 292 | { 293 | "attributes":{ 294 | "POSITION":8, 295 | "NORMAL":9, 296 | "TEXCOORD_0":10 297 | }, 298 | "indices":11, 299 | "material":2 300 | } 301 | ] 302 | } 303 | ], 304 | "textures":[ 305 | { 306 | "sampler":0, 307 | "source":0 308 | }, 309 | { 310 | "sampler":0, 311 | "source":1 312 | }, 313 | { 314 | "sampler":0, 315 | "source":2 316 | }, 317 | { 318 | "sampler":0, 319 | "source":3 320 | }, 321 | { 322 | "sampler":0, 323 | "source":4 324 | }, 325 | { 326 | "sampler":0, 327 | "source":5 328 | } 329 | ], 330 | "images":[ 331 | { 332 | "mimeType":"image/png", 333 | "name":"SlopedFloor_color", 334 | "uri":"SlopedFloor_color.png" 335 | }, 336 | { 337 | "mimeType":"image/png", 338 | "name":"BasketballNormal", 339 | "uri":"BasketballNormal.png" 340 | }, 341 | { 342 | "mimeType":"image/png", 343 | "name":"BasketballDiffuse", 344 | "uri":"BasketballDiffuse.png" 345 | }, 346 | { 347 | "mimeType":"image/png", 348 | "name":"BasketballRoughness", 349 | "uri":"BasketballRoughness.png" 350 | }, 351 | { 352 | "mimeType":"image/png", 353 | "name":"Icosphere_color", 354 | "uri":"Icosphere_color.png" 355 | }, 356 | { 357 | "mimeType":"image/png", 358 | "name":"Icosphere_roughness", 359 | "uri":"Icosphere_roughness.png" 360 | } 361 | ], 362 | "accessors":[ 363 | { 364 | "bufferView":0, 365 | "componentType":5126, 366 | "count":24, 367 | "max":[ 368 | 5.188332557678223, 369 | 0.1702098846435547, 370 | 5.188332557678223 371 | ], 372 | "min":[ 373 | -5.188332557678223, 374 | -0.1702098846435547, 375 | -5.188332557678223 376 | ], 377 | "type":"VEC3" 378 | }, 379 | { 380 | "bufferView":1, 381 | "componentType":5126, 382 | "count":24, 383 | "type":"VEC3" 384 | }, 385 | { 386 | "bufferView":2, 387 | "componentType":5126, 388 | "count":24, 389 | "type":"VEC2" 390 | }, 391 | { 392 | "bufferView":3, 393 | "componentType":5123, 394 | "count":36, 395 | "type":"SCALAR" 396 | }, 397 | { 398 | "bufferView":4, 399 | "componentType":5126, 400 | "count":1637, 401 | "max":[ 402 | 0.11753767728805542, 403 | 0.11820516735315323, 404 | 0.11758241057395935 405 | ], 406 | "min":[ 407 | -0.11753766238689423, 408 | -0.11820516735315323, 409 | -0.11758241057395935 410 | ], 411 | "type":"VEC3" 412 | }, 413 | { 414 | "bufferView":5, 415 | "componentType":5126, 416 | "count":1637, 417 | "type":"VEC3" 418 | }, 419 | { 420 | "bufferView":6, 421 | "componentType":5126, 422 | "count":1637, 423 | "type":"VEC2" 424 | }, 425 | { 426 | "bufferView":7, 427 | "componentType":5123, 428 | "count":5760, 429 | "type":"SCALAR" 430 | }, 431 | { 432 | "bufferView":8, 433 | "componentType":5126, 434 | "count":1438, 435 | "max":[ 436 | 0.923734188079834, 437 | 0.9258288741111755, 438 | 0.9248635768890381 439 | ], 440 | "min":[ 441 | -0.923734188079834, 442 | -0.9303051233291626, 443 | -0.9248635768890381 444 | ], 445 | "type":"VEC3" 446 | }, 447 | { 448 | "bufferView":9, 449 | "componentType":5126, 450 | "count":1438, 451 | "type":"VEC3" 452 | }, 453 | { 454 | "bufferView":10, 455 | "componentType":5126, 456 | "count":1438, 457 | "type":"VEC2" 458 | }, 459 | { 460 | "bufferView":11, 461 | "componentType":5123, 462 | "count":6984, 463 | "type":"SCALAR" 464 | } 465 | ], 466 | "bufferViews":[ 467 | { 468 | "buffer":0, 469 | "byteLength":288, 470 | "byteOffset":0, 471 | "target":34962 472 | }, 473 | { 474 | "buffer":0, 475 | "byteLength":288, 476 | "byteOffset":288, 477 | "target":34962 478 | }, 479 | { 480 | "buffer":0, 481 | "byteLength":192, 482 | "byteOffset":576, 483 | "target":34962 484 | }, 485 | { 486 | "buffer":0, 487 | "byteLength":72, 488 | "byteOffset":768, 489 | "target":34963 490 | }, 491 | { 492 | "buffer":0, 493 | "byteLength":19644, 494 | "byteOffset":840, 495 | "target":34962 496 | }, 497 | { 498 | "buffer":0, 499 | "byteLength":19644, 500 | "byteOffset":20484, 501 | "target":34962 502 | }, 503 | { 504 | "buffer":0, 505 | "byteLength":13096, 506 | "byteOffset":40128, 507 | "target":34962 508 | }, 509 | { 510 | "buffer":0, 511 | "byteLength":11520, 512 | "byteOffset":53224, 513 | "target":34963 514 | }, 515 | { 516 | "buffer":0, 517 | "byteLength":17256, 518 | "byteOffset":64744, 519 | "target":34962 520 | }, 521 | { 522 | "buffer":0, 523 | "byteLength":17256, 524 | "byteOffset":82000, 525 | "target":34962 526 | }, 527 | { 528 | "buffer":0, 529 | "byteLength":11504, 530 | "byteOffset":99256, 531 | "target":34962 532 | }, 533 | { 534 | "buffer":0, 535 | "byteLength":13968, 536 | "byteOffset":110760, 537 | "target":34963 538 | } 539 | ], 540 | "samplers":[ 541 | { 542 | "magFilter":9729, 543 | "minFilter":9987 544 | } 545 | ], 546 | "buffers":[ 547 | { 548 | "byteLength":124728, 549 | "uri":"Materials_Restitution.bin" 550 | } 551 | ] 552 | } 553 | -------------------------------------------------------------------------------- /samples/Materials_Restitution/SlopedFloor_color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eoineoineoin/glTF_Physics/04fe68e4030c7e01361f8d19300639aef6008e77/samples/Materials_Restitution/SlopedFloor_color.png -------------------------------------------------------------------------------- /samples/MotionProperties/InfInertiaBox_color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eoineoineoin/glTF_Physics/04fe68e4030c7e01361f8d19300639aef6008e77/samples/MotionProperties/InfInertiaBox_color.png -------------------------------------------------------------------------------- /samples/MotionProperties/MotionProperties.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eoineoineoin/glTF_Physics/04fe68e4030c7e01361f8d19300639aef6008e77/samples/MotionProperties/MotionProperties.bin -------------------------------------------------------------------------------- /samples/MotionProperties/MotionProperties.glb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eoineoineoin/glTF_Physics/04fe68e4030c7e01361f8d19300639aef6008e77/samples/MotionProperties/MotionProperties.glb -------------------------------------------------------------------------------- /samples/MotionProperties/MotionProperties.gltf: -------------------------------------------------------------------------------- 1 | { 2 | "asset":{ 3 | "generator":"Khronos glTF Blender I/O v4.4.55", 4 | "version":"2.0" 5 | }, 6 | "extensionsUsed":[ 7 | "KHR_implicit_shapes", 8 | "KHR_physics_rigid_bodies", 9 | "KHR_lights_punctual" 10 | ], 11 | "extensionsRequired":[ 12 | "KHR_lights_punctual" 13 | ], 14 | "extensions":{ 15 | "KHR_implicit_shapes":{ 16 | "shapes":[ 17 | { 18 | "type":"box", 19 | "box":{ 20 | "size":[ 21 | 10, 22 | 0.20000000298023224, 23 | 10 24 | ] 25 | } 26 | }, 27 | { 28 | "type":"capsule", 29 | "capsule":{ 30 | "height":0.5497999787330627, 31 | "radiusBottom":0.3889999985694885, 32 | "radiusTop":0.25 33 | } 34 | }, 35 | { 36 | "type":"cylinder", 37 | "cylinder":{ 38 | "height":2.3964407444000244, 39 | "radiusBottom":1.1922439336776733, 40 | "radiusTop":0 41 | } 42 | } 43 | ] 44 | }, 45 | "KHR_physics_rigid_bodies":{ 46 | "physicsMaterials":[ 47 | { 48 | "staticFriction":0.5, 49 | "dynamicFriction":0.5, 50 | "restitution":0 51 | } 52 | ], 53 | "collisionFilters":[ 54 | { 55 | "collisionSystems":[ 56 | "System_0" 57 | ], 58 | "collideWithSystems":[ 59 | "System_0" 60 | ] 61 | } 62 | ] 63 | }, 64 | "KHR_lights_punctual":{ 65 | "lights":[ 66 | { 67 | "color":[ 68 | 1, 69 | 1, 70 | 1 71 | ], 72 | "intensity":543.5141306588226, 73 | "spot":{ 74 | "innerConeAngle":0.556323685321221, 75 | "outerConeAngle":0.6544984579086304 76 | }, 77 | "type":"spot", 78 | "name":"Light.001" 79 | } 80 | ] 81 | } 82 | }, 83 | "scene":0, 84 | "scenes":[ 85 | { 86 | "name":"Scene", 87 | "nodes":[ 88 | 0, 89 | 1, 90 | 2, 91 | 3, 92 | 5, 93 | 7, 94 | 9, 95 | 11, 96 | 13, 97 | 15, 98 | 16, 99 | 18 100 | ] 101 | } 102 | ], 103 | "nodes":[ 104 | { 105 | "extensions":{ 106 | "KHR_physics_rigid_bodies":{ 107 | "collider":{ 108 | "geometry":{ 109 | "shape":0 110 | }, 111 | "physicsMaterial":0, 112 | "collisionFilter":0 113 | } 114 | } 115 | }, 116 | "mesh":0, 117 | "name":"GroundBox" 118 | }, 119 | { 120 | "extensions":{ 121 | "KHR_lights_punctual":{ 122 | "light":0 123 | } 124 | }, 125 | "name":"Light", 126 | "rotation":[ 127 | -0.9064873456954956, 128 | 0.30373403429985046, 129 | -0.22516734898090363, 130 | 0.1879522204399109 131 | ], 132 | "translation":[ 133 | 10.10300350189209, 134 | 5.322088241577148, 135 | -12.933935165405273 136 | ] 137 | }, 138 | { 139 | "camera":0, 140 | "name":"Camera", 141 | "rotation":[ 142 | -0.0006247389828786254, 143 | -0.9995772242546082, 144 | -0.028788626194000244, 145 | 0.004049865994602442 146 | ], 147 | "translation":[ 148 | -0.06458347290754318, 149 | 3.0855536460876465, 150 | -17.244998931884766 151 | ] 152 | }, 153 | { 154 | "extensions":{ 155 | "KHR_physics_rigid_bodies":{ 156 | "motion":{ 157 | "mass":1, 158 | "centerOfMass":[ 159 | 0, 160 | -0.3499999940395355, 161 | 0 162 | ] 163 | }, 164 | "collider":{ 165 | "geometry":{ 166 | "shape":1 167 | }, 168 | "physicsMaterial":0, 169 | "collisionFilter":0 170 | } 171 | } 172 | }, 173 | "mesh":1, 174 | "name":"WobbyToy_ModifiedCOM", 175 | "rotation":[ 176 | 0.23983019590377808, 177 | -0.16575682163238525, 178 | -0.5438631772994995, 179 | 0.7869046926498413 180 | ], 181 | "translation":[ 182 | 3.0006041526794434, 183 | 2.5743825435638428, 184 | 0 185 | ] 186 | }, 187 | { 188 | "mesh":2, 189 | "name":"physicsMeshDataNode", 190 | "rotation":[ 191 | 0, 192 | 0, 193 | 0, 194 | 1 195 | ], 196 | "translation":[ 197 | 0, 198 | 0, 199 | 0 200 | ] 201 | }, 202 | { 203 | "extensions":{ 204 | "KHR_physics_rigid_bodies":{ 205 | "collider":{ 206 | "geometry":{ 207 | "convexHull":false, 208 | "node":4 209 | }, 210 | "physicsMaterial":0, 211 | "collisionFilter":0 212 | } 213 | } 214 | }, 215 | "mesh":2, 216 | "name":"Ceiling", 217 | "translation":[ 218 | 0, 219 | 5.323432445526123, 220 | 0 221 | ] 222 | }, 223 | { 224 | "mesh":3, 225 | "name":"physicsMeshDataNode", 226 | "rotation":[ 227 | 0, 228 | 0, 229 | 0, 230 | 1 231 | ], 232 | "translation":[ 233 | 0, 234 | 0, 235 | 0 236 | ] 237 | }, 238 | { 239 | "extensions":{ 240 | "KHR_physics_rigid_bodies":{ 241 | "motion":{ 242 | "mass":1, 243 | "gravityFactor":-0.5 244 | }, 245 | "collider":{ 246 | "geometry":{ 247 | "convexHull":true, 248 | "node":6 249 | }, 250 | "physicsMaterial":0, 251 | "collisionFilter":0 252 | } 253 | } 254 | }, 255 | "mesh":3, 256 | "name":"Balloon_GravityFactor.001", 257 | "rotation":[ 258 | 0, 259 | 0, 260 | -0.7071068286895752, 261 | 0.7071068286895752 262 | ], 263 | "scale":[ 264 | 0.26224279403686523, 265 | 0.26224279403686523, 266 | 0.26224279403686523 267 | ], 268 | "translation":[ 269 | -3.4571709632873535, 270 | 0.47535815834999084, 271 | -0.021255645900964737 272 | ] 273 | }, 274 | { 275 | "mesh":4, 276 | "name":"physicsMeshDataNode", 277 | "rotation":[ 278 | 0, 279 | 0, 280 | 0, 281 | 1 282 | ], 283 | "translation":[ 284 | 0, 285 | 0, 286 | 0 287 | ] 288 | }, 289 | { 290 | "extensions":{ 291 | "KHR_physics_rigid_bodies":{ 292 | "motion":{ 293 | "mass":1, 294 | "gravityFactor":-0.5 295 | }, 296 | "collider":{ 297 | "geometry":{ 298 | "convexHull":true, 299 | "node":8 300 | }, 301 | "physicsMaterial":0, 302 | "collisionFilter":0 303 | } 304 | } 305 | }, 306 | "mesh":4, 307 | "name":"Balloon_GravityFactor.002", 308 | "rotation":[ 309 | -0.06917271763086319, 310 | -0.06917202472686768, 311 | -0.9887976050376892, 312 | 0.11273732036352158 313 | ], 314 | "scale":[ 315 | 0.26224279403686523, 316 | 0.26224279403686523, 317 | 0.26224279403686523 318 | ], 319 | "translation":[ 320 | -2.672861099243164, 321 | 0.44633933901786804, 322 | 0.3699027895927429 323 | ] 324 | }, 325 | { 326 | "mesh":5, 327 | "name":"physicsMeshDataNode", 328 | "rotation":[ 329 | 0, 330 | 0, 331 | 0, 332 | 1 333 | ], 334 | "translation":[ 335 | 0, 336 | 0, 337 | 0 338 | ] 339 | }, 340 | { 341 | "extensions":{ 342 | "KHR_physics_rigid_bodies":{ 343 | "motion":{ 344 | "mass":1, 345 | "gravityFactor":-0.5 346 | }, 347 | "collider":{ 348 | "geometry":{ 349 | "convexHull":true, 350 | "node":10 351 | }, 352 | "physicsMaterial":0, 353 | "collisionFilter":0 354 | } 355 | } 356 | }, 357 | "mesh":5, 358 | "name":"Balloon_GravityFactor.003", 359 | "rotation":[ 360 | -0.8895257711410522, 361 | 0.059206895530223846, 362 | -0.41523995995521545, 363 | 0.18114697933197021 364 | ], 365 | "scale":[ 366 | 0.26224279403686523, 367 | 0.26224276423454285, 368 | 0.26224279403686523 369 | ], 370 | "translation":[ 371 | -2.767179012298584, 372 | 0.4837356209754944, 373 | -0.11874133348464966 374 | ] 375 | }, 376 | { 377 | "mesh":6, 378 | "name":"physicsMeshDataNode", 379 | "rotation":[ 380 | 0, 381 | 0, 382 | 0, 383 | 1 384 | ], 385 | "translation":[ 386 | 0, 387 | 0, 388 | 0 389 | ] 390 | }, 391 | { 392 | "extensions":{ 393 | "KHR_physics_rigid_bodies":{ 394 | "motion":{ 395 | "mass":1, 396 | "gravityFactor":-0.5 397 | }, 398 | "collider":{ 399 | "geometry":{ 400 | "convexHull":true, 401 | "node":12 402 | }, 403 | "physicsMaterial":0, 404 | "collisionFilter":0 405 | } 406 | } 407 | }, 408 | "mesh":6, 409 | "name":"Balloon_GravityFactor", 410 | "rotation":[ 411 | -0.7051693201065063, 412 | -0.6073976159095764, 413 | 0.03355078026652336, 414 | 0.3642509877681732 415 | ], 416 | "scale":[ 417 | 0.26224279403686523, 418 | 0.26224279403686523, 419 | 0.26224279403686523 420 | ], 421 | "translation":[ 422 | -3.0306520462036133, 423 | 0.7735296487808228, 424 | 0.6095728278160095 425 | ] 426 | }, 427 | { 428 | "mesh":7, 429 | "name":"physicsMeshDataNode", 430 | "rotation":[ 431 | 0, 432 | 0, 433 | 0, 434 | 1 435 | ], 436 | "translation":[ 437 | 0, 438 | 0, 439 | 0 440 | ] 441 | }, 442 | { 443 | "extensions":{ 444 | "KHR_physics_rigid_bodies":{ 445 | "motion":{ 446 | "mass":0, 447 | "inertiaDiagonal":[ 448 | 0, 449 | 1, 450 | 0 451 | ], 452 | "inertiaOrientation":[ 453 | 0, 454 | 0, 455 | 0, 456 | 1 457 | ], 458 | "gravityFactor":0 459 | }, 460 | "collider":{ 461 | "geometry":{ 462 | "convexHull":false, 463 | "node":14 464 | }, 465 | "physicsMaterial":0, 466 | "collisionFilter":0 467 | } 468 | } 469 | }, 470 | "mesh":7, 471 | "name":"Wheel_InfiniteMassFiniteInertia", 472 | "rotation":[ 473 | 0.7071068286895752, 474 | 0, 475 | 0, 476 | 0.7071068286895752 477 | ], 478 | "scale":[ 479 | 0.3981337547302246, 480 | 0.3981337547302246, 481 | 0.3981337547302246 482 | ], 483 | "translation":[ 484 | -1.6372116804122925, 485 | 2.3193838596343994, 486 | 0 487 | ] 488 | }, 489 | { 490 | "extensions":{ 491 | "KHR_physics_rigid_bodies":{ 492 | "collider":{ 493 | "geometry":{ 494 | "shape":2 495 | }, 496 | "physicsMaterial":0, 497 | "collisionFilter":0 498 | } 499 | } 500 | }, 501 | "mesh":8, 502 | "name":"Cone", 503 | "scale":[ 504 | 0.3848503828048706, 505 | 0.3848503828048706, 506 | 0.3848503828048706 507 | ], 508 | "translation":[ 509 | 1.2055795192718506, 510 | 0.47530412673950195, 511 | 0 512 | ] 513 | }, 514 | { 515 | "mesh":9, 516 | "name":"physicsMeshDataNode", 517 | "rotation":[ 518 | 0, 519 | 0, 520 | 0, 521 | 1 522 | ], 523 | "translation":[ 524 | 0, 525 | 0, 526 | 0 527 | ] 528 | }, 529 | { 530 | "extensions":{ 531 | "KHR_physics_rigid_bodies":{ 532 | "motion":{ 533 | "mass":1, 534 | "inertiaDiagonal":[ 535 | 0, 536 | 0, 537 | 0 538 | ], 539 | "inertiaOrientation":[ 540 | 0, 541 | 0, 542 | 0, 543 | 1 544 | ] 545 | }, 546 | "collider":{ 547 | "geometry":{ 548 | "convexHull":true, 549 | "node":17 550 | }, 551 | "physicsMaterial":0, 552 | "collisionFilter":0 553 | } 554 | } 555 | }, 556 | "mesh":9, 557 | "name":"InfInertiaBox", 558 | "translation":[ 559 | 0.6614035367965698, 560 | 4.5052571296691895, 561 | -0.07134325802326202 562 | ] 563 | } 564 | ], 565 | "cameras":[ 566 | { 567 | "name":"Camera.001", 568 | "perspective":{ 569 | "aspectRatio":1.7777777777777777, 570 | "yfov":0.39959652046304894, 571 | "zfar":1000, 572 | "znear":0.10000000149011612 573 | }, 574 | "type":"perspective" 575 | } 576 | ], 577 | "materials":[ 578 | { 579 | "doubleSided":true, 580 | "name":"GridFloorBaked.002", 581 | "pbrMetallicRoughness":{ 582 | "baseColorTexture":{ 583 | "index":0 584 | }, 585 | "metallicFactor":0, 586 | "roughnessFactor":0.5 587 | } 588 | }, 589 | { 590 | "doubleSided":true, 591 | "name":"WobblyToyMaterialBaked", 592 | "pbrMetallicRoughness":{ 593 | "baseColorTexture":{ 594 | "index":1 595 | }, 596 | "metallicFactor":0, 597 | "roughnessFactor":0.38100001215934753 598 | } 599 | }, 600 | { 601 | "doubleSided":true, 602 | "name":"RedBalloon", 603 | "pbrMetallicRoughness":{ 604 | "baseColorFactor":[ 605 | 0.8000000715255737, 606 | 0.020526031032204628, 607 | 0.006787703838199377, 608 | 1 609 | ], 610 | "metallicFactor":0, 611 | "roughnessFactor":0.1454545557498932 612 | } 613 | }, 614 | { 615 | "doubleSided":true, 616 | "name":"YellowBalloon", 617 | "pbrMetallicRoughness":{ 618 | "baseColorFactor":[ 619 | 0.8000000715255737, 620 | 0.430356502532959, 621 | 0.038135893642902374, 622 | 1 623 | ], 624 | "metallicFactor":0, 625 | "roughnessFactor":0.1454545557498932 626 | } 627 | }, 628 | { 629 | "doubleSided":true, 630 | "name":"PurpleBalloon", 631 | "pbrMetallicRoughness":{ 632 | "baseColorFactor":[ 633 | 0.11949184536933899, 634 | 0.08332283049821854, 635 | 0.8000000715255737, 636 | 1 637 | ], 638 | "metallicFactor":0, 639 | "roughnessFactor":0.1454545557498932 640 | } 641 | }, 642 | { 643 | "doubleSided":true, 644 | "name":"GreenBalloon", 645 | "pbrMetallicRoughness":{ 646 | "baseColorFactor":[ 647 | 0.17685817182064056, 648 | 0.8000000715255737, 649 | 0, 650 | 1 651 | ], 652 | "metallicFactor":0, 653 | "roughnessFactor":0.1454545557498932 654 | } 655 | }, 656 | { 657 | "doubleSided":true, 658 | "name":"InffMasswheel", 659 | "pbrMetallicRoughness":{ 660 | "baseColorFactor":[ 661 | 0.12443127483129501, 662 | 0.30948176980018616, 663 | 0.8000000715255737, 664 | 1 665 | ], 666 | "metallicFactor":0.4603174328804016, 667 | "roughnessFactor":0.380952388048172 668 | } 669 | }, 670 | { 671 | "doubleSided":true, 672 | "name":"InfInertiaBoxBaked", 673 | "pbrMetallicRoughness":{ 674 | "baseColorTexture":{ 675 | "index":2 676 | }, 677 | "metallicFactor":0.4603174328804016, 678 | "roughnessFactor":0.38100001215934753 679 | } 680 | } 681 | ], 682 | "meshes":[ 683 | { 684 | "name":"Cube.004", 685 | "primitives":[ 686 | { 687 | "attributes":{ 688 | "POSITION":0, 689 | "NORMAL":1, 690 | "TEXCOORD_0":2 691 | }, 692 | "indices":3, 693 | "material":0 694 | } 695 | ] 696 | }, 697 | { 698 | "name":"BezierCurve", 699 | "primitives":[ 700 | { 701 | "attributes":{ 702 | "POSITION":4, 703 | "NORMAL":5, 704 | "TEXCOORD_0":6 705 | }, 706 | "indices":7, 707 | "material":1 708 | } 709 | ] 710 | }, 711 | { 712 | "name":"Cube.005", 713 | "primitives":[ 714 | { 715 | "attributes":{ 716 | "POSITION":8, 717 | "NORMAL":9, 718 | "TEXCOORD_0":10 719 | }, 720 | "indices":11, 721 | "material":0 722 | } 723 | ] 724 | }, 725 | { 726 | "name":"BezierCurve.001", 727 | "primitives":[ 728 | { 729 | "attributes":{ 730 | "POSITION":12, 731 | "NORMAL":13, 732 | "TEXCOORD_0":14 733 | }, 734 | "indices":15, 735 | "material":2 736 | } 737 | ] 738 | }, 739 | { 740 | "name":"BezierCurve.002", 741 | "primitives":[ 742 | { 743 | "attributes":{ 744 | "POSITION":16, 745 | "NORMAL":17, 746 | "TEXCOORD_0":18 747 | }, 748 | "indices":15, 749 | "material":3 750 | } 751 | ] 752 | }, 753 | { 754 | "name":"BezierCurve.003", 755 | "primitives":[ 756 | { 757 | "attributes":{ 758 | "POSITION":19, 759 | "NORMAL":20, 760 | "TEXCOORD_0":21 761 | }, 762 | "indices":15, 763 | "material":4 764 | } 765 | ] 766 | }, 767 | { 768 | "name":"BezierCurve.004", 769 | "primitives":[ 770 | { 771 | "attributes":{ 772 | "POSITION":22, 773 | "NORMAL":23, 774 | "TEXCOORD_0":24 775 | }, 776 | "indices":15, 777 | "material":5 778 | } 779 | ] 780 | }, 781 | { 782 | "name":"Torus", 783 | "primitives":[ 784 | { 785 | "attributes":{ 786 | "POSITION":25, 787 | "NORMAL":26, 788 | "TEXCOORD_0":27 789 | }, 790 | "indices":28, 791 | "material":6 792 | } 793 | ] 794 | }, 795 | { 796 | "name":"Cone", 797 | "primitives":[ 798 | { 799 | "attributes":{ 800 | "POSITION":29, 801 | "NORMAL":30, 802 | "TEXCOORD_0":31 803 | }, 804 | "indices":32, 805 | "material":0 806 | } 807 | ] 808 | }, 809 | { 810 | "name":"Cube.001", 811 | "primitives":[ 812 | { 813 | "attributes":{ 814 | "POSITION":33, 815 | "NORMAL":34, 816 | "TEXCOORD_0":35 817 | }, 818 | "indices":36, 819 | "material":7 820 | } 821 | ] 822 | } 823 | ], 824 | "textures":[ 825 | { 826 | "sampler":0, 827 | "source":0 828 | }, 829 | { 830 | "sampler":0, 831 | "source":1 832 | }, 833 | { 834 | "sampler":0, 835 | "source":2 836 | } 837 | ], 838 | "images":[ 839 | { 840 | "mimeType":"image/png", 841 | "name":"Plane_color", 842 | "uri":"Plane_color.png" 843 | }, 844 | { 845 | "mimeType":"image/png", 846 | "name":"WobblyToy_color", 847 | "uri":"WobblyToy_color.png" 848 | }, 849 | { 850 | "mimeType":"image/png", 851 | "name":"InfInertiaBox_color", 852 | "uri":"InfInertiaBox_color.png" 853 | } 854 | ], 855 | "accessors":[ 856 | { 857 | "bufferView":0, 858 | "componentType":5126, 859 | "count":24, 860 | "max":[ 861 | 5, 862 | 0.10000000149011612, 863 | 5 864 | ], 865 | "min":[ 866 | -5, 867 | -0.10000000149011612, 868 | -5 869 | ], 870 | "type":"VEC3" 871 | }, 872 | { 873 | "bufferView":1, 874 | "componentType":5126, 875 | "count":24, 876 | "type":"VEC3" 877 | }, 878 | { 879 | "bufferView":2, 880 | "componentType":5126, 881 | "count":24, 882 | "type":"VEC2" 883 | }, 884 | { 885 | "bufferView":3, 886 | "componentType":5123, 887 | "count":36, 888 | "type":"SCALAR" 889 | }, 890 | { 891 | "bufferView":4, 892 | "componentType":5126, 893 | "count":744, 894 | "max":[ 895 | 0.3894026279449463, 896 | 0.5277507901191711, 897 | 0.3892013132572174 898 | ], 899 | "min":[ 900 | -0.3889999985694885, 901 | -0.664309561252594, 902 | -0.3892013132572174 903 | ], 904 | "type":"VEC3" 905 | }, 906 | { 907 | "bufferView":5, 908 | "componentType":5126, 909 | "count":744, 910 | "type":"VEC3" 911 | }, 912 | { 913 | "bufferView":6, 914 | "componentType":5126, 915 | "count":744, 916 | "type":"VEC2" 917 | }, 918 | { 919 | "bufferView":7, 920 | "componentType":5123, 921 | "count":3456, 922 | "type":"SCALAR" 923 | }, 924 | { 925 | "bufferView":8, 926 | "componentType":5126, 927 | "count":40, 928 | "max":[ 929 | 5, 930 | 0.10000000149011612, 931 | 5 932 | ], 933 | "min":[ 934 | -5, 935 | -0.4376579821109772, 936 | -5 937 | ], 938 | "type":"VEC3" 939 | }, 940 | { 941 | "bufferView":9, 942 | "componentType":5126, 943 | "count":40, 944 | "type":"VEC3" 945 | }, 946 | { 947 | "bufferView":10, 948 | "componentType":5126, 949 | "count":40, 950 | "type":"VEC2" 951 | }, 952 | { 953 | "bufferView":11, 954 | "componentType":5123, 955 | "count":60, 956 | "type":"SCALAR" 957 | }, 958 | { 959 | "bufferView":12, 960 | "componentType":5126, 961 | "count":629, 962 | "max":[ 963 | 0.9984763264656067, 964 | 1.2754491567611694, 965 | 1.2754491567611694 966 | ], 967 | "min":[ 968 | -2.2361791133880615, 969 | -1.2754491567611694, 970 | -1.2754491567611694 971 | ], 972 | "type":"VEC3" 973 | }, 974 | { 975 | "bufferView":13, 976 | "componentType":5126, 977 | "count":629, 978 | "type":"VEC3" 979 | }, 980 | { 981 | "bufferView":14, 982 | "componentType":5126, 983 | "count":629, 984 | "type":"VEC2" 985 | }, 986 | { 987 | "bufferView":15, 988 | "componentType":5123, 989 | "count":3456, 990 | "type":"SCALAR" 991 | }, 992 | { 993 | "bufferView":16, 994 | "componentType":5126, 995 | "count":629, 996 | "max":[ 997 | 0.9984763264656067, 998 | 1.2754491567611694, 999 | 1.2754491567611694 1000 | ], 1001 | "min":[ 1002 | -2.2361791133880615, 1003 | -1.2754491567611694, 1004 | -1.2754491567611694 1005 | ], 1006 | "type":"VEC3" 1007 | }, 1008 | { 1009 | "bufferView":17, 1010 | "componentType":5126, 1011 | "count":629, 1012 | "type":"VEC3" 1013 | }, 1014 | { 1015 | "bufferView":18, 1016 | "componentType":5126, 1017 | "count":629, 1018 | "type":"VEC2" 1019 | }, 1020 | { 1021 | "bufferView":19, 1022 | "componentType":5126, 1023 | "count":629, 1024 | "max":[ 1025 | 0.9984763264656067, 1026 | 1.2754491567611694, 1027 | 1.2754491567611694 1028 | ], 1029 | "min":[ 1030 | -2.2361791133880615, 1031 | -1.2754491567611694, 1032 | -1.2754491567611694 1033 | ], 1034 | "type":"VEC3" 1035 | }, 1036 | { 1037 | "bufferView":20, 1038 | "componentType":5126, 1039 | "count":629, 1040 | "type":"VEC3" 1041 | }, 1042 | { 1043 | "bufferView":21, 1044 | "componentType":5126, 1045 | "count":629, 1046 | "type":"VEC2" 1047 | }, 1048 | { 1049 | "bufferView":22, 1050 | "componentType":5126, 1051 | "count":629, 1052 | "max":[ 1053 | 0.9984763264656067, 1054 | 1.2754491567611694, 1055 | 1.2754491567611694 1056 | ], 1057 | "min":[ 1058 | -2.2361791133880615, 1059 | -1.2754491567611694, 1060 | -1.2754491567611694 1061 | ], 1062 | "type":"VEC3" 1063 | }, 1064 | { 1065 | "bufferView":23, 1066 | "componentType":5126, 1067 | "count":629, 1068 | "type":"VEC3" 1069 | }, 1070 | { 1071 | "bufferView":24, 1072 | "componentType":5126, 1073 | "count":629, 1074 | "type":"VEC2" 1075 | }, 1076 | { 1077 | "bufferView":25, 1078 | "componentType":5126, 1079 | "count":12288, 1080 | "max":[ 1081 | 2.3690333366394043, 1082 | 1.1102851629257202, 1083 | 2.3690333366394043 1084 | ], 1085 | "min":[ 1086 | -2.3690333366394043, 1087 | -1.1102851629257202, 1088 | -2.3690333366394043 1089 | ], 1090 | "type":"VEC3" 1091 | }, 1092 | { 1093 | "bufferView":26, 1094 | "componentType":5126, 1095 | "count":12288, 1096 | "type":"VEC3" 1097 | }, 1098 | { 1099 | "bufferView":27, 1100 | "componentType":5126, 1101 | "count":12288, 1102 | "type":"VEC2" 1103 | }, 1104 | { 1105 | "bufferView":28, 1106 | "componentType":5123, 1107 | "count":73728, 1108 | "type":"SCALAR" 1109 | }, 1110 | { 1111 | "bufferView":29, 1112 | "componentType":5126, 1113 | "count":66, 1114 | "max":[ 1115 | 1.1922439336776733, 1116 | 1.1862674951553345, 1117 | 1.1922439336776733 1118 | ], 1119 | "min":[ 1120 | -1.1922439336776733, 1121 | -1.1982203722000122, 1122 | -1.1922439336776733 1123 | ], 1124 | "type":"VEC3" 1125 | }, 1126 | { 1127 | "bufferView":30, 1128 | "componentType":5126, 1129 | "count":66, 1130 | "type":"VEC3" 1131 | }, 1132 | { 1133 | "bufferView":31, 1134 | "componentType":5126, 1135 | "count":66, 1136 | "type":"VEC2" 1137 | }, 1138 | { 1139 | "bufferView":32, 1140 | "componentType":5123, 1141 | "count":186, 1142 | "type":"SCALAR" 1143 | }, 1144 | { 1145 | "bufferView":33, 1146 | "componentType":5126, 1147 | "count":14760, 1148 | "max":[ 1149 | 0.6667054891586304, 1150 | 0.33451980352401733, 1151 | 0.3599701225757599 1152 | ], 1153 | "min":[ 1154 | -0.6667054891586304, 1155 | -0.33451980352401733, 1156 | -0.3599701225757599 1157 | ], 1158 | "type":"VEC3" 1159 | }, 1160 | { 1161 | "bufferView":34, 1162 | "componentType":5126, 1163 | "count":14760, 1164 | "type":"VEC3" 1165 | }, 1166 | { 1167 | "bufferView":35, 1168 | "componentType":5126, 1169 | "count":14760, 1170 | "type":"VEC2" 1171 | }, 1172 | { 1173 | "bufferView":36, 1174 | "componentType":5123, 1175 | "count":36864, 1176 | "type":"SCALAR" 1177 | } 1178 | ], 1179 | "bufferViews":[ 1180 | { 1181 | "buffer":0, 1182 | "byteLength":288, 1183 | "byteOffset":0, 1184 | "target":34962 1185 | }, 1186 | { 1187 | "buffer":0, 1188 | "byteLength":288, 1189 | "byteOffset":288, 1190 | "target":34962 1191 | }, 1192 | { 1193 | "buffer":0, 1194 | "byteLength":192, 1195 | "byteOffset":576, 1196 | "target":34962 1197 | }, 1198 | { 1199 | "buffer":0, 1200 | "byteLength":72, 1201 | "byteOffset":768, 1202 | "target":34963 1203 | }, 1204 | { 1205 | "buffer":0, 1206 | "byteLength":8928, 1207 | "byteOffset":840, 1208 | "target":34962 1209 | }, 1210 | { 1211 | "buffer":0, 1212 | "byteLength":8928, 1213 | "byteOffset":9768, 1214 | "target":34962 1215 | }, 1216 | { 1217 | "buffer":0, 1218 | "byteLength":5952, 1219 | "byteOffset":18696, 1220 | "target":34962 1221 | }, 1222 | { 1223 | "buffer":0, 1224 | "byteLength":6912, 1225 | "byteOffset":24648, 1226 | "target":34963 1227 | }, 1228 | { 1229 | "buffer":0, 1230 | "byteLength":480, 1231 | "byteOffset":31560, 1232 | "target":34962 1233 | }, 1234 | { 1235 | "buffer":0, 1236 | "byteLength":480, 1237 | "byteOffset":32040, 1238 | "target":34962 1239 | }, 1240 | { 1241 | "buffer":0, 1242 | "byteLength":320, 1243 | "byteOffset":32520, 1244 | "target":34962 1245 | }, 1246 | { 1247 | "buffer":0, 1248 | "byteLength":120, 1249 | "byteOffset":32840, 1250 | "target":34963 1251 | }, 1252 | { 1253 | "buffer":0, 1254 | "byteLength":7548, 1255 | "byteOffset":32960, 1256 | "target":34962 1257 | }, 1258 | { 1259 | "buffer":0, 1260 | "byteLength":7548, 1261 | "byteOffset":40508, 1262 | "target":34962 1263 | }, 1264 | { 1265 | "buffer":0, 1266 | "byteLength":5032, 1267 | "byteOffset":48056, 1268 | "target":34962 1269 | }, 1270 | { 1271 | "buffer":0, 1272 | "byteLength":6912, 1273 | "byteOffset":53088, 1274 | "target":34963 1275 | }, 1276 | { 1277 | "buffer":0, 1278 | "byteLength":7548, 1279 | "byteOffset":60000, 1280 | "target":34962 1281 | }, 1282 | { 1283 | "buffer":0, 1284 | "byteLength":7548, 1285 | "byteOffset":67548, 1286 | "target":34962 1287 | }, 1288 | { 1289 | "buffer":0, 1290 | "byteLength":5032, 1291 | "byteOffset":75096, 1292 | "target":34962 1293 | }, 1294 | { 1295 | "buffer":0, 1296 | "byteLength":7548, 1297 | "byteOffset":80128, 1298 | "target":34962 1299 | }, 1300 | { 1301 | "buffer":0, 1302 | "byteLength":7548, 1303 | "byteOffset":87676, 1304 | "target":34962 1305 | }, 1306 | { 1307 | "buffer":0, 1308 | "byteLength":5032, 1309 | "byteOffset":95224, 1310 | "target":34962 1311 | }, 1312 | { 1313 | "buffer":0, 1314 | "byteLength":7548, 1315 | "byteOffset":100256, 1316 | "target":34962 1317 | }, 1318 | { 1319 | "buffer":0, 1320 | "byteLength":7548, 1321 | "byteOffset":107804, 1322 | "target":34962 1323 | }, 1324 | { 1325 | "buffer":0, 1326 | "byteLength":5032, 1327 | "byteOffset":115352, 1328 | "target":34962 1329 | }, 1330 | { 1331 | "buffer":0, 1332 | "byteLength":147456, 1333 | "byteOffset":120384, 1334 | "target":34962 1335 | }, 1336 | { 1337 | "buffer":0, 1338 | "byteLength":147456, 1339 | "byteOffset":267840, 1340 | "target":34962 1341 | }, 1342 | { 1343 | "buffer":0, 1344 | "byteLength":98304, 1345 | "byteOffset":415296, 1346 | "target":34962 1347 | }, 1348 | { 1349 | "buffer":0, 1350 | "byteLength":147456, 1351 | "byteOffset":513600, 1352 | "target":34963 1353 | }, 1354 | { 1355 | "buffer":0, 1356 | "byteLength":792, 1357 | "byteOffset":661056, 1358 | "target":34962 1359 | }, 1360 | { 1361 | "buffer":0, 1362 | "byteLength":792, 1363 | "byteOffset":661848, 1364 | "target":34962 1365 | }, 1366 | { 1367 | "buffer":0, 1368 | "byteLength":528, 1369 | "byteOffset":662640, 1370 | "target":34962 1371 | }, 1372 | { 1373 | "buffer":0, 1374 | "byteLength":372, 1375 | "byteOffset":663168, 1376 | "target":34963 1377 | }, 1378 | { 1379 | "buffer":0, 1380 | "byteLength":177120, 1381 | "byteOffset":663540, 1382 | "target":34962 1383 | }, 1384 | { 1385 | "buffer":0, 1386 | "byteLength":177120, 1387 | "byteOffset":840660, 1388 | "target":34962 1389 | }, 1390 | { 1391 | "buffer":0, 1392 | "byteLength":118080, 1393 | "byteOffset":1017780, 1394 | "target":34962 1395 | }, 1396 | { 1397 | "buffer":0, 1398 | "byteLength":73728, 1399 | "byteOffset":1135860, 1400 | "target":34963 1401 | } 1402 | ], 1403 | "samplers":[ 1404 | { 1405 | "magFilter":9729, 1406 | "minFilter":9987 1407 | } 1408 | ], 1409 | "buffers":[ 1410 | { 1411 | "byteLength":1209588, 1412 | "uri":"MotionProperties.bin" 1413 | } 1414 | ] 1415 | } 1416 | -------------------------------------------------------------------------------- /samples/MotionProperties/Plane_color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eoineoineoin/glTF_Physics/04fe68e4030c7e01361f8d19300639aef6008e77/samples/MotionProperties/Plane_color.png -------------------------------------------------------------------------------- /samples/MotionProperties/WobblyToy_color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eoineoineoin/glTF_Physics/04fe68e4030c7e01361f8d19300639aef6008e77/samples/MotionProperties/WobblyToy_color.png -------------------------------------------------------------------------------- /samples/Robot_skinned/GridFloor_color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eoineoineoin/glTF_Physics/04fe68e4030c7e01361f8d19300639aef6008e77/samples/Robot_skinned/GridFloor_color.png -------------------------------------------------------------------------------- /samples/Robot_skinned/Robot_skinned.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eoineoineoin/glTF_Physics/04fe68e4030c7e01361f8d19300639aef6008e77/samples/Robot_skinned/Robot_skinned.bin -------------------------------------------------------------------------------- /samples/Robot_skinned/Robot_skinned.glb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eoineoineoin/glTF_Physics/04fe68e4030c7e01361f8d19300639aef6008e77/samples/Robot_skinned/Robot_skinned.glb -------------------------------------------------------------------------------- /samples/Robot_skinned/robot_TinRobot_BaseColor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eoineoineoin/glTF_Physics/04fe68e4030c7e01361f8d19300639aef6008e77/samples/Robot_skinned/robot_TinRobot_BaseColor.png -------------------------------------------------------------------------------- /samples/Robot_skinned/robot_TinRobot_Metallic_png-robot_TinRobot_Roughness_png.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eoineoineoin/glTF_Physics/04fe68e4030c7e01361f8d19300639aef6008e77/samples/Robot_skinned/robot_TinRobot_Metallic_png-robot_TinRobot_Roughness_png.png -------------------------------------------------------------------------------- /samples/Robot_skinned/robot_TinRobot_Normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eoineoineoin/glTF_Physics/04fe68e4030c7e01361f8d19300639aef6008e77/samples/Robot_skinned/robot_TinRobot_Normal.png -------------------------------------------------------------------------------- /samples/ShapeTypes/GroundBox_color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eoineoineoin/glTF_Physics/04fe68e4030c7e01361f8d19300639aef6008e77/samples/ShapeTypes/GroundBox_color.png -------------------------------------------------------------------------------- /samples/ShapeTypes/ShapeTypes.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eoineoineoin/glTF_Physics/04fe68e4030c7e01361f8d19300639aef6008e77/samples/ShapeTypes/ShapeTypes.bin -------------------------------------------------------------------------------- /samples/ShapeTypes/ShapeTypes.glb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eoineoineoin/glTF_Physics/04fe68e4030c7e01361f8d19300639aef6008e77/samples/ShapeTypes/ShapeTypes.glb -------------------------------------------------------------------------------- /samples/ShapeTypes/ShapeTypes.gltf: -------------------------------------------------------------------------------- 1 | { 2 | "asset":{ 3 | "generator":"Khronos glTF Blender I/O v4.4.55", 4 | "version":"2.0" 5 | }, 6 | "extensionsUsed":[ 7 | "KHR_implicit_shapes", 8 | "KHR_physics_rigid_bodies", 9 | "KHR_lights_punctual" 10 | ], 11 | "extensionsRequired":[ 12 | "KHR_lights_punctual" 13 | ], 14 | "extensions":{ 15 | "KHR_implicit_shapes":{ 16 | "shapes":[ 17 | { 18 | "type":"box", 19 | "box":{ 20 | "size":[ 21 | 0.5285500288009644, 22 | 1, 23 | 0.5285500288009644 24 | ] 25 | } 26 | }, 27 | { 28 | "type":"capsule", 29 | "capsule":{ 30 | "height":0.6000000238418579, 31 | "radiusBottom":0.25, 32 | "radiusTop":0.25 33 | } 34 | }, 35 | { 36 | "type":"cylinder", 37 | "cylinder":{ 38 | "height":0.06662015616893768, 39 | "radiusBottom":0.15483441948890686, 40 | "radiusTop":0.15483441948890686 41 | } 42 | }, 43 | { 44 | "type":"cylinder", 45 | "cylinder":{ 46 | "height":1, 47 | "radiusBottom":0.24762332439422607, 48 | "radiusTop":0.24762332439422607 49 | } 50 | }, 51 | { 52 | "type":"sphere", 53 | "sphere":{ 54 | "radius":0.3417187615099374 55 | } 56 | }, 57 | { 58 | "type":"cylinder", 59 | "cylinder":{ 60 | "height":1, 61 | "radiusBottom":0.25, 62 | "radiusTop":0.5 63 | } 64 | }, 65 | { 66 | "type":"capsule", 67 | "capsule":{ 68 | "height":0.6000000238418579, 69 | "radiusBottom":0.25, 70 | "radiusTop":0.4000000059604645 71 | } 72 | } 73 | ] 74 | }, 75 | "KHR_physics_rigid_bodies":{ 76 | "physicsMaterials":[ 77 | { 78 | "staticFriction":0.5, 79 | "dynamicFriction":0.5, 80 | "restitution":0 81 | } 82 | ], 83 | "collisionFilters":[ 84 | { 85 | "collisionSystems":[ 86 | "System_0" 87 | ], 88 | "collideWithSystems":[ 89 | "System_0" 90 | ] 91 | } 92 | ] 93 | }, 94 | "KHR_lights_punctual":{ 95 | "lights":[ 96 | { 97 | "color":[ 98 | 1, 99 | 1, 100 | 1 101 | ], 102 | "intensity":54.35141306588226, 103 | "type":"point", 104 | "name":"Light.001" 105 | } 106 | ] 107 | } 108 | }, 109 | "scene":0, 110 | "scenes":[ 111 | { 112 | "name":"Scene", 113 | "nodes":[ 114 | 0, 115 | 1, 116 | 14, 117 | 16, 118 | 17, 119 | 19, 120 | 20, 121 | 21, 122 | 23, 123 | 24, 124 | 25, 125 | 26 126 | ] 127 | } 128 | ], 129 | "nodes":[ 130 | { 131 | "extensions":{ 132 | "KHR_physics_rigid_bodies":{ 133 | "motion":{ 134 | "mass":1 135 | }, 136 | "collider":{ 137 | "geometry":{ 138 | "shape":0 139 | }, 140 | "physicsMaterial":0, 141 | "collisionFilter":0 142 | } 143 | } 144 | }, 145 | "mesh":0, 146 | "name":"DynamicBox", 147 | "translation":[ 148 | 2.3127410411834717, 149 | 3.55570387840271, 150 | 2.961970090866089 151 | ] 152 | }, 153 | { 154 | "extensions":{ 155 | "KHR_physics_rigid_bodies":{ 156 | "motion":{ 157 | "mass":1 158 | }, 159 | "collider":{ 160 | "geometry":{ 161 | "shape":1 162 | }, 163 | "physicsMaterial":0, 164 | "collisionFilter":0 165 | } 166 | } 167 | }, 168 | "mesh":1, 169 | "name":"DynamicCapsule", 170 | "translation":[ 171 | -0.5016167163848877, 172 | 3.55570387840271, 173 | 2.961970090866089 174 | ] 175 | }, 176 | { 177 | "extensions":{ 178 | "KHR_physics_rigid_bodies":{ 179 | "collider":{ 180 | "geometry":{ 181 | "shape":2 182 | }, 183 | "physicsMaterial":0, 184 | "collisionFilter":0 185 | } 186 | } 187 | }, 188 | "mesh":2, 189 | "name":"LeftWheel", 190 | "rotation":[ 191 | 0.7071068286895752, 192 | 0, 193 | 0, 194 | 0.7071068286895752 195 | ], 196 | "translation":[ 197 | 0, 198 | 0, 199 | -0.26329293847084045 200 | ] 201 | }, 202 | { 203 | "extensions":{ 204 | "KHR_physics_rigid_bodies":{ 205 | "collider":{ 206 | "geometry":{ 207 | "shape":2 208 | }, 209 | "physicsMaterial":0, 210 | "collisionFilter":0 211 | } 212 | } 213 | }, 214 | "mesh":3, 215 | "name":"RightWheel", 216 | "rotation":[ 217 | 0.7071068286895752, 218 | 0, 219 | 0, 220 | 0.7071068286895752 221 | ], 222 | "translation":[ 223 | 0, 224 | 0, 225 | 0.26328763365745544 226 | ] 227 | }, 228 | { 229 | "children":[ 230 | 2, 231 | 3 232 | ], 233 | "name":"Axle", 234 | "translation":[ 235 | -0.3301613926887512, 236 | -0.20937061309814453, 237 | 0 238 | ] 239 | }, 240 | { 241 | "extensions":{ 242 | "KHR_physics_rigid_bodies":{ 243 | "collider":{ 244 | "geometry":{ 245 | "shape":2 246 | }, 247 | "physicsMaterial":0, 248 | "collisionFilter":0 249 | } 250 | } 251 | }, 252 | "mesh":4, 253 | "name":"LeftWheel.001", 254 | "rotation":[ 255 | 0.7071068286895752, 256 | 0, 257 | 0, 258 | 0.7071068286895752 259 | ], 260 | "translation":[ 261 | 0, 262 | 0, 263 | -0.2632928788661957 264 | ] 265 | }, 266 | { 267 | "extensions":{ 268 | "KHR_physics_rigid_bodies":{ 269 | "collider":{ 270 | "geometry":{ 271 | "shape":2 272 | }, 273 | "physicsMaterial":0, 274 | "collisionFilter":0 275 | } 276 | } 277 | }, 278 | "mesh":5, 279 | "name":"RightWheel.001", 280 | "rotation":[ 281 | 0.7071068286895752, 282 | 0, 283 | 0, 284 | 0.7071068286895752 285 | ], 286 | "translation":[ 287 | 0, 288 | 0, 289 | 0.2632876932621002 290 | ] 291 | }, 292 | { 293 | "children":[ 294 | 5, 295 | 6 296 | ], 297 | "name":"Axle.001", 298 | "translation":[ 299 | 0.6475290656089783, 300 | -0.20937061309814453, 301 | 0 302 | ] 303 | }, 304 | { 305 | "mesh":6, 306 | "name":"physicsMeshDataNode", 307 | "rotation":[ 308 | 0, 309 | 0, 310 | 0, 311 | 1 312 | ], 313 | "translation":[ 314 | 0, 315 | 0, 316 | 0 317 | ] 318 | }, 319 | { 320 | "extensions":{ 321 | "KHR_physics_rigid_bodies":{ 322 | "collider":{ 323 | "geometry":{ 324 | "convexHull":true, 325 | "node":8 326 | }, 327 | "physicsMaterial":0, 328 | "collisionFilter":0 329 | } 330 | } 331 | }, 332 | "mesh":6, 333 | "name":"Chassis", 334 | "translation":[ 335 | 0, 336 | 0, 337 | -2.5161989469779655e-06 338 | ] 339 | }, 340 | { 341 | "mesh":7, 342 | "name":"physicsMeshDataNode", 343 | "rotation":[ 344 | 0, 345 | 0, 346 | 0, 347 | 1 348 | ], 349 | "translation":[ 350 | 0, 351 | 0, 352 | 0 353 | ] 354 | }, 355 | { 356 | "extensions":{ 357 | "KHR_physics_rigid_bodies":{ 358 | "trigger":{ 359 | "geometry":{ 360 | "convexHull":true, 361 | "node":10 362 | }, 363 | "collisionFilter":0 364 | } 365 | } 366 | }, 367 | "mesh":7, 368 | "name":"Headlight", 369 | "rotation":[ 370 | 0.5, 371 | -0.5, 372 | 0.5, 373 | 0.5000000596046448 374 | ], 375 | "scale":[ 376 | 0.31141936779022217, 377 | 0.5000763535499573, 378 | 0.31141936779022217 379 | ], 380 | "translation":[ 381 | 1.1501232385635376, 382 | -0.11589598655700684, 383 | 0.17043249309062958 384 | ] 385 | }, 386 | { 387 | "mesh":8, 388 | "name":"physicsMeshDataNode", 389 | "rotation":[ 390 | 0, 391 | 0, 392 | 0, 393 | 1 394 | ], 395 | "translation":[ 396 | 0, 397 | 0, 398 | 0 399 | ] 400 | }, 401 | { 402 | "extensions":{ 403 | "KHR_physics_rigid_bodies":{ 404 | "trigger":{ 405 | "geometry":{ 406 | "convexHull":true, 407 | "node":12 408 | }, 409 | "collisionFilter":0 410 | } 411 | } 412 | }, 413 | "mesh":8, 414 | "name":"Headlight.001", 415 | "rotation":[ 416 | 0.5, 417 | -0.5, 418 | 0.5, 419 | 0.5000000596046448 420 | ], 421 | "scale":[ 422 | 0.31141936779022217, 423 | 0.5000763535499573, 424 | 0.31141936779022217 425 | ], 426 | "translation":[ 427 | 1.1501233577728271, 428 | -0.11589598655700684, 429 | -0.17043741047382355 430 | ] 431 | }, 432 | { 433 | "children":[ 434 | 4, 435 | 7, 436 | 9, 437 | 11, 438 | 13 439 | ], 440 | "extensions":{ 441 | "KHR_physics_rigid_bodies":{ 442 | "motion":{ 443 | "mass":1 444 | } 445 | } 446 | }, 447 | "name":"DynamicCompound", 448 | "rotation":[ 449 | 0, 450 | 0.7071068286895752, 451 | 0, 452 | 0.7071068286895752 453 | ], 454 | "translation":[ 455 | -4.028587818145752, 456 | 3.5586836338043213, 457 | 3.020109176635742 458 | ] 459 | }, 460 | { 461 | "mesh":9, 462 | "name":"physicsMeshDataNode", 463 | "rotation":[ 464 | 0, 465 | 0, 466 | 0, 467 | 1 468 | ], 469 | "translation":[ 470 | 0, 471 | 0, 472 | 0 473 | ] 474 | }, 475 | { 476 | "extensions":{ 477 | "KHR_physics_rigid_bodies":{ 478 | "motion":{ 479 | "mass":1 480 | }, 481 | "collider":{ 482 | "geometry":{ 483 | "convexHull":true, 484 | "node":15 485 | }, 486 | "physicsMaterial":0, 487 | "collisionFilter":0 488 | } 489 | } 490 | }, 491 | "mesh":9, 492 | "name":"DynamicConvex", 493 | "translation":[ 494 | -1.7160813808441162, 495 | 3.544679641723633, 496 | 2.9650588035583496 497 | ] 498 | }, 499 | { 500 | "extensions":{ 501 | "KHR_physics_rigid_bodies":{ 502 | "motion":{ 503 | "mass":1 504 | }, 505 | "collider":{ 506 | "geometry":{ 507 | "shape":3 508 | }, 509 | "physicsMaterial":0, 510 | "collisionFilter":0 511 | } 512 | } 513 | }, 514 | "mesh":10, 515 | "name":"DynamicCylinder", 516 | "translation":[ 517 | 0.9096847772598267, 518 | 3.55570387840271, 519 | 2.961970090866089 520 | ] 521 | }, 522 | { 523 | "mesh":11, 524 | "name":"physicsMeshDataNode", 525 | "rotation":[ 526 | 0, 527 | 0, 528 | 0, 529 | 1 530 | ], 531 | "translation":[ 532 | 0, 533 | 0, 534 | 0 535 | ] 536 | }, 537 | { 538 | "extensions":{ 539 | "KHR_physics_rigid_bodies":{ 540 | "motion":{ 541 | "mass":1 542 | }, 543 | "collider":{ 544 | "geometry":{ 545 | "convexHull":false, 546 | "node":18 547 | }, 548 | "physicsMaterial":0, 549 | "collisionFilter":0 550 | } 551 | } 552 | }, 553 | "mesh":11, 554 | "name":"DynamicMesh", 555 | "translation":[ 556 | -2.9695167541503906, 557 | 3.55570387840271, 558 | 2.961970090866089 559 | ] 560 | }, 561 | { 562 | "extensions":{ 563 | "KHR_physics_rigid_bodies":{ 564 | "motion":{ 565 | "mass":1 566 | }, 567 | "collider":{ 568 | "geometry":{ 569 | "shape":4 570 | }, 571 | "physicsMaterial":0, 572 | "collisionFilter":0 573 | } 574 | } 575 | }, 576 | "mesh":12, 577 | "name":"DynamicSphere", 578 | "translation":[ 579 | 3.6696457862854004, 580 | 3.55570387840271, 581 | 2.961970090866089 582 | ] 583 | }, 584 | { 585 | "extensions":{ 586 | "KHR_lights_punctual":{ 587 | "light":0 588 | } 589 | }, 590 | "name":"Light", 591 | "rotation":[ 592 | -0.28416627645492554, 593 | 0.7269423007965088, 594 | 0.34203392267227173, 595 | 0.5232754945755005 596 | ], 597 | "translation":[ 598 | 6.598835468292236, 599 | 7.778873920440674, 600 | -0.7244230508804321 601 | ] 602 | }, 603 | { 604 | "mesh":13, 605 | "name":"physicsMeshDataNode", 606 | "rotation":[ 607 | 0, 608 | 0, 609 | 0, 610 | 1 611 | ], 612 | "translation":[ 613 | 0, 614 | 0, 615 | 0 616 | ] 617 | }, 618 | { 619 | "extensions":{ 620 | "KHR_physics_rigid_bodies":{ 621 | "collider":{ 622 | "geometry":{ 623 | "convexHull":false, 624 | "node":22 625 | }, 626 | "physicsMaterial":0, 627 | "collisionFilter":0 628 | } 629 | } 630 | }, 631 | "mesh":13, 632 | "name":"StaticMesh", 633 | "rotation":[ 634 | -0.22099554538726807, 635 | 0, 636 | 0, 637 | 0.9752748012542725 638 | ], 639 | "scale":[ 640 | 1.353973388671875, 641 | 1, 642 | 1 643 | ], 644 | "translation":[ 645 | 0, 646 | 1.7149596214294434, 647 | 2.429720401763916 648 | ] 649 | }, 650 | { 651 | "camera":0, 652 | "name":"Camera", 653 | "rotation":[ 654 | -0.00025008770171552896, 655 | -0.9927065968513489, 656 | -0.12048657983541489, 657 | 0.004090157337486744 658 | ], 659 | "translation":[ 660 | -0.028158361092209816, 661 | 5.093292236328125, 662 | -14.084538459777832 663 | ] 664 | }, 665 | { 666 | "extensions":{ 667 | "KHR_physics_rigid_bodies":{ 668 | "motion":{ 669 | "mass":1 670 | }, 671 | "collider":{ 672 | "geometry":{ 673 | "shape":5 674 | }, 675 | "physicsMaterial":0, 676 | "collisionFilter":0 677 | } 678 | } 679 | }, 680 | "mesh":14, 681 | "name":"DynamicCone", 682 | "translation":[ 683 | 0.9096847772598267, 684 | 5.245532989501953, 685 | 2.961970090866089 686 | ] 687 | }, 688 | { 689 | "extensions":{ 690 | "KHR_physics_rigid_bodies":{ 691 | "motion":{ 692 | "mass":1 693 | }, 694 | "collider":{ 695 | "geometry":{ 696 | "shape":6 697 | }, 698 | "physicsMaterial":0, 699 | "collisionFilter":0 700 | } 701 | } 702 | }, 703 | "mesh":15, 704 | "name":"DynamicTaperedCapsule", 705 | "translation":[ 706 | -0.5016167163848877, 707 | 5.129024982452393, 708 | 2.961970090866089 709 | ] 710 | } 711 | ], 712 | "cameras":[ 713 | { 714 | "name":"Camera.001", 715 | "perspective":{ 716 | "aspectRatio":1.7777777777777777, 717 | "yfov":0.39959652046304894, 718 | "zfar":1000, 719 | "znear":0.10000000149011612 720 | }, 721 | "type":"perspective" 722 | } 723 | ], 724 | "materials":[ 725 | { 726 | "doubleSided":true, 727 | "name":"Yellowish", 728 | "pbrMetallicRoughness":{ 729 | "baseColorFactor":[ 730 | 0.8000000715255737, 731 | 0.7555356621742249, 732 | 0.0002703802892938256, 733 | 1 734 | ], 735 | "metallicFactor":0.5, 736 | "roughnessFactor":0.800000011920929 737 | } 738 | }, 739 | { 740 | "alphaMode":"BLEND", 741 | "doubleSided":true, 742 | "name":"TransparentGreen", 743 | "pbrMetallicRoughness":{ 744 | "baseColorFactor":[ 745 | 0.11157119274139404, 746 | 0.8000000715255737, 747 | 0, 748 | 0.32684826850891113 749 | ], 750 | "metallicFactor":0, 751 | "roughnessFactor":0.5 752 | } 753 | }, 754 | { 755 | "doubleSided":true, 756 | "name":"StaticMaterialBaked", 757 | "pbrMetallicRoughness":{ 758 | "baseColorTexture":{ 759 | "index":0 760 | }, 761 | "metallicFactor":0, 762 | "roughnessFactor":0.5 763 | } 764 | } 765 | ], 766 | "meshes":[ 767 | { 768 | "name":"Cube.001", 769 | "primitives":[ 770 | { 771 | "attributes":{ 772 | "POSITION":0, 773 | "NORMAL":1, 774 | "TEXCOORD_0":2 775 | }, 776 | "indices":3, 777 | "material":0 778 | } 779 | ] 780 | }, 781 | { 782 | "name":"Cylinder.001", 783 | "primitives":[ 784 | { 785 | "attributes":{ 786 | "POSITION":4, 787 | "NORMAL":5 788 | }, 789 | "indices":6, 790 | "material":0 791 | } 792 | ] 793 | }, 794 | { 795 | "name":"Cylinder.002", 796 | "primitives":[ 797 | { 798 | "attributes":{ 799 | "POSITION":7, 800 | "NORMAL":8, 801 | "TEXCOORD_0":9 802 | }, 803 | "indices":10, 804 | "material":0 805 | } 806 | ] 807 | }, 808 | { 809 | "name":"Cylinder.003", 810 | "primitives":[ 811 | { 812 | "attributes":{ 813 | "POSITION":11, 814 | "NORMAL":12, 815 | "TEXCOORD_0":13 816 | }, 817 | "indices":14, 818 | "material":0 819 | } 820 | ] 821 | }, 822 | { 823 | "name":"Cylinder.004", 824 | "primitives":[ 825 | { 826 | "attributes":{ 827 | "POSITION":15, 828 | "NORMAL":16, 829 | "TEXCOORD_0":17 830 | }, 831 | "indices":14, 832 | "material":0 833 | } 834 | ] 835 | }, 836 | { 837 | "name":"Cylinder.006", 838 | "primitives":[ 839 | { 840 | "attributes":{ 841 | "POSITION":18, 842 | "NORMAL":19, 843 | "TEXCOORD_0":20 844 | }, 845 | "indices":21, 846 | "material":0 847 | } 848 | ] 849 | }, 850 | { 851 | "name":"Cube.003", 852 | "primitives":[ 853 | { 854 | "attributes":{ 855 | "POSITION":22, 856 | "NORMAL":23, 857 | "TEXCOORD_0":24 858 | }, 859 | "indices":25, 860 | "material":0 861 | } 862 | ] 863 | }, 864 | { 865 | "name":"Cone", 866 | "primitives":[ 867 | { 868 | "attributes":{ 869 | "POSITION":26, 870 | "NORMAL":27, 871 | "TEXCOORD_0":28 872 | }, 873 | "indices":29, 874 | "material":1 875 | } 876 | ] 877 | }, 878 | { 879 | "name":"Cone.001", 880 | "primitives":[ 881 | { 882 | "attributes":{ 883 | "POSITION":30, 884 | "NORMAL":31, 885 | "TEXCOORD_0":32 886 | }, 887 | "indices":29, 888 | "material":1 889 | } 890 | ] 891 | }, 892 | { 893 | "name":"Suzanne", 894 | "primitives":[ 895 | { 896 | "attributes":{ 897 | "POSITION":33, 898 | "NORMAL":34, 899 | "TEXCOORD_0":35 900 | }, 901 | "indices":36, 902 | "material":0 903 | } 904 | ] 905 | }, 906 | { 907 | "name":"Cylinder", 908 | "primitives":[ 909 | { 910 | "attributes":{ 911 | "POSITION":37, 912 | "NORMAL":38, 913 | "TEXCOORD_0":39 914 | }, 915 | "indices":14, 916 | "material":0 917 | } 918 | ] 919 | }, 920 | { 921 | "name":"Suzanne.002", 922 | "primitives":[ 923 | { 924 | "attributes":{ 925 | "POSITION":40, 926 | "NORMAL":41, 927 | "TEXCOORD_0":42 928 | }, 929 | "indices":36, 930 | "material":0 931 | } 932 | ] 933 | }, 934 | { 935 | "name":"Icosphere", 936 | "primitives":[ 937 | { 938 | "attributes":{ 939 | "POSITION":43, 940 | "NORMAL":44, 941 | "TEXCOORD_0":45 942 | }, 943 | "indices":46, 944 | "material":0 945 | } 946 | ] 947 | }, 948 | { 949 | "name":"Plane", 950 | "primitives":[ 951 | { 952 | "attributes":{ 953 | "POSITION":47, 954 | "NORMAL":48, 955 | "TEXCOORD_0":49 956 | }, 957 | "indices":50, 958 | "material":2 959 | } 960 | ] 961 | }, 962 | { 963 | "name":"Cylinder.005", 964 | "primitives":[ 965 | { 966 | "attributes":{ 967 | "POSITION":51, 968 | "NORMAL":52 969 | }, 970 | "indices":53, 971 | "material":0 972 | } 973 | ] 974 | }, 975 | { 976 | "name":"Cylinder.007", 977 | "primitives":[ 978 | { 979 | "attributes":{ 980 | "POSITION":54, 981 | "NORMAL":55 982 | }, 983 | "indices":56, 984 | "material":0 985 | } 986 | ] 987 | } 988 | ], 989 | "textures":[ 990 | { 991 | "sampler":0, 992 | "source":0 993 | } 994 | ], 995 | "images":[ 996 | { 997 | "mimeType":"image/png", 998 | "name":"GroundBox_color", 999 | "uri":"GroundBox_color.png" 1000 | } 1001 | ], 1002 | "accessors":[ 1003 | { 1004 | "bufferView":0, 1005 | "componentType":5126, 1006 | "count":24, 1007 | "max":[ 1008 | 0.2642750144004822, 1009 | 0.5, 1010 | 0.2642750144004822 1011 | ], 1012 | "min":[ 1013 | -0.2642750144004822, 1014 | -0.5, 1015 | -0.2642750144004822 1016 | ], 1017 | "type":"VEC3" 1018 | }, 1019 | { 1020 | "bufferView":1, 1021 | "componentType":5126, 1022 | "count":24, 1023 | "type":"VEC3" 1024 | }, 1025 | { 1026 | "bufferView":2, 1027 | "componentType":5126, 1028 | "count":24, 1029 | "type":"VEC2" 1030 | }, 1031 | { 1032 | "bufferView":3, 1033 | "componentType":5123, 1034 | "count":36, 1035 | "type":"SCALAR" 1036 | }, 1037 | { 1038 | "bufferView":4, 1039 | "componentType":5126, 1040 | "count":682, 1041 | "max":[ 1042 | 0.25, 1043 | 0.550000011920929, 1044 | 0.2499999850988388 1045 | ], 1046 | "min":[ 1047 | -0.2499999850988388, 1048 | -0.550000011920929, 1049 | -0.2499999850988388 1050 | ], 1051 | "type":"VEC3" 1052 | }, 1053 | { 1054 | "bufferView":5, 1055 | "componentType":5126, 1056 | "count":682, 1057 | "type":"VEC3" 1058 | }, 1059 | { 1060 | "bufferView":6, 1061 | "componentType":5123, 1062 | "count":4080, 1063 | "type":"SCALAR" 1064 | }, 1065 | { 1066 | "bufferView":7, 1067 | "componentType":5126, 1068 | "count":130, 1069 | "max":[ 1070 | 0.15483441948890686, 1071 | 0.03331007808446884, 1072 | 0.15483441948890686 1073 | ], 1074 | "min":[ 1075 | -0.15483441948890686, 1076 | -0.03331007808446884, 1077 | -0.15483441948890686 1078 | ], 1079 | "type":"VEC3" 1080 | }, 1081 | { 1082 | "bufferView":8, 1083 | "componentType":5126, 1084 | "count":130, 1085 | "type":"VEC3" 1086 | }, 1087 | { 1088 | "bufferView":9, 1089 | "componentType":5126, 1090 | "count":130, 1091 | "type":"VEC2" 1092 | }, 1093 | { 1094 | "bufferView":10, 1095 | "componentType":5123, 1096 | "count":372, 1097 | "type":"SCALAR" 1098 | }, 1099 | { 1100 | "bufferView":11, 1101 | "componentType":5126, 1102 | "count":130, 1103 | "max":[ 1104 | 0.15483441948890686, 1105 | 0.03331007808446884, 1106 | 0.15483441948890686 1107 | ], 1108 | "min":[ 1109 | -0.15483441948890686, 1110 | -0.03331007808446884, 1111 | -0.15483441948890686 1112 | ], 1113 | "type":"VEC3" 1114 | }, 1115 | { 1116 | "bufferView":12, 1117 | "componentType":5126, 1118 | "count":130, 1119 | "type":"VEC3" 1120 | }, 1121 | { 1122 | "bufferView":13, 1123 | "componentType":5126, 1124 | "count":130, 1125 | "type":"VEC2" 1126 | }, 1127 | { 1128 | "bufferView":14, 1129 | "componentType":5123, 1130 | "count":372, 1131 | "type":"SCALAR" 1132 | }, 1133 | { 1134 | "bufferView":15, 1135 | "componentType":5126, 1136 | "count":130, 1137 | "max":[ 1138 | 0.15483441948890686, 1139 | 0.03331007808446884, 1140 | 0.15483441948890686 1141 | ], 1142 | "min":[ 1143 | -0.15483441948890686, 1144 | -0.03331007808446884, 1145 | -0.15483441948890686 1146 | ], 1147 | "type":"VEC3" 1148 | }, 1149 | { 1150 | "bufferView":16, 1151 | "componentType":5126, 1152 | "count":130, 1153 | "type":"VEC3" 1154 | }, 1155 | { 1156 | "bufferView":17, 1157 | "componentType":5126, 1158 | "count":130, 1159 | "type":"VEC2" 1160 | }, 1161 | { 1162 | "bufferView":18, 1163 | "componentType":5126, 1164 | "count":130, 1165 | "max":[ 1166 | 0.15483441948890686, 1167 | 0.03331007808446884, 1168 | 0.15483441948890686 1169 | ], 1170 | "min":[ 1171 | -0.15483441948890686, 1172 | -0.03331007808446884, 1173 | -0.15483441948890686 1174 | ], 1175 | "type":"VEC3" 1176 | }, 1177 | { 1178 | "bufferView":19, 1179 | "componentType":5126, 1180 | "count":130, 1181 | "type":"VEC3" 1182 | }, 1183 | { 1184 | "bufferView":20, 1185 | "componentType":5126, 1186 | "count":130, 1187 | "type":"VEC2" 1188 | }, 1189 | { 1190 | "bufferView":21, 1191 | "componentType":5123, 1192 | "count":372, 1193 | "type":"SCALAR" 1194 | }, 1195 | { 1196 | "bufferView":22, 1197 | "componentType":5126, 1198 | "count":60, 1199 | "max":[ 1200 | 0.8732901215553284, 1201 | 0.25448209047317505, 1202 | 0.25802522897720337 1203 | ], 1204 | "min":[ 1205 | -0.5833923816680908, 1206 | -0.258025199174881, 1207 | -0.258025199174881 1208 | ], 1209 | "type":"VEC3" 1210 | }, 1211 | { 1212 | "bufferView":23, 1213 | "componentType":5126, 1214 | "count":60, 1215 | "type":"VEC3" 1216 | }, 1217 | { 1218 | "bufferView":24, 1219 | "componentType":5126, 1220 | "count":60, 1221 | "type":"VEC2" 1222 | }, 1223 | { 1224 | "bufferView":25, 1225 | "componentType":5123, 1226 | "count":168, 1227 | "type":"SCALAR" 1228 | }, 1229 | { 1230 | "bufferView":26, 1231 | "componentType":5126, 1232 | "count":128, 1233 | "max":[ 1234 | 1, 1235 | 1, 1236 | 1 1237 | ], 1238 | "min":[ 1239 | -1, 1240 | -1, 1241 | -1 1242 | ], 1243 | "type":"VEC3" 1244 | }, 1245 | { 1246 | "bufferView":27, 1247 | "componentType":5126, 1248 | "count":128, 1249 | "type":"VEC3" 1250 | }, 1251 | { 1252 | "bufferView":28, 1253 | "componentType":5126, 1254 | "count":128, 1255 | "type":"VEC2" 1256 | }, 1257 | { 1258 | "bufferView":29, 1259 | "componentType":5123, 1260 | "count":186, 1261 | "type":"SCALAR" 1262 | }, 1263 | { 1264 | "bufferView":30, 1265 | "componentType":5126, 1266 | "count":128, 1267 | "max":[ 1268 | 1, 1269 | 1, 1270 | 1 1271 | ], 1272 | "min":[ 1273 | -1, 1274 | -1, 1275 | -1 1276 | ], 1277 | "type":"VEC3" 1278 | }, 1279 | { 1280 | "bufferView":31, 1281 | "componentType":5126, 1282 | "count":128, 1283 | "type":"VEC3" 1284 | }, 1285 | { 1286 | "bufferView":32, 1287 | "componentType":5126, 1288 | "count":128, 1289 | "type":"VEC2" 1290 | }, 1291 | { 1292 | "bufferView":33, 1293 | "componentType":5126, 1294 | "count":556, 1295 | "max":[ 1296 | 0.5531045794487, 1297 | 0.3982353210449219, 1298 | 0.3445051610469818 1299 | ], 1300 | "min":[ 1301 | -0.5531045794487, 1302 | -0.3982353210449219, 1303 | -0.3445051610469818 1304 | ], 1305 | "type":"VEC3" 1306 | }, 1307 | { 1308 | "bufferView":34, 1309 | "componentType":5126, 1310 | "count":556, 1311 | "type":"VEC3" 1312 | }, 1313 | { 1314 | "bufferView":35, 1315 | "componentType":5126, 1316 | "count":556, 1317 | "type":"VEC2" 1318 | }, 1319 | { 1320 | "bufferView":36, 1321 | "componentType":5123, 1322 | "count":2904, 1323 | "type":"SCALAR" 1324 | }, 1325 | { 1326 | "bufferView":37, 1327 | "componentType":5126, 1328 | "count":130, 1329 | "max":[ 1330 | 0.24762332439422607, 1331 | 0.5, 1332 | 0.24762332439422607 1333 | ], 1334 | "min":[ 1335 | -0.24762332439422607, 1336 | -0.5, 1337 | -0.24762332439422607 1338 | ], 1339 | "type":"VEC3" 1340 | }, 1341 | { 1342 | "bufferView":38, 1343 | "componentType":5126, 1344 | "count":130, 1345 | "type":"VEC3" 1346 | }, 1347 | { 1348 | "bufferView":39, 1349 | "componentType":5126, 1350 | "count":130, 1351 | "type":"VEC2" 1352 | }, 1353 | { 1354 | "bufferView":40, 1355 | "componentType":5126, 1356 | "count":556, 1357 | "max":[ 1358 | 0.5531045794487, 1359 | 0.3982353210449219, 1360 | 0.3445051610469818 1361 | ], 1362 | "min":[ 1363 | -0.5531045794487, 1364 | -0.3982353210449219, 1365 | -0.3445051610469818 1366 | ], 1367 | "type":"VEC3" 1368 | }, 1369 | { 1370 | "bufferView":41, 1371 | "componentType":5126, 1372 | "count":556, 1373 | "type":"VEC3" 1374 | }, 1375 | { 1376 | "bufferView":42, 1377 | "componentType":5126, 1378 | "count":556, 1379 | "type":"VEC2" 1380 | }, 1381 | { 1382 | "bufferView":43, 1383 | "componentType":5126, 1384 | "count":285, 1385 | "max":[ 1386 | 0.3389868140220642, 1387 | 0.34162437915802, 1388 | 0.3396261930465698 1389 | ], 1390 | "min":[ 1391 | -0.3389868140220642, 1392 | -0.34162437915802, 1393 | -0.3396261930465698 1394 | ], 1395 | "type":"VEC3" 1396 | }, 1397 | { 1398 | "bufferView":44, 1399 | "componentType":5126, 1400 | "count":285, 1401 | "type":"VEC3" 1402 | }, 1403 | { 1404 | "bufferView":45, 1405 | "componentType":5126, 1406 | "count":285, 1407 | "type":"VEC2" 1408 | }, 1409 | { 1410 | "bufferView":46, 1411 | "componentType":5123, 1412 | "count":1440, 1413 | "type":"SCALAR" 1414 | }, 1415 | { 1416 | "bufferView":47, 1417 | "componentType":5126, 1418 | "count":1089, 1419 | "max":[ 1420 | 4.62559175491333, 1421 | 3.034045696258545, 1422 | 2.896914482116699 1423 | ], 1424 | "min":[ 1425 | -4.70067834854126, 1426 | -0.15763145685195923, 1427 | -5.7732110023498535 1428 | ], 1429 | "type":"VEC3" 1430 | }, 1431 | { 1432 | "bufferView":48, 1433 | "componentType":5126, 1434 | "count":1089, 1435 | "type":"VEC3" 1436 | }, 1437 | { 1438 | "bufferView":49, 1439 | "componentType":5126, 1440 | "count":1089, 1441 | "type":"VEC2" 1442 | }, 1443 | { 1444 | "bufferView":50, 1445 | "componentType":5123, 1446 | "count":6144, 1447 | "type":"SCALAR" 1448 | }, 1449 | { 1450 | "bufferView":51, 1451 | "componentType":5126, 1452 | "count":64, 1453 | "max":[ 1454 | 0.5, 1455 | 0.5, 1456 | 0.5 1457 | ], 1458 | "min":[ 1459 | -0.5, 1460 | -0.5, 1461 | -0.5 1462 | ], 1463 | "type":"VEC3" 1464 | }, 1465 | { 1466 | "bufferView":52, 1467 | "componentType":5126, 1468 | "count":64, 1469 | "type":"VEC3" 1470 | }, 1471 | { 1472 | "bufferView":53, 1473 | "componentType":5123, 1474 | "count":372, 1475 | "type":"SCALAR" 1476 | }, 1477 | { 1478 | "bufferView":54, 1479 | "componentType":5126, 1480 | "count":682, 1481 | "max":[ 1482 | 0.4000000059604645, 1483 | 0.7000000476837158, 1484 | 0.40000003576278687 1485 | ], 1486 | "min":[ 1487 | -0.40000003576278687, 1488 | -0.550000011920929, 1489 | -0.40000003576278687 1490 | ], 1491 | "type":"VEC3" 1492 | }, 1493 | { 1494 | "bufferView":55, 1495 | "componentType":5126, 1496 | "count":682, 1497 | "type":"VEC3" 1498 | }, 1499 | { 1500 | "bufferView":56, 1501 | "componentType":5123, 1502 | "count":4080, 1503 | "type":"SCALAR" 1504 | } 1505 | ], 1506 | "bufferViews":[ 1507 | { 1508 | "buffer":0, 1509 | "byteLength":288, 1510 | "byteOffset":0, 1511 | "target":34962 1512 | }, 1513 | { 1514 | "buffer":0, 1515 | "byteLength":288, 1516 | "byteOffset":288, 1517 | "target":34962 1518 | }, 1519 | { 1520 | "buffer":0, 1521 | "byteLength":192, 1522 | "byteOffset":576, 1523 | "target":34962 1524 | }, 1525 | { 1526 | "buffer":0, 1527 | "byteLength":72, 1528 | "byteOffset":768, 1529 | "target":34963 1530 | }, 1531 | { 1532 | "buffer":0, 1533 | "byteLength":8184, 1534 | "byteOffset":840, 1535 | "target":34962 1536 | }, 1537 | { 1538 | "buffer":0, 1539 | "byteLength":8184, 1540 | "byteOffset":9024, 1541 | "target":34962 1542 | }, 1543 | { 1544 | "buffer":0, 1545 | "byteLength":8160, 1546 | "byteOffset":17208, 1547 | "target":34963 1548 | }, 1549 | { 1550 | "buffer":0, 1551 | "byteLength":1560, 1552 | "byteOffset":25368, 1553 | "target":34962 1554 | }, 1555 | { 1556 | "buffer":0, 1557 | "byteLength":1560, 1558 | "byteOffset":26928, 1559 | "target":34962 1560 | }, 1561 | { 1562 | "buffer":0, 1563 | "byteLength":1040, 1564 | "byteOffset":28488, 1565 | "target":34962 1566 | }, 1567 | { 1568 | "buffer":0, 1569 | "byteLength":744, 1570 | "byteOffset":29528, 1571 | "target":34963 1572 | }, 1573 | { 1574 | "buffer":0, 1575 | "byteLength":1560, 1576 | "byteOffset":30272, 1577 | "target":34962 1578 | }, 1579 | { 1580 | "buffer":0, 1581 | "byteLength":1560, 1582 | "byteOffset":31832, 1583 | "target":34962 1584 | }, 1585 | { 1586 | "buffer":0, 1587 | "byteLength":1040, 1588 | "byteOffset":33392, 1589 | "target":34962 1590 | }, 1591 | { 1592 | "buffer":0, 1593 | "byteLength":744, 1594 | "byteOffset":34432, 1595 | "target":34963 1596 | }, 1597 | { 1598 | "buffer":0, 1599 | "byteLength":1560, 1600 | "byteOffset":35176, 1601 | "target":34962 1602 | }, 1603 | { 1604 | "buffer":0, 1605 | "byteLength":1560, 1606 | "byteOffset":36736, 1607 | "target":34962 1608 | }, 1609 | { 1610 | "buffer":0, 1611 | "byteLength":1040, 1612 | "byteOffset":38296, 1613 | "target":34962 1614 | }, 1615 | { 1616 | "buffer":0, 1617 | "byteLength":1560, 1618 | "byteOffset":39336, 1619 | "target":34962 1620 | }, 1621 | { 1622 | "buffer":0, 1623 | "byteLength":1560, 1624 | "byteOffset":40896, 1625 | "target":34962 1626 | }, 1627 | { 1628 | "buffer":0, 1629 | "byteLength":1040, 1630 | "byteOffset":42456, 1631 | "target":34962 1632 | }, 1633 | { 1634 | "buffer":0, 1635 | "byteLength":744, 1636 | "byteOffset":43496, 1637 | "target":34963 1638 | }, 1639 | { 1640 | "buffer":0, 1641 | "byteLength":720, 1642 | "byteOffset":44240, 1643 | "target":34962 1644 | }, 1645 | { 1646 | "buffer":0, 1647 | "byteLength":720, 1648 | "byteOffset":44960, 1649 | "target":34962 1650 | }, 1651 | { 1652 | "buffer":0, 1653 | "byteLength":480, 1654 | "byteOffset":45680, 1655 | "target":34962 1656 | }, 1657 | { 1658 | "buffer":0, 1659 | "byteLength":336, 1660 | "byteOffset":46160, 1661 | "target":34963 1662 | }, 1663 | { 1664 | "buffer":0, 1665 | "byteLength":1536, 1666 | "byteOffset":46496, 1667 | "target":34962 1668 | }, 1669 | { 1670 | "buffer":0, 1671 | "byteLength":1536, 1672 | "byteOffset":48032, 1673 | "target":34962 1674 | }, 1675 | { 1676 | "buffer":0, 1677 | "byteLength":1024, 1678 | "byteOffset":49568, 1679 | "target":34962 1680 | }, 1681 | { 1682 | "buffer":0, 1683 | "byteLength":372, 1684 | "byteOffset":50592, 1685 | "target":34963 1686 | }, 1687 | { 1688 | "buffer":0, 1689 | "byteLength":1536, 1690 | "byteOffset":50964, 1691 | "target":34962 1692 | }, 1693 | { 1694 | "buffer":0, 1695 | "byteLength":1536, 1696 | "byteOffset":52500, 1697 | "target":34962 1698 | }, 1699 | { 1700 | "buffer":0, 1701 | "byteLength":1024, 1702 | "byteOffset":54036, 1703 | "target":34962 1704 | }, 1705 | { 1706 | "buffer":0, 1707 | "byteLength":6672, 1708 | "byteOffset":55060, 1709 | "target":34962 1710 | }, 1711 | { 1712 | "buffer":0, 1713 | "byteLength":6672, 1714 | "byteOffset":61732, 1715 | "target":34962 1716 | }, 1717 | { 1718 | "buffer":0, 1719 | "byteLength":4448, 1720 | "byteOffset":68404, 1721 | "target":34962 1722 | }, 1723 | { 1724 | "buffer":0, 1725 | "byteLength":5808, 1726 | "byteOffset":72852, 1727 | "target":34963 1728 | }, 1729 | { 1730 | "buffer":0, 1731 | "byteLength":1560, 1732 | "byteOffset":78660, 1733 | "target":34962 1734 | }, 1735 | { 1736 | "buffer":0, 1737 | "byteLength":1560, 1738 | "byteOffset":80220, 1739 | "target":34962 1740 | }, 1741 | { 1742 | "buffer":0, 1743 | "byteLength":1040, 1744 | "byteOffset":81780, 1745 | "target":34962 1746 | }, 1747 | { 1748 | "buffer":0, 1749 | "byteLength":6672, 1750 | "byteOffset":82820, 1751 | "target":34962 1752 | }, 1753 | { 1754 | "buffer":0, 1755 | "byteLength":6672, 1756 | "byteOffset":89492, 1757 | "target":34962 1758 | }, 1759 | { 1760 | "buffer":0, 1761 | "byteLength":4448, 1762 | "byteOffset":96164, 1763 | "target":34962 1764 | }, 1765 | { 1766 | "buffer":0, 1767 | "byteLength":3420, 1768 | "byteOffset":100612, 1769 | "target":34962 1770 | }, 1771 | { 1772 | "buffer":0, 1773 | "byteLength":3420, 1774 | "byteOffset":104032, 1775 | "target":34962 1776 | }, 1777 | { 1778 | "buffer":0, 1779 | "byteLength":2280, 1780 | "byteOffset":107452, 1781 | "target":34962 1782 | }, 1783 | { 1784 | "buffer":0, 1785 | "byteLength":2880, 1786 | "byteOffset":109732, 1787 | "target":34963 1788 | }, 1789 | { 1790 | "buffer":0, 1791 | "byteLength":13068, 1792 | "byteOffset":112612, 1793 | "target":34962 1794 | }, 1795 | { 1796 | "buffer":0, 1797 | "byteLength":13068, 1798 | "byteOffset":125680, 1799 | "target":34962 1800 | }, 1801 | { 1802 | "buffer":0, 1803 | "byteLength":8712, 1804 | "byteOffset":138748, 1805 | "target":34962 1806 | }, 1807 | { 1808 | "buffer":0, 1809 | "byteLength":12288, 1810 | "byteOffset":147460, 1811 | "target":34963 1812 | }, 1813 | { 1814 | "buffer":0, 1815 | "byteLength":768, 1816 | "byteOffset":159748, 1817 | "target":34962 1818 | }, 1819 | { 1820 | "buffer":0, 1821 | "byteLength":768, 1822 | "byteOffset":160516, 1823 | "target":34962 1824 | }, 1825 | { 1826 | "buffer":0, 1827 | "byteLength":744, 1828 | "byteOffset":161284, 1829 | "target":34963 1830 | }, 1831 | { 1832 | "buffer":0, 1833 | "byteLength":8184, 1834 | "byteOffset":162028, 1835 | "target":34962 1836 | }, 1837 | { 1838 | "buffer":0, 1839 | "byteLength":8184, 1840 | "byteOffset":170212, 1841 | "target":34962 1842 | }, 1843 | { 1844 | "buffer":0, 1845 | "byteLength":8160, 1846 | "byteOffset":178396, 1847 | "target":34963 1848 | } 1849 | ], 1850 | "samplers":[ 1851 | { 1852 | "magFilter":9729, 1853 | "minFilter":9987 1854 | } 1855 | ], 1856 | "buffers":[ 1857 | { 1858 | "byteLength":186556, 1859 | "uri":"ShapeTypes.bin" 1860 | } 1861 | ] 1862 | } 1863 | -------------------------------------------------------------------------------- /samples/Triggers/SlopedFloor_color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eoineoineoin/glTF_Physics/04fe68e4030c7e01361f8d19300639aef6008e77/samples/Triggers/SlopedFloor_color.png -------------------------------------------------------------------------------- /samples/Triggers/Triggers.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eoineoineoin/glTF_Physics/04fe68e4030c7e01361f8d19300639aef6008e77/samples/Triggers/Triggers.bin -------------------------------------------------------------------------------- /samples/Triggers/Triggers.glb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eoineoineoin/glTF_Physics/04fe68e4030c7e01361f8d19300639aef6008e77/samples/Triggers/Triggers.glb -------------------------------------------------------------------------------- /samples/Triggers/Triggers.gltf: -------------------------------------------------------------------------------- 1 | { 2 | "asset":{ 3 | "generator":"Khronos glTF Blender I/O v4.4.55", 4 | "version":"2.0" 5 | }, 6 | "extensionsUsed":[ 7 | "KHR_lights_punctual", 8 | "KHR_implicit_shapes", 9 | "KHR_physics_rigid_bodies" 10 | ], 11 | "extensionsRequired":[ 12 | "KHR_lights_punctual" 13 | ], 14 | "extensions":{ 15 | "KHR_lights_punctual":{ 16 | "lights":[ 17 | { 18 | "color":[ 19 | 1, 20 | 1, 21 | 1 22 | ], 23 | "intensity":54.35141306588226, 24 | "type":"point", 25 | "name":"Light" 26 | } 27 | ] 28 | }, 29 | "KHR_implicit_shapes":{ 30 | "shapes":[ 31 | { 32 | "type":"box", 33 | "box":{ 34 | "size":[ 35 | 10.376665115356445, 36 | 0.3404197692871094, 37 | 10.376665115356445 38 | ] 39 | } 40 | } 41 | ] 42 | }, 43 | "KHR_physics_rigid_bodies":{ 44 | "physicsMaterials":[ 45 | { 46 | "staticFriction":0, 47 | "dynamicFriction":0, 48 | "restitution":0 49 | }, 50 | { 51 | "staticFriction":0.5, 52 | "dynamicFriction":0.5, 53 | "restitution":0 54 | } 55 | ], 56 | "collisionFilters":[ 57 | { 58 | "collisionSystems":[ 59 | "System_0" 60 | ], 61 | "collideWithSystems":[ 62 | "System_0" 63 | ] 64 | } 65 | ] 66 | } 67 | }, 68 | "scene":0, 69 | "scenes":[ 70 | { 71 | "name":"Scene", 72 | "nodes":[ 73 | 0, 74 | 1, 75 | 2, 76 | 4, 77 | 11 78 | ] 79 | } 80 | ], 81 | "nodes":[ 82 | { 83 | "extensions":{ 84 | "KHR_lights_punctual":{ 85 | "light":0 86 | } 87 | }, 88 | "name":"Light", 89 | "rotation":[ 90 | -0.28416627645492554, 91 | 0.7269423007965088, 92 | 0.34203392267227173, 93 | 0.5232754945755005 94 | ], 95 | "translation":[ 96 | 4.076245307922363, 97 | 5.903861999511719, 98 | -1.0054539442062378 99 | ] 100 | }, 101 | { 102 | "camera":0, 103 | "name":"Camera", 104 | "rotation":[ 105 | -0.14519648253917694, 106 | 0, 107 | 0, 108 | 0.9894028902053833 109 | ], 110 | "translation":[ 111 | -0.021041998639702797, 112 | 2.5271661281585693, 113 | 7.237770080566406 114 | ] 115 | }, 116 | { 117 | "extensions":{ 118 | "KHR_physics_rigid_bodies":{ 119 | "collider":{ 120 | "geometry":{ 121 | "shape":0 122 | }, 123 | "physicsMaterial":0, 124 | "collisionFilter":0 125 | } 126 | } 127 | }, 128 | "mesh":0, 129 | "name":"Floor", 130 | "scale":[ 131 | 0.16844403743743896, 132 | 0.16844403743743896, 133 | 0.16844403743743896 134 | ] 135 | }, 136 | { 137 | "mesh":1, 138 | "name":"physicsMeshDataNode", 139 | "rotation":[ 140 | 0, 141 | 0, 142 | 0, 143 | 1 144 | ], 145 | "translation":[ 146 | 0, 147 | 0, 148 | 0 149 | ] 150 | }, 151 | { 152 | "extensions":{ 153 | "KHR_physics_rigid_bodies":{ 154 | "motion":{ 155 | "mass":1 156 | }, 157 | "collider":{ 158 | "geometry":{ 159 | "convexHull":true, 160 | "node":3 161 | }, 162 | "physicsMaterial":1, 163 | "collisionFilter":0 164 | } 165 | } 166 | }, 167 | "mesh":1, 168 | "name":"Cube", 169 | "translation":[ 170 | -0.0003802180290222168, 171 | 1.8371120691299438, 172 | 0.00196520215831697 173 | ] 174 | }, 175 | { 176 | "mesh":2, 177 | "name":"physicsMeshDataNode", 178 | "rotation":[ 179 | 0, 180 | 0, 181 | 0, 182 | 1 183 | ], 184 | "translation":[ 185 | 0, 186 | 0, 187 | 0 188 | ] 189 | }, 190 | { 191 | "extensions":{ 192 | "KHR_physics_rigid_bodies":{ 193 | "trigger":{ 194 | "geometry":{ 195 | "convexHull":true, 196 | "node":5 197 | }, 198 | "collisionFilter":0 199 | } 200 | } 201 | }, 202 | "mesh":2, 203 | "name":"ChildA", 204 | "rotation":[ 205 | 0, 206 | 0, 207 | -0.7071068286895752, 208 | 0.7071068286895752 209 | ], 210 | "translation":[ 211 | -0.2780584394931793, 212 | 0.6075316667556763, 213 | 0.28256291151046753 214 | ] 215 | }, 216 | { 217 | "mesh":3, 218 | "name":"physicsMeshDataNode", 219 | "rotation":[ 220 | 0, 221 | 0, 222 | 0, 223 | 1 224 | ], 225 | "translation":[ 226 | 0, 227 | 0, 228 | 0 229 | ] 230 | }, 231 | { 232 | "extensions":{ 233 | "KHR_physics_rigid_bodies":{ 234 | "trigger":{ 235 | "geometry":{ 236 | "convexHull":true, 237 | "node":7 238 | }, 239 | "collisionFilter":0 240 | } 241 | } 242 | }, 243 | "mesh":3, 244 | "name":"ChildB", 245 | "rotation":[ 246 | -0.5000000596046448, 247 | 0.5, 248 | -0.5, 249 | 0.5 250 | ], 251 | "translation":[ 252 | -0.2780584394931793, 253 | 0.6075316667556763, 254 | 0.28256291151046753 255 | ] 256 | }, 257 | { 258 | "mesh":4, 259 | "name":"physicsMeshDataNode", 260 | "rotation":[ 261 | 0, 262 | 0, 263 | 0, 264 | 1 265 | ], 266 | "translation":[ 267 | 0, 268 | 0, 269 | 0 270 | ] 271 | }, 272 | { 273 | "extensions":{ 274 | "KHR_physics_rigid_bodies":{ 275 | "trigger":{ 276 | "geometry":{ 277 | "convexHull":true, 278 | "node":9 279 | }, 280 | "collisionFilter":0 281 | } 282 | } 283 | }, 284 | "mesh":4, 285 | "name":"Standalone", 286 | "rotation":[ 287 | -0.5000000596046448, 288 | 0.5, 289 | -0.5, 290 | 0.5 291 | ], 292 | "translation":[ 293 | 0.2828197777271271, 294 | 0.6075316667556763, 295 | -0.2794848382472992 296 | ] 297 | }, 298 | { 299 | "children":[ 300 | 6, 301 | 8, 302 | 10 303 | ], 304 | "name":"Triggers" 305 | } 306 | ], 307 | "cameras":[ 308 | { 309 | "name":"Camera", 310 | "perspective":{ 311 | "aspectRatio":1.7777777777777777, 312 | "yfov":0.39959652046304894, 313 | "zfar":100, 314 | "znear":0.10000000149011612 315 | }, 316 | "type":"perspective" 317 | } 318 | ], 319 | "materials":[ 320 | { 321 | "doubleSided":true, 322 | "name":"FloorBaked", 323 | "pbrMetallicRoughness":{ 324 | "baseColorTexture":{ 325 | "index":0 326 | }, 327 | "metallicFactor":0, 328 | "roughnessFactor":0.5 329 | } 330 | }, 331 | { 332 | "doubleSided":true, 333 | "name":"Yellowish", 334 | "pbrMetallicRoughness":{ 335 | "baseColorFactor":[ 336 | 0.8000000715255737, 337 | 0.7555356621742249, 338 | 0.0002703802892938256, 339 | 1 340 | ], 341 | "metallicFactor":0.5, 342 | "roughnessFactor":0.800000011920929 343 | } 344 | }, 345 | { 346 | "alphaMode":"BLEND", 347 | "doubleSided":true, 348 | "name":"TransparentGreen", 349 | "pbrMetallicRoughness":{ 350 | "baseColorFactor":[ 351 | 0.11157119274139404, 352 | 0.8000000715255737, 353 | 0, 354 | 0.32684826850891113 355 | ], 356 | "metallicFactor":0, 357 | "roughnessFactor":0.5 358 | } 359 | } 360 | ], 361 | "meshes":[ 362 | { 363 | "name":"Cube.001", 364 | "primitives":[ 365 | { 366 | "attributes":{ 367 | "POSITION":0, 368 | "NORMAL":1, 369 | "TEXCOORD_0":2 370 | }, 371 | "indices":3, 372 | "material":0 373 | } 374 | ] 375 | }, 376 | { 377 | "name":"Cube", 378 | "primitives":[ 379 | { 380 | "attributes":{ 381 | "POSITION":4, 382 | "NORMAL":5, 383 | "TEXCOORD_0":6 384 | }, 385 | "indices":7, 386 | "material":1 387 | } 388 | ] 389 | }, 390 | { 391 | "name":"Cube.002", 392 | "primitives":[ 393 | { 394 | "attributes":{ 395 | "POSITION":8, 396 | "NORMAL":9, 397 | "TEXCOORD_0":10 398 | }, 399 | "indices":7, 400 | "material":2 401 | } 402 | ] 403 | }, 404 | { 405 | "name":"Cube.003", 406 | "primitives":[ 407 | { 408 | "attributes":{ 409 | "POSITION":11, 410 | "NORMAL":12, 411 | "TEXCOORD_0":13 412 | }, 413 | "indices":7, 414 | "material":2 415 | } 416 | ] 417 | }, 418 | { 419 | "name":"Cube.004", 420 | "primitives":[ 421 | { 422 | "attributes":{ 423 | "POSITION":14, 424 | "NORMAL":15, 425 | "TEXCOORD_0":16 426 | }, 427 | "indices":7, 428 | "material":2 429 | } 430 | ] 431 | } 432 | ], 433 | "textures":[ 434 | { 435 | "sampler":0, 436 | "source":0 437 | } 438 | ], 439 | "images":[ 440 | { 441 | "mimeType":"image/png", 442 | "name":"SlopedFloor_color", 443 | "uri":"SlopedFloor_color.png" 444 | } 445 | ], 446 | "accessors":[ 447 | { 448 | "bufferView":0, 449 | "componentType":5126, 450 | "count":24, 451 | "max":[ 452 | 5.188332557678223, 453 | 0.1702098846435547, 454 | 5.188332557678223 455 | ], 456 | "min":[ 457 | -5.188332557678223, 458 | -0.1702098846435547, 459 | -5.188332557678223 460 | ], 461 | "type":"VEC3" 462 | }, 463 | { 464 | "bufferView":1, 465 | "componentType":5126, 466 | "count":24, 467 | "type":"VEC3" 468 | }, 469 | { 470 | "bufferView":2, 471 | "componentType":5126, 472 | "count":24, 473 | "type":"VEC2" 474 | }, 475 | { 476 | "bufferView":3, 477 | "componentType":5123, 478 | "count":36, 479 | "type":"SCALAR" 480 | }, 481 | { 482 | "bufferView":4, 483 | "componentType":5126, 484 | "count":24, 485 | "max":[ 486 | 0.10373210906982422, 487 | 0.10373210906982422, 488 | 0.10373210906982422 489 | ], 490 | "min":[ 491 | -0.10373210906982422, 492 | -0.10373210906982422, 493 | -0.10373210906982422 494 | ], 495 | "type":"VEC3" 496 | }, 497 | { 498 | "bufferView":5, 499 | "componentType":5126, 500 | "count":24, 501 | "type":"VEC3" 502 | }, 503 | { 504 | "bufferView":6, 505 | "componentType":5126, 506 | "count":24, 507 | "type":"VEC2" 508 | }, 509 | { 510 | "bufferView":7, 511 | "componentType":5123, 512 | "count":36, 513 | "type":"SCALAR" 514 | }, 515 | { 516 | "bufferView":8, 517 | "componentType":5126, 518 | "count":24, 519 | "max":[ 520 | 0.277789443731308, 521 | 0.8446961641311646, 522 | 0.277789443731308 523 | ], 524 | "min":[ 525 | -0.277789443731308, 526 | -0.277789443731308, 527 | -0.277789443731308 528 | ], 529 | "type":"VEC3" 530 | }, 531 | { 532 | "bufferView":9, 533 | "componentType":5126, 534 | "count":24, 535 | "type":"VEC3" 536 | }, 537 | { 538 | "bufferView":10, 539 | "componentType":5126, 540 | "count":24, 541 | "type":"VEC2" 542 | }, 543 | { 544 | "bufferView":11, 545 | "componentType":5126, 546 | "count":24, 547 | "max":[ 548 | 0.277789443731308, 549 | 0.8446961641311646, 550 | 0.277789443731308 551 | ], 552 | "min":[ 553 | -0.277789443731308, 554 | -0.277789443731308, 555 | -0.277789443731308 556 | ], 557 | "type":"VEC3" 558 | }, 559 | { 560 | "bufferView":12, 561 | "componentType":5126, 562 | "count":24, 563 | "type":"VEC3" 564 | }, 565 | { 566 | "bufferView":13, 567 | "componentType":5126, 568 | "count":24, 569 | "type":"VEC2" 570 | }, 571 | { 572 | "bufferView":14, 573 | "componentType":5126, 574 | "count":24, 575 | "max":[ 576 | 0.277789443731308, 577 | 0.276752769947052, 578 | 0.277789443731308 579 | ], 580 | "min":[ 581 | -0.277789443731308, 582 | -0.277789443731308, 583 | -0.277789443731308 584 | ], 585 | "type":"VEC3" 586 | }, 587 | { 588 | "bufferView":15, 589 | "componentType":5126, 590 | "count":24, 591 | "type":"VEC3" 592 | }, 593 | { 594 | "bufferView":16, 595 | "componentType":5126, 596 | "count":24, 597 | "type":"VEC2" 598 | } 599 | ], 600 | "bufferViews":[ 601 | { 602 | "buffer":0, 603 | "byteLength":288, 604 | "byteOffset":0, 605 | "target":34962 606 | }, 607 | { 608 | "buffer":0, 609 | "byteLength":288, 610 | "byteOffset":288, 611 | "target":34962 612 | }, 613 | { 614 | "buffer":0, 615 | "byteLength":192, 616 | "byteOffset":576, 617 | "target":34962 618 | }, 619 | { 620 | "buffer":0, 621 | "byteLength":72, 622 | "byteOffset":768, 623 | "target":34963 624 | }, 625 | { 626 | "buffer":0, 627 | "byteLength":288, 628 | "byteOffset":840, 629 | "target":34962 630 | }, 631 | { 632 | "buffer":0, 633 | "byteLength":288, 634 | "byteOffset":1128, 635 | "target":34962 636 | }, 637 | { 638 | "buffer":0, 639 | "byteLength":192, 640 | "byteOffset":1416, 641 | "target":34962 642 | }, 643 | { 644 | "buffer":0, 645 | "byteLength":72, 646 | "byteOffset":1608, 647 | "target":34963 648 | }, 649 | { 650 | "buffer":0, 651 | "byteLength":288, 652 | "byteOffset":1680, 653 | "target":34962 654 | }, 655 | { 656 | "buffer":0, 657 | "byteLength":288, 658 | "byteOffset":1968, 659 | "target":34962 660 | }, 661 | { 662 | "buffer":0, 663 | "byteLength":192, 664 | "byteOffset":2256, 665 | "target":34962 666 | }, 667 | { 668 | "buffer":0, 669 | "byteLength":288, 670 | "byteOffset":2448, 671 | "target":34962 672 | }, 673 | { 674 | "buffer":0, 675 | "byteLength":288, 676 | "byteOffset":2736, 677 | "target":34962 678 | }, 679 | { 680 | "buffer":0, 681 | "byteLength":192, 682 | "byteOffset":3024, 683 | "target":34962 684 | }, 685 | { 686 | "buffer":0, 687 | "byteLength":288, 688 | "byteOffset":3216, 689 | "target":34962 690 | }, 691 | { 692 | "buffer":0, 693 | "byteLength":288, 694 | "byteOffset":3504, 695 | "target":34962 696 | }, 697 | { 698 | "buffer":0, 699 | "byteLength":192, 700 | "byteOffset":3792, 701 | "target":34962 702 | } 703 | ], 704 | "samplers":[ 705 | { 706 | "magFilter":9729, 707 | "minFilter":9987 708 | } 709 | ], 710 | "buffers":[ 711 | { 712 | "byteLength":3984, 713 | "uri":"Triggers.bin" 714 | } 715 | ] 716 | } 717 | -------------------------------------------------------------------------------- /samples/WaterWheel/GeoSphere003_color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eoineoineoin/glTF_Physics/04fe68e4030c7e01361f8d19300639aef6008e77/samples/WaterWheel/GeoSphere003_color.png -------------------------------------------------------------------------------- /samples/WaterWheel/GeoSphere003_roughness.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eoineoineoin/glTF_Physics/04fe68e4030c7e01361f8d19300639aef6008e77/samples/WaterWheel/GeoSphere003_roughness.png -------------------------------------------------------------------------------- /samples/WaterWheel/GridFloor_color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eoineoineoin/glTF_Physics/04fe68e4030c7e01361f8d19300639aef6008e77/samples/WaterWheel/GridFloor_color.png -------------------------------------------------------------------------------- /samples/WaterWheel/WaterWheel.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eoineoineoin/glTF_Physics/04fe68e4030c7e01361f8d19300639aef6008e77/samples/WaterWheel/WaterWheel.bin -------------------------------------------------------------------------------- /samples/WaterWheel/WaterWheel.glb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eoineoineoin/glTF_Physics/04fe68e4030c7e01361f8d19300639aef6008e77/samples/WaterWheel/WaterWheel.glb -------------------------------------------------------------------------------- /samples/WaterWheel/WaterWheelStructure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eoineoineoin/glTF_Physics/04fe68e4030c7e01361f8d19300639aef6008e77/samples/WaterWheel/WaterWheelStructure.png -------------------------------------------------------------------------------- /samples/WaterWheel/WaterWheelTrack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eoineoineoin/glTF_Physics/04fe68e4030c7e01361f8d19300639aef6008e77/samples/WaterWheel/WaterWheelTrack.png -------------------------------------------------------------------------------- /samples/WaterWheel/WaterWheel_Albedo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eoineoineoin/glTF_Physics/04fe68e4030c7e01361f8d19300639aef6008e77/samples/WaterWheel/WaterWheel_Albedo.png -------------------------------------------------------------------------------- /samples/WaterWheel/WaterWheel_Tower_Albedo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eoineoineoin/glTF_Physics/04fe68e4030c7e01361f8d19300639aef6008e77/samples/WaterWheel/WaterWheel_Tower_Albedo.png -------------------------------------------------------------------------------- /samples/samplelist.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "asset": "https://raw.githubusercontent.com/eoineoineoin/glTF_Physics/master/samples/ShapeTypes/ShapeTypes.glb", 4 | "link": "https://github.com/eoineoineoin/glTF_Physics/tree/master/samples/ShapeTypes", 5 | "title": "Basic shapes", "description": "Shows the basic primitive shapes" 6 | }, 7 | { 8 | "asset": "https://raw.githubusercontent.com/eoineoineoin/glTF_Physics/master/samples/Filtering/Filtering.glb", 9 | "link": "https://github.com/eoineoineoin/glTF_Physics/tree/master/samples/Filtering", 10 | "title": "Filtering", "description": "Shows the effect of collision filters" 11 | }, 12 | { 13 | "asset": "https://raw.githubusercontent.com/eoineoineoin/glTF_Physics/master/samples/JointTypes/JointTypes.glb", 14 | "link": "https://github.com/eoineoineoin/glTF_Physics/tree/master/samples/JointTypes", 15 | "title": "Joints", "description": "Various types of joints" 16 | }, 17 | { 18 | "asset": "https://raw.githubusercontent.com/eoineoineoin/glTF_Physics/master/samples/Materials_Friction/Materials_Friction.glb", 19 | "link": "https://github.com/eoineoineoin/glTF_Physics/tree/master/samples/Materials_Friction", 20 | "title": "Materials - Friction", "description": "Shows effect of friction" 21 | }, 22 | { 23 | "asset": "https://raw.githubusercontent.com/eoineoineoin/glTF_Physics/master/samples/Materials_Restitution/Materials_Restitution.glb", 24 | "link": "https://github.com/eoineoineoin/glTF_Physics/tree/master/samples/Materials_Restitution", 25 | "title": "Materials - Restitution", "description": "Shows effect of restitution" 26 | }, 27 | { 28 | "asset": "https://raw.githubusercontent.com/eoineoineoin/glTF_Physics/master/samples/MotionProperties/MotionProperties.glb", 29 | "link": "https://github.com/eoineoineoin/glTF_Physics/tree/master/samples/MotionProperties", 30 | "title": "Motion properties", "description": "How motion properties can control behaviour" 31 | }, 32 | { 33 | "asset": "https://raw.githubusercontent.com/eoineoineoin/glTF_Physics/master/samples/WaterWheel/WaterWheel.glb", 34 | "link": "https://github.com/eoineoineoin/glTF_Physics/tree/master/samples/WaterWheel", 35 | "title": "Water Wheel", "description": "A complex asset using most functionality" 36 | }, 37 | { 38 | "asset": "https://raw.githubusercontent.com/eoineoineoin/glTF_Physics/master/samples/Triggers/Triggers.glb", 39 | "link": "https://github.com/eoineoineoin/glTF_Physics/tree/master/samples/Triggers", 40 | "title": "Triggers", "description": "Shows trigger configurations" 41 | }, 42 | { 43 | "asset": "https://raw.githubusercontent.com/eoineoineoin/glTF_Physics/master/samples/Robot_skinned/Robot_skinned.glb", 44 | "link": "https://github.com/eoineoineoin/glTF_Physics/tree/master/samples/Robot_skinned", 45 | "title": "Tin Robot", "description": "Complex rigged object with motorized joints" 46 | } 47 | ] 48 | --------------------------------------------------------------------------------