tanish-kr's learning log

Learning output log

JavaScript

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.GeometryTHREE.Materialからなる3Dモデル。

THREE.Geometry

頂点は法線など、モデルの形状を設定するデータ

THREE.Material

色やテクスチャなど、モデルの質感を設定するデータ

THREE.Light

モデルに陰影を表現するためのライト

THREE.Scene

カメラで撮影するためのステージのようなもの

THREE.Camera

シーン内の3Dモデルを撮影するためのカメラ

THREE.Renderer

カメラで撮影した3Dモデルを描画するためのレンダラー