Browse Source

- Parse out extras as Object3D.userData for scene, camera, node, mesh, primitive
- Add extras properties to duck.gltf

Steven Wittens 8 years ago
parent
commit
7895397c5d

+ 9 - 0
examples/js/loaders/GLTFLoader.js

@@ -1153,6 +1153,7 @@ THREE.GLTFLoader = ( function () {
 
 				var group = new THREE.Object3D();
 				group.name = mesh.name;
+  			group.userData = mesh.extras || {};
 
 				var primitives = mesh.primitives;
 
@@ -1225,6 +1226,7 @@ THREE.GLTFLoader = ( function () {
 
 						var meshNode = new THREE.Mesh( geometry, material );
 						meshNode.castShadow = true;
+  					meshNode.userData = primitive.extras || {};
 
 						group.add( meshNode );
 
@@ -1266,6 +1268,7 @@ THREE.GLTFLoader = ( function () {
 
 				var _camera = new THREE.PerspectiveCamera( THREE.Math.radToDeg( xfov ), aspect_ratio, camera.perspective.znear || 1, camera.perspective.zfar || 2e6 );
 				_camera.name = camera.name;
+  			_camera.userData = camera.extras || {};
 
 				return _camera;
 
@@ -1273,6 +1276,7 @@ THREE.GLTFLoader = ( function () {
 
 				var _camera = new THREE.OrthographicCamera( window.innerWidth / - 2, window.innerWidth / 2, window.innerHeight / 2, window.innerHeight / - 2, camera.orthographic.znear, camera.orthographic.zfar );
 				_camera.name = camera.name;
+  			_camera.userData = camera.extras || {};
 
 				return _camera;
 
@@ -1389,6 +1393,7 @@ THREE.GLTFLoader = ( function () {
 			}
 
 			_node.name = node.name;
+  		_node.userData = node.extras || {};
 
 			_node.matrixAutoUpdate = false;
 
@@ -1451,6 +1456,7 @@ THREE.GLTFLoader = ( function () {
 
 								var originalMaterial = child.material;
 								var originalGeometry = child.geometry;
+  							var originalUserData = child.userData;
 
 								var material;
 
@@ -1466,6 +1472,7 @@ THREE.GLTFLoader = ( function () {
 
 								child = new THREE.Mesh( originalGeometry, material );
 								child.castShadow = true;
+								child.userData = originalUserData;
 
 								var skinEntry;
 
@@ -1484,6 +1491,7 @@ THREE.GLTFLoader = ( function () {
 
 									child = new THREE.SkinnedMesh( geometry, material, false );
 									child.castShadow = true;
+  								child.userData = originalUserData;
 
 									var bones = [];
 									var boneInverses = [];
@@ -1666,6 +1674,7 @@ THREE.GLTFLoader = ( function () {
 
 				var _scene = new THREE.Scene();
 				_scene.name = scene.name;
+  			_scene.userData = scene.extras || {};
 
 				var nodes = scene.nodes;
 

+ 24 - 6
examples/models/gltf/duck/glTF-MaterialsCommon/duck.gltf

@@ -177,9 +177,15 @@
                     },
                     "indices": "accessor_21",
                     "material": "blinn3-fx",
-                    "mode": 4
+                    "mode": 4,
+                    "extras": {
+                      "foo": "primitive"
+                    }
                 }
-            ]
+            ],
+            "extras": {
+              "foo": "mesh"
+            }
         }
     },
     "nodes": {
@@ -206,7 +212,10 @@
             "meshes": [
                 "LOD3spShape-lib"
             ],
-            "name": "LOD3sp"
+            "name": "LOD3sp",
+            "extras": {
+              "foo": "node"
+            }
         },
         "camera1": {
             "camera": "cameraShape1",
@@ -229,7 +238,10 @@
                 -4.31078,
                 1
             ],
-            "name": "camera1"
+            "name": "camera1",
+            "extras": {
+              "foo": "camera"
+            }
         },
         "directionalLight1": {
             "children": [],
@@ -256,7 +268,10 @@
                 -2.92179,
                 1
             ],
-            "name": "directionalLight1"
+            "name": "directionalLight1",
+            "extras": {
+              "foo": "light"
+            }
         }
     },
     "samplers": {
@@ -274,7 +289,10 @@
                 "LOD3sp",
                 "camera1",
                 "directionalLight1"
-            ]
+            ],
+            "extras": {
+              "foo": "scene"
+            }
         }
     },
     "skins": {},

+ 24 - 6
examples/models/gltf/duck/glTF/duck.gltf

@@ -150,9 +150,15 @@
                     },
                     "indices": "accessor_21",
                     "material": "blinn3-fx",
-                    "mode": 4
+                    "mode": 4,
+                    "extras": {
+                      "foo": "primitive"
+                    }
                 }
-            ]
+            ],
+            "extras": {
+              "foo": "mesh"
+            }
         }
     },
     "nodes": {
@@ -179,7 +185,10 @@
             "meshes": [
                 "LOD3spShape-lib"
             ],
-            "name": "LOD3sp"
+            "name": "LOD3sp",
+            "extras": {
+              "foo": "node"
+            }
         },
         "camera1": {
             "camera": "cameraShape1",
@@ -202,7 +211,10 @@
                 -4.31078,
                 1
             ],
-            "name": "camera1"
+            "name": "camera1",
+            "extras": {
+              "foo": "camera"
+            }
         },
         "directionalLight1": {
             "children": [],
@@ -224,7 +236,10 @@
                 -2.92179,
                 1
             ],
-            "name": "directionalLight1"
+            "name": "directionalLight1",
+            "extras": {
+              "foo": "light"
+            }
         }
     },
     "programs": {
@@ -253,7 +268,10 @@
                 "LOD3sp",
                 "camera1",
                 "directionalLight1"
-            ]
+            ],
+            "extras": {
+              "foo": "scene"
+            }
         }
     },
     "shaders": {