下記のコードのinit()の中に単に { } で囲まれた部分があります。関数でもなく変数に入れるわけでもなく、これは何のための { } なのでしょうか? どのような働きがありますか?
javascrtipt
1 <script> 2 // ページの読み込みを待つ 3 window.addEventListener('load', init); 4 5 function init() { 6 // サイズを指定 7 const width = 960; 8 const height = 540; 9 10 // レンダラーを作成 11 const renderer = new THREE.WebGLRenderer({ 12 canvas: document.querySelector('#myCanvas'), 13 antialias: true//アンチエイリアス 物体の輪郭がギザギザになることを抑える処理 動きが重たくなる場合がある 14 }); 15 renderer.setPixelRatio(window.devicePixelRatio); 16 renderer.setSize(width, height); 17 // レンダラー側で影を有効に 18 renderer.shadowMap.enabled = true; 19 20 // シーンを作成 21 const scene = new THREE.Scene(); 22 23 // カメラを作成 24 //平行投影を表現できるカメラです。このカメラには遠近感がないので、手前にある3Dオブジェクトも奥にある3Dオブジェクトも同じ大きさで表示されます 25 //left, right, top, bottom, near, far 26 const camera = new THREE.OrthographicCamera(-480, +480, 270, -270); 27 28 // 光源を作成 29 //色, 光の強さ, 距離, 照射角, ボケ具合, 減衰率 30 { 31 const spotLight = new THREE.SpotLight( 32 0xffffff, 33 4, 34 2000, 35 Math.PI / 5, 36 0.2, 37 1.5 38 ); 39 spotLight.position.set(500, 300, 500); 40 spotLight.castShadow = true; // 影を落とす設定 41 spotLight.shadow.mapSize.width = 2048; 42 spotLight.shadow.mapSize.height = 2048; 43 scene.add(spotLight); 44 } 45 46 // 地面を作成 47 { 48 // 床のテクスチャー 49 const texture = new THREE.TextureLoader().load('imgs/floor.png'); 50 texture.wrapS = texture.wrapT = THREE.RepeatWrapping; // リピート可能に 51 texture.repeat.set(10, 10); // 10x10マスに設定 52 texture.magFilter = THREE.NearestFilter; // アンチエイリアスを外す 53 54 const floor = new THREE.Mesh( 55 new THREE.PlaneGeometry(1000, 1000), 56 new THREE.MeshStandardMaterial({ 57 map: texture, 58 roughness: 0.0, 59 metalness: 0.6 60 }) 61 ); 62 floor.rotation.x = -Math.PI / 2; 63 floor.receiveShadow = true; // 影の設定 64 scene.add(floor); 65 } 66 67 // マス目を作成 68 { 69 // 立方体のマテリアルとジオメトリを作成 70 const material = new THREE.MeshStandardMaterial({ 71 color: 0x2299ff, 72 roughness: 0.1, 73 metalness: 0.2 74 }); 75 const geometry = new THREE.BoxGeometry(45, 45, 45); 76 77 // 立方体を複数作成しランダムに配置 78 for (let i = 0; i < 60; i++) { 79 const box = new THREE.Mesh(geometry, material); 80 box.position.x = Math.round((Math.random() - 0.5) * 19) * 50 + 25; 81 box.position.y = 25; 82 box.position.z = Math.round((Math.random() - 0.5) * 19) * 50 + 25; 83 // 影の設定 84 box.receiveShadow = true; 85 box.castShadow = true; 86 scene.add(box); 87 } 88 } 89 90 tick(); 91 92 // 毎フレーム時に実行されるループイベントです 93 function tick() { 94 // 角度に応じてカメラの位置を設定 95 camera.position.x = 500 * Math.sin(Date.now() / 2000); 96 camera.position.y = 250; 97 camera.position.z = 500 * Math.cos(Date.now() / 2000); 98 // 原点方向を見つめる 99 camera.lookAt(new THREE.Vector3(0, 0, 0)); 100 101 // レンダリング 102 renderer.render(scene, camera); 103 requestAnimationFrame(tick); 104 } 105 } 106 </script>
どれのことですか?
回答2件
あなたの回答
tips
プレビュー