2
0
Эх сурвалжийг харах

Examples: Update model in glTF AVIF demo. (#25708)

* Examples: Update model in glTF AVIF demo.

* Examples: Update screenshot.
Michael Herzog 2 жил өмнө
parent
commit
5f34f3c261

BIN
examples/models/gltf/AVIFTest/DamagedHelmetAVIF.glb


BIN
examples/models/gltf/AVIFTest/avif-test.avif


BIN
examples/models/gltf/AVIFTest/avif-test.bin


+ 0 - 134
examples/models/gltf/AVIFTest/avif-test.gltf

@@ -1,134 +0,0 @@
-{
-  "asset": {
-    "generator": "Khronos glTF Blender I/O v3.4.50",
-    "version": "2.0"
-  },
-  "extensionsUsed": ["EXT_texture_avif"],
-  "extensionsRequired": ["EXT_texture_avif"],
-  "scene": 0,
-  "scenes": [
-    {
-      "name": "Scene",
-      "nodes": [0]
-    }
-  ],
-  "nodes": [
-    {
-      "mesh": 0,
-      "name": "Cube"
-    }
-  ],
-  "materials": [
-    {
-      "doubleSided": true,
-      "name": "Material",
-      "pbrMetallicRoughness": {
-        "baseColorTexture": {
-          "index": 0
-        },
-        "metallicFactor": 0,
-        "roughnessFactor": 0
-      }
-    }
-  ],
-  "meshes": [
-    {
-      "name": "Cube",
-      "primitives": [
-        {
-          "attributes": {
-            "POSITION": 0,
-            "TEXCOORD_0": 1,
-            "NORMAL": 2
-          },
-          "indices": 3,
-          "material": 0
-        }
-      ]
-    }
-  ],
-  "textures": [
-    {
-      "extensions": {
-        "EXT_texture_avif": {
-          "source": 0
-        }
-      },
-      "sampler": 0,
-      "source": 0
-    }
-  ],
-  "images": [
-    {
-      "mimeType": "image/avif",
-      "name": "avif-test",
-      "uri": "avif-test.avif"
-    }
-  ],
-  "accessors": [
-    {
-      "bufferView": 0,
-      "componentType": 5126,
-      "count": 864,
-      "max": [1, 1, 1],
-      "min": [-1, -1, -1],
-      "type": "VEC3"
-    },
-    {
-      "bufferView": 1,
-      "componentType": 5126,
-      "count": 864,
-      "type": "VEC2"
-    },
-    {
-      "bufferView": 2,
-      "componentType": 5126,
-      "count": 864,
-      "type": "VEC3"
-    },
-    {
-      "bufferView": 3,
-      "componentType": 5123,
-      "count": 1284,
-      "type": "SCALAR"
-    }
-  ],
-  "bufferViews": [
-    {
-      "buffer": 0,
-      "byteLength": 10368,
-      "byteOffset": 0,
-      "target": 34962
-    },
-    {
-      "buffer": 0,
-      "byteLength": 6912,
-      "byteOffset": 10368,
-      "target": 34962
-    },
-    {
-      "buffer": 0,
-      "byteLength": 10368,
-      "byteOffset": 17280,
-      "target": 34962
-    },
-    {
-      "buffer": 0,
-      "byteLength": 2568,
-      "byteOffset": 27648,
-      "target": 34963
-    }
-  ],
-  "samplers": [
-    {
-      "magFilter": 9729,
-      "minFilter": 9987
-    }
-  ],
-  "buffers": [
-    {
-      "byteLength": 30216,
-      "uri": "avif-test.bin"
-    }
-  ]
-}

BIN
examples/models/gltf/AVIFTest/forest_house.glb


BIN
examples/screenshots/webgl_loader_gltf_avif.jpg


+ 34 - 46
examples/webgl_loader_gltf_avif.html

@@ -3,23 +3,25 @@
 	<head>
 		<title>three.js webgl - GLTFloader + EXT_texture_avif</title>
 		<meta charset="utf-8" />
-		<meta
-			name="viewport"
-			content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0"
-		/>
+		<meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0"/>
 		<link type="text/css" rel="stylesheet" href="main.css" />
+		<style>
+			body {
+				background-color: #bfe3dd;
+				color: #000;
+			}
+
+			a {
+				color: #986b60;
+			}
+		</style>
 	</head>
 
 	<body>
 		<div id="info">
-			<a href="https://threejs.org" target="_blank" rel="noopener">three.js</a>
-			- GLTFLoader +
-			<a
-				href="https://github.com/KhronosGroup/glTF/tree/main/extensions/2.0/Vendor/EXT_texture_avif"
-				target="_blank"
-				rel="noopener"
-				>EXT_texture_avif</a
-			><br />
+			<a href="https://threejs.org" target="_blank" rel="noopener">three.js</a> - GLTFLoader +
+			<a href="https://github.com/KhronosGroup/glTF/tree/main/extensions/2.0/Vendor/EXT_texture_avif" target="_blank" rel="noopener" >EXT_texture_avif</a><br />
+			Forest House by <a href="https://sketchfab.com/peachyroyalty" target="_blank" rel="noopener">peachyroyalty</a><br />
 		</div>
 
 		<!-- Import maps polyfill -->
@@ -40,7 +42,7 @@
 
 			import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
 			import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';
-			import { RGBELoader } from 'three/addons/loaders/RGBELoader.js';
+			import { DRACOLoader } from 'three/addons/loaders/DRACOLoader.js';
 
 			let camera, scene, renderer;
 
@@ -49,56 +51,42 @@
 
 			function init() {
 
-				const container = document.createElement( 'div' );
-				document.body.appendChild( container );
-
-				camera = new THREE.PerspectiveCamera(
-					45,
-					window.innerWidth / window.innerHeight,
-					0.25,
-					20
-				);
-				camera.position.set( 2.5, 0, 3.0 );
+				camera = new THREE.PerspectiveCamera( 45, window.innerWidth / window.innerHeight, 0.1, 100 );
+				camera.position.set( 0, 8, 12 );
 
 				scene = new THREE.Scene();
+				scene.background = new THREE.Color( 0xf6eedc );
 
-				new RGBELoader()
-					.setPath( 'textures/equirectangular/' )
-					.load( 'quarry_01_1k.hdr', function ( texture ) {
-
-						texture.mapping = THREE.EquirectangularReflectionMapping;
-
-						scene.background = texture;
-						scene.environment = texture;
+				//
 
-						render();
+				const dracoLoader = new DRACOLoader();
+				dracoLoader.setDecoderPath( 'jsm/libs/draco/gltf/' );
 
-						// model
+				const loader = new GLTFLoader();
+				loader.setDRACOLoader( dracoLoader );
+				loader.setPath( 'models/gltf/AVIFTest/' );
+				loader.load( 'forest_house.glb', function ( gltf ) {
 
-						const loader = new GLTFLoader().setPath( 'models/gltf/AVIFTest/' );
-						loader.load( 'DamagedHelmetAVIF.glb', function ( gltf ) {
+					gltf.scene.scale.multiplyScalar( 40 );
+					gltf.scene.rotation.y = Math.PI * 0.5;
 
-							scene.add( gltf.scene );
+					scene.add( gltf.scene );
 
-							render();
+					render();
 
-						} );
+				} );
 
-					} );
+				//
 
 				renderer = new THREE.WebGLRenderer( { antialias: true } );
 				renderer.setPixelRatio( window.devicePixelRatio );
 				renderer.setSize( window.innerWidth, window.innerHeight );
-				renderer.toneMapping = THREE.ACESFilmicToneMapping;
-				renderer.toneMappingExposure = 1;
 				renderer.outputEncoding = THREE.sRGBEncoding;
-				container.appendChild( renderer.domElement );
+				document.body.appendChild( renderer.domElement );
 
 				const controls = new OrbitControls( camera, renderer.domElement );
-				controls.addEventListener( 'change', render ); // use if there is no animation loop
-				controls.minDistance = 2;
-				controls.maxDistance = 10;
-				controls.target.set( 0, 0, 0);
+				controls.addEventListener( 'change', render );
+				controls.target.set( 0, 2, 0 );
 				controls.update();
 
 				window.addEventListener( 'resize', onWindowResize );