Three.jsとは?WebGL を簡単に扱うための JavaScriptライブラリ

Three.js は、WebGL を簡単に扱うための JavaScriptライブラリ です。これを使うことで、ブラウザ上で3Dグラフィックスを描画することができます。

WebGLについては、こちらで説明しています。

目次

Three.jsの特徴

  1. WebGL(Web Graphics Library)を簡単に扱える
    • WebGL はブラウザで3Dグラフィックスを描画するためのAPIですが、低レベルのコードを書く必要があり、初心者には扱いが難しいです。
    • Three.js はその複雑さを抽象化し、シンプルな記述で3Dシーンを作成できます。
  2. 軽量で高性能
    • Three.js は軽量なライブラリで、パフォーマンスが高い3D描画が可能です。
  3. 豊富な機能
    • カメラ制御(オービットコントロールなど)
    • ライティング(影や反射の表現)
    • マテリアルとシェーダー(テクスチャやカスタムシェーダー)
    • 物理演算(Ammo.jsなどと連携可能)
    • モデルのインポート(GLTF、OBJ、FBXなど)
  4. ブラウザで動作
    • Webブラウザだけで3Dコンテンツを表示できるため、インストール不要。
  5. オープンソース
    • GitHub で公開されており、コミュニティが活発。
    • 公式リポジトリ:Three.js GitHub
      ライセンス:MITライセンス
      https://github.com/mrdoob/three.js

Three.jsの基本的な使い方

Three.js でシンプルな3Dシーンを作成する流れは以下のようになります。

  1. シーン(Scene)を作成
  2. カメラ(Camera)を作成
  3. レンダラー(Renderer)を作成
  4. オブジェクト(Mesh)を追加
  5. アニメーションループを作成
  6. レンダリング(描画)

サンプルコード

<canvas id="canvas"></canvas>
<script>
const canvas = document.getElementById("canvas");
const gl = canvas.getContext("webgl");

// 頂点シェーダー
const vertexShaderSource = `
  attribute vec4 position;
  void main() {
    gl_Position = position;
  }
`;
const vertexShader = gl.createShader(gl.VERTEX_SHADER);
gl.shaderSource(vertexShader, vertexShaderSource);
gl.compileShader(vertexShader);

// フラグメントシェーダー
const fragmentShaderSource = `
  void main() {
    gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0); // 赤色
  }
`;
const fragmentShader = gl.createShader(gl.FRAGMENT_SHADER);
gl.shaderSource(fragmentShader, fragmentShaderSource);
gl.compileShader(fragmentShader);

// シェーダープログラムの作成
const program = gl.createProgram();
gl.attachShader(program, vertexShader);
gl.attachShader(program, fragmentShader);
gl.linkProgram(program);
gl.useProgram(program);

// 三角形の頂点データ
const vertices = new Float32Array([
  0.0,  0.5,  // 上
 -0.5, -0.5,  // 左下
  0.5, -0.5   // 右下
]);
const buffer = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW);

const position = gl.getAttribLocation(program, "position");
gl.vertexAttribPointer(position, 2, gl.FLOAT, false, 0, 0);
gl.enableVertexAttribArray(position);

// 描画
gl.clearColor(0.0, 0.0, 0.0, 1.0);
gl.clear(gl.COLOR_BUFFER_BIT);
gl.drawArrays(gl.TRIANGLES, 0, 3);
</script>

実行結果:

Three.jsを活用できる場面

  • 3Dウェブサイト
  • WebGLゲーム
  • データビジュアライゼーション
  • VR/ARコンテンツ
  • シミュレーションツール

公式リソース

Three.js を使うと、ブラウザ上で手軽に3Dコンテンツを作成できるので、Webベースの3Dアプリ開発に興味がある方におすすめのライブラリです。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

AIアーティスト | エンジニア | ライター | 最新のAI技術やトレンド、注目のモデル解説、そして実践に役立つ豊富なリソースまで、幅広い内容を記事にしています。フォローしてねヾ(^^)ノ

コメント

コメントする

目次