Browse Source

updating the snowflake example so that it is compatible with latest glTF specification

bdysvik 8 năm trước cách đây
mục cha
commit
7eef51a274

+ 6 - 2
examples/js/loaders/GLTFLoader.js

@@ -1241,7 +1241,9 @@ THREE.GLTFLoader = ( function () {
 
 						var attributes = primitive.attributes;
 
-						_each( attributes, function( attributeEntry, attributeId ) {
+						for ( var attributeId in attributes ) {
+
+							var attributeEntry = attributes[ attributeId ];
 
 							if ( !attributeEntry ) {
 
@@ -1257,13 +1259,15 @@ THREE.GLTFLoader = ( function () {
 									geometry.addAttribute( 'position', bufferAttribute );
 									break;
 									
+								case 'COLOR_0':
+								case 'COLOR0':
 								case 'COLOR':
 								geometry.addAttribute( 'color', bufferAttribute );
 								break;
 								
 							}
 
-						});
+						};
 
 						if ( primitive.indices ) {
 

+ 2 - 2
examples/models/gltf/snowflake/line_frag.glsl

@@ -1,8 +1,8 @@
 precision highp float;
-varying vec3 vertexColor;
+varying vec3 v_color;
 
 void main(void) {
 
-	gl_FragColor = vec4(vertexColor.r, vertexColor.g, vertexColor.b, 1.0);;
+	gl_FragColor = vec4(v_color.r, v_color.g, v_color.b, 1.0);;
 	
 }

+ 3 - 5
examples/models/gltf/snowflake/line_vert.glsl

@@ -3,15 +3,13 @@ precision highp float;
 attribute vec3 position;
 attribute vec3 color;
 
+varying vec3 v_color;
+
 uniform mat4 modelViewMatrix;
 uniform mat4 projectionMatrix;
 
-varying vec3 vertexColor;
-
 void main(void) {
-
 	vec4 pos = modelViewMatrix * vec4(position,1.0);
-	vertexColor = vec3(color.x, color.y, color.y);
+	v_color = color;
 	gl_Position = projectionMatrix * pos;
-	
 }

+ 47 - 6
examples/models/gltf/snowflake/snowFlake.gltf

@@ -7,6 +7,16 @@
       "componentType": 5126,
       "count": 257,
       "type": "VEC3",
+      "max": [
+        250.0,
+        250.0,
+        0.0
+      ],
+      "min": [
+        -250.0,
+        -250.0,
+        0.0
+      ],
       "name": "VertexAccessor"
     },
     "ColorAccessor": {
@@ -16,9 +26,22 @@
       "componentType": 5126,
       "count": 257,
       "type": "VEC3",
+      "max": [
+        0.999963164,
+        0.99640733,
+        1.0
+      ],
+      "min": [
+        0.500137746,
+        0.5041365,
+        1.0
+      ],
       "name": "ColorAccessor"
     }
   },
+  "asset": {
+    "version": "1.1"
+  },
   "buffers": {
     "Buffer": {
       "uri": "snowFlake.bin",
@@ -58,7 +81,7 @@
         {
           "attributes": {
             "POSITION": "VertexAccessor",
-            "COLOR": "ColorAccessor"
+            "COLOR_0": "ColorAccessor"
           },
           "material": "meshMaterial",
           "mode": 1
@@ -79,8 +102,8 @@
   "programs": {
     "meshProgram": {
       "attributes": [
-        "VertexAccessor",
-        "ColorAccessor"
+        "a_position",
+        "a_color"
       ],
       "fragmentShader": "fragmentShader",
       "vertexShader": "vertexShader",
@@ -112,14 +135,32 @@
   "techniques": {
     "meshTechnique": {
       "parameters": {
+        "modelViewMatrixParameter": {
+          "type": 35676,
+          "semantic": "MODELVIEW"
+        },
+        "projectionMatrixParameter": {
+          "type": 35676,
+          "semantic": "PROJECTION"
+        },
+        "position": {
+          "type": 35665,
+          "semantic": "POSITION"
+        },
         "color": {
           "type": 35665,
-          "semantic": "color"
+          "semantic": "COLOR_0"
         }
       },
-      "attributes": {},
+      "attributes": {
+        "a_position": "position",
+        "a_color": "color"
+      },
       "program": "meshProgram",
-      "uniforms": {},
+      "uniforms": {
+        "modelViewMatrix": "modelViewMatrixParameter",
+        "projectionMatrix": "projectionMatrixParameter"
+      },
       "states": {
         "enable": [
           3042,

+ 2 - 2
examples/models/gltf/snowflakes/line_frag.glsl

@@ -1,8 +1,8 @@
 precision highp float;
-varying vec3 vertexColor;
+varying vec3 v_color;
 
 void main(void) {
 
-	gl_FragColor = vec4(vertexColor.r, vertexColor.g, vertexColor.b, 1.0);;
+	gl_FragColor = vec4(v_color.r, v_color.g, v_color.b, 1.0);;
 	
 }

+ 3 - 5
examples/models/gltf/snowflakes/line_vert.glsl

@@ -3,15 +3,13 @@ precision highp float;
 attribute vec3 position;
 attribute vec3 color;
 
+varying vec3 v_color;
+
 uniform mat4 modelViewMatrix;
 uniform mat4 projectionMatrix;
 
-varying vec3 vertexColor;
-
 void main(void) {
-
 	vec4 pos = modelViewMatrix * vec4(position,1.0);
-	vertexColor = vec3(color.x, color.y, color.y);
+	v_color = color;
 	gl_Position = projectionMatrix * pos;
-	
 }

+ 60 - 13
examples/models/gltf/snowflakes/snowFlakes.gltf

@@ -7,16 +7,32 @@
       "componentType": 5126,
       "count": 1376,
       "type": "VEC3",
+      "max": [
+        2300.0,
+        2450.0,
+        0.0
+      ],
+      "min": [
+        0.0,
+        0.0,
+        0.0
+      ],
       "name": "VertexAccessor"
     },
-    "TriangleAccessor": {
-      "bufferView": "Lines",
+    "LineAccessor": {
+      "bufferView": "LineView",
       "byteOffset": 0,
       "byteStride": 2,
       "componentType": 5123,
       "count": 2720,
       "type": "SCALAR",
-      "name": "TriangleAccessor"
+      "max": [
+        1374.0
+      ],
+      "min": [
+        0.0
+      ],
+      "name": "LineAccessor"
     },
     "ColorAccessor": {
       "bufferView": "ColorView",
@@ -25,9 +41,22 @@
       "componentType": 5126,
       "count": 1376,
       "type": "VEC3",
+      "max": [
+        0.999963164,
+        0.999615431,
+        1.0
+      ],
+      "min": [
+        0.500137746,
+        0.5002869,
+        1.0
+      ],
       "name": "ColorAccessor"
     }
   },
+  "asset": {
+    "version": "1.1"
+  },
   "buffers": {
     "Buffer": {
       "uri": "snowFlakes.bin",
@@ -45,12 +74,12 @@
       "target": 34962,
       "name": "VertexBuffer"
     },
-    "Lines": {
+    "LineView": {
       "buffer": "Buffer",
       "byteOffset": 16512,
       "byteLength": 5440,
-      "target": 34962,
-      "name": "Lines"
+      "target": 34963,
+      "name": "LineView"
     },
     "ColorView": {
       "buffer": "Buffer",
@@ -74,9 +103,9 @@
         {
           "attributes": {
             "POSITION": "VertexAccessor",
-            "COLOR": "ColorAccessor"
+            "COLOR_0": "ColorAccessor"
           },
-          "indices": "TriangleAccessor",
+          "indices": "LineAccessor",
           "material": "meshMaterial",
           "mode": 1
         }
@@ -96,8 +125,8 @@
   "programs": {
     "meshProgram": {
       "attributes": [
-        "VertexAccessor",
-        "ColorAccessor"
+        "a_position",
+        "a_color"
       ],
       "fragmentShader": "fragmentShader",
       "vertexShader": "vertexShader",
@@ -129,14 +158,32 @@
   "techniques": {
     "meshTechnique": {
       "parameters": {
+        "modelViewMatrixParameter": {
+          "type": 35676,
+          "semantic": "MODELVIEW"
+        },
+        "projectionMatrixParameter": {
+          "type": 35676,
+          "semantic": "PROJECTION"
+        },
+        "position": {
+          "type": 35665,
+          "semantic": "POSITION"
+        },
         "color": {
           "type": 35665,
-          "semantic": "color"
+          "semantic": "COLOR_0"
         }
       },
-      "attributes": {},
+      "attributes": {
+        "a_position": "position",
+        "a_color": "color"
+      },
       "program": "meshProgram",
-      "uniforms": {},
+      "uniforms": {
+        "modelViewMatrix": "modelViewMatrixParameter",
+        "projectionMatrix": "projectionMatrixParameter"
+      },
       "states": {
         "enable": [
           3042,