three.jsを始める
HelloWorld
以下のHTMLファイルを作成する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | <html> <head> <title>My first three.js app</title> <style> body { margin: 0; } canvas { width: 100%; height: 100% } </style> </head> <body> <script src="https://cdn.jsdelivr.net/gh/mrdoob/three.js@master/build/three.min.js"></script> <script> // シーンオブジェクトを生成 var scene = new THREE.Scene(); // カメラオブジェクトを生成 var camera = new THREE.PerspectiveCamera( 75, window.innerWidth/window.innerHeight, 0.1, 1000 ); // レンダラーを生成 var renderer = new THREE.WebGLRenderer(); renderer.setSize( window.innerWidth, window.innerHeight ); document.body.appendChild( renderer.domElement ); // Boxのジオメトリを生成 var geometry = new THREE.BoxGeometry( 1, 1, 1 ); // 緑色単色のマテリアルを作成 var material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } ); // Cubeメッシュにジオメトリとマテリアルを割り当て var cube = new THREE.Mesh( geometry, material ); // シーンにCubeを追加 scene.add( cube ); // カメラを5m引く camera.position.z = 5; // 毎フレームアニメーション var animate = function () { requestAnimationFrame( animate ); cube.rotation.x += 0.01; cube.rotation.y += 0.01; // シーンを指定したカメラでレンダリング renderer.render( scene, camera ); }; animate(); </script> </body> </html> |
このHTMLファイルをChromeで開くと、下のような緑色のキューブが回転する。
解説
three.jsの読み込み
ローカルにthree.jsを配置して参照する方法もあるが、CDNサービスを使用してインターネットから直接読み込む。CDNとは「Content Delivery Network」の略で、ユーザーに一番近いサーバーからファイルをダウンロードする仕組みであり、ここではそのサービスを使用してJavaScriptをインターネットから読み込む。
今回は、jsDelivrというサービスを利用してGitHub上のJavaScriptファイルを読み込む。
1 | <script src="https://cdn.jsdelivr.net/gh/mrdoob/three.js@master/build/three.min.js"></script> |
three.jsとthree.min.jsの違い
機能的な違いはない。three.min.js
は、読み込み速度を早くするために、three.js
のコードが圧縮されたバージョン。したがって、普段使用する場合はthree.min.js
を使用すればOK。
コード解説
requestAnimationFrame()
次の再描画時に引数に登録したコールバック関数を実行する。コールバック関数内でさらにrequestAnimationFrame()
を呼ぶことで毎フレームアニメーションさせることができる。