|
@@ -44,10 +44,14 @@
|
|
|
ACESFilmic: THREE.ACESFilmicToneMapping
|
|
|
};
|
|
|
|
|
|
- init();
|
|
|
- render();
|
|
|
+ init()
|
|
|
+ .catch( function ( err ) {
|
|
|
|
|
|
- function init() {
|
|
|
+ console.error( err );
|
|
|
+
|
|
|
+ } );
|
|
|
+
|
|
|
+ async function init() {
|
|
|
|
|
|
renderer = new THREE.WebGLRenderer( { antialias: true } );
|
|
|
renderer.setPixelRatio( window.devicePixelRatio );
|
|
@@ -75,42 +79,41 @@
|
|
|
var pmremGenerator = new THREE.PMREMGenerator( renderer );
|
|
|
pmremGenerator.compileEquirectangularShader();
|
|
|
|
|
|
- new RGBELoader()
|
|
|
+ var rgbeLoader = new RGBELoader()
|
|
|
.setDataType( THREE.UnsignedByteType )
|
|
|
- .setPath( 'textures/equirectangular/' )
|
|
|
- .load( 'venice_sunset_1k.hdr', function ( texture ) {
|
|
|
+ .setPath( 'textures/equirectangular/' );
|
|
|
|
|
|
- var envMap = pmremGenerator.fromEquirectangular( texture ).texture;
|
|
|
+ var gltfLoader = new GLTFLoader().setPath( 'models/gltf/DamagedHelmet/glTF/' );
|
|
|
|
|
|
- scene.background = envMap;
|
|
|
- scene.environment = envMap;
|
|
|
+ var [ texture, gltf ] = await Promise.all( [
|
|
|
+ rgbeLoader.loadAsync( 'venice_sunset_1k.hdr' ),
|
|
|
+ gltfLoader.loadAsync( 'DamagedHelmet.gltf' ),
|
|
|
+ ] );
|
|
|
|
|
|
- texture.dispose();
|
|
|
- pmremGenerator.dispose();
|
|
|
-
|
|
|
- render();
|
|
|
+ // environment
|
|
|
|
|
|
- // model
|
|
|
+ var envMap = pmremGenerator.fromEquirectangular( texture ).texture;
|
|
|
|
|
|
- var loader = new GLTFLoader().setPath( 'models/gltf/DamagedHelmet/glTF/' );
|
|
|
- loader.load( 'DamagedHelmet.gltf', function ( gltf ) {
|
|
|
+ scene.background = envMap;
|
|
|
+ scene.environment = envMap;
|
|
|
|
|
|
- gltf.scene.traverse( function ( child ) {
|
|
|
+ texture.dispose();
|
|
|
+ pmremGenerator.dispose();
|
|
|
|
|
|
- if ( child.isMesh ) {
|
|
|
+ // model
|
|
|
|
|
|
- mesh = child;
|
|
|
- scene.add( mesh );
|
|
|
+ gltf.scene.traverse( function ( child ) {
|
|
|
|
|
|
- }
|
|
|
+ if ( child.isMesh ) {
|
|
|
|
|
|
- } );
|
|
|
+ mesh = child;
|
|
|
+ scene.add( mesh );
|
|
|
|
|
|
- render();
|
|
|
+ }
|
|
|
|
|
|
- } );
|
|
|
+ } );
|
|
|
|
|
|
- } );
|
|
|
+ render();
|
|
|
|
|
|
window.addEventListener( 'resize', onWindowResize, false );
|
|
|
|