three.js概論#1
2024/6/7
three.jsとは
公式サイトthree.jsは3DグラフィックスをWebブラウザ上で表示するためのJavaScriptライブラリ。
Three.jsを使用することで、HTML5のcanvas要素やWebGL(Web Graphics Library)を利用して、複雑な3Dシーンを簡単に描画することができる。
WebGL
WebGL(Web Graphics Library)は、Webブラウザ上で3Dグラフィックスを描画するためのJavaScript API。
各ブラウザーと互換性があり、GPUを使用するため3Dグラフィックスを高速で描画することができる。
WebGLで3Dグラフィックスを描画するためには、JavaScriptでGLSL(OpenGL Shading Language)というシェーダー言語を使用する必要がある。
three.jsは、WebGLを使用するためのラッパーライブラリで、GLSLを使用することなく3Dグラフィックスを描画することができる。
インストール
公式ドキュメントでは、npmとビルドツール(vite
)を使用してthree.jsをインストールすることを推奨している。
npmでインストールする場合は以下のコマンドを実行する。
# three.jsnpm install --save three
# vitenpm install --save-dev vite
import * as THREE from 'three';
...
シーンを作成
three.jsで画面上に何かを表示させるには、シーン、カメラ、レンダラー、オブジェクトが必要。
<!doctype html><html lang="en"> <head> <meta charset="utf-8" /> <title>My first three.js app</title> <style> body { margin: 0; } </style> </head> <body> <script type="module" src="/index.js"></script> </body></html>
import * as THREE from "three";
// シーンconst scene = new THREE.Scene();
// カメラconst camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.1, 1000,);camera.position.z = 3;
// レンダラーconst renderer = new THREE.WebGLRenderer();renderer.setSize(window.innerWidth, window.innerHeight);
// オブジェクトconst geometry = new THREE.BoxGeometry(1, 1, 1);const material = new THREE.MeshBasicMaterial({ color: 0x00ff00 });const cube = new THREE.Mesh(geometry, material);scene.add(cube);
// DOMにレンダラーを追加document.body.appendChild(renderer.domElement);
シーンをレンダリング
レンダラーのrenderメソッドを使って、シーンをレンダリングする。
requestAnimationFrameメソッドを使って、フレームごとにレンダリングを行う。
function tick() { // フレームごとに実行 requestAnimationFrame(tick);
cube.rotation.x += 0.01; cube.rotation.y += 0.01;
renderer.render(scene, camera);}
tick();