Three.js
Three.jsはHTMLの3D技術「WebGL」を扱いやすくしたフレームワーク
- sample
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<script src="https://unpkg.com/three@0.131.3/build/three.min.js"></script>
<script>
// ページの読み込みを待つ
window.addEventListener('load', init);
function init() {
// サイズを指定
const width = 960;
const height = 540;
// レンダラーを作成
const renderer = new THREE.WebGLRenderer({
canvas: document.querySelector('#myCanvas')
});
renderer.setPixelRatio(window.devicePixelRatio);
renderer.setSize(width, height);
// シーンを作成
const scene = new THREE.Scene();
// カメラを作成
const camera = new THREE.PerspectiveCamera(45, width / height);
camera.position.set(0, 0, +1000);
// 箱を作成
const geometry = new THREE.BoxGeometry(400, 400, 400);
const material = new THREE.MeshNormalMaterial();
const box = new THREE.Mesh(geometry, material);
scene.add(box);
tick();
// 毎フレーム時に実行されるループイベントです
function tick() {
box.rotation.y += 0.01;
renderer.render(scene, camera); // レンダリング
requestAnimationFrame(tick);
}
}
</script>
</head>
<body>
<canvas id="myCanvas"></canvas>
</body>
</html>
WebGL対応ブラウザ
主要ブラウザはだいたい対応している
- Microsoft Edge
- Google Chrome 9以降は標準で有効
- IE 11
- Firefox 4以降
-
Safari 5.1 以降
- https://ja.wikipedia.org/wiki/WebGL
構成要素
モデル
形状、色、質感などが設定されたポリゴンのまとまりのこと。3DCGソフトで作り込んだ3Dモデルを読み込んだり、プログラムで動的に生成することも出来る
ポリゴン
3つの頂点からなる三角形のことをポリゴンと呼ぶ
カメラ
モデルをカメラで撮影することで、はじめてスクリーンに表示される。カメラの位置や方向、画角の設定によって構図を変更する。
ライト
モデルとの距離やライトの種類、方向などによってモデルに反射や陰影を表現します
頂点バッファ
3DCGプログラミングでは、モデルの情報をそれぞれ「頂点バッファ」と呼ばれる配列に格納します。それぞれの頂点に対していくつかのデータを設定することが出来ます。
レンダリング
THREE.Mesh
THREE.Geometry
とTHREE.Material
からなる3Dモデル。
THREE.Geometry
頂点は法線など、モデルの形状を設定するデータ
THREE.Material
色やテクスチャなど、モデルの質感を設定するデータ
THREE.Light
モデルに陰影を表現するためのライト
THREE.Scene
カメラで撮影するためのステージのようなもの
THREE.Camera
シーン内の3Dモデルを撮影するためのカメラ
THREE.Renderer
カメラで撮影した3Dモデルを描画するためのレンダラー