【スリージェイエス】

Three.js(スリージェイエス) とは?

最終更新:
💡 Webに3Dの魔法をかける、JavaScript界の3Dエンジン

WebGLやWebGPUを使って、ブラウザ上に3Dグラフィックスを表示するためのJavaScriptライブラリ。GPUを扱う低レベルな処理を抽象化し、短いコードで3Dシーンを作成できる。

📌 このページのポイント
Three.js 主要コンポーネント Scene(舞台) Mesh 形状 + 見た目 Geometry Material Light 照明・影の設定 Ambient Light Directional Light Camera 視点・画角の設定 Renderer WebGL / WebGPU 画面に描画 🖥️ 🎭 役者・セット 💡 照明 映画撮影のように3Dシーンを構成する
Three.jsの主要コンポーネント(Scene/Camera/Renderer/Mesh)
ひよこ ひよこ
Three.jsって何がすごいの?
ペンギン先生 ペンギン先生
本来3DをWebに表示するにはWebGLという低レベルなAPIを使う必要があるんだけど、それは行列計算やシェーダーの知識が必要でかなり大変なんだ。Three.jsはそれを全部隠してくれて、「箱を置く」「光を当てる」みたいな直感的なコードで3Dが作れるんだよ
ひよこ ひよこ
どんなものが作れるの?
ペンギン先生 ペンギン先生
製品の3Dビューワー、建築物のウォークスルー、データの3D可視化、ブラウザゲーム…かなり幅広いよ。たとえばGitHubのトップページに表示されていた地球儀は、Three.jsを使って作られたとGitHubのエンジニアリングブログで紹介されているよ
ひよこ ひよこ
Scene・Camera・Rendererって何?
ペンギン先生 ペンギン先生
映画撮影に例えるとわかりやすいよ。Sceneは撮影スタジオで、3Dオブジェクトや照明を置く場所。Cameraはどの角度から見るかを決めるカメラ。Rendererはそれを実際に映像として画面に描き出す映写機、という役割分担だね
ひよこ ひよこ
おもしろい!Reactと一緒に使えるの?
ペンギン先生 ペンギン先生
react-three-fiber(R3F)というライブラリを使えば、Reactのコンポーネントとして3Dオブジェクトを書けるんだ。状態管理やアニメーションもReactの流儀で扱えるから、Reactに慣れた開発者にはとても使いやすいよ
ひよこ ひよこ
WebGPU時代になってもThree.jsは使えるの?
ペンギン先生 ペンギン先生
WebGPURendererという新しいレンダラーが用意されていて、WebGPUが使えないブラウザではWebGL 2に自動で切り替わるよ。ただ公式マニュアルでもまだ実験的な段階とされていて、ShaderMaterialなどで書いた独自シェーダーや、EffectComposerによる後処理はそのままでは動かないんだ。基本的なシーンは移しやすいけど、移行前に使っている機能を確認しようね
もっと詳しく知りたい人へ

今からThree.jsを始めるならWebGLRendererとWebGPURendererのどちらを使う?

公式マニュアルはWebGPURendererを「まだ実験的な段階」と説明していて、アプリや場面によっては機能が足りなかったり、WebGLRendererの方が速かったりする場合があるとしているよ。既存の作例や独自シェーダー(ShaderMaterial、onBeforeCompile)を使うならWebGLRenderer、WebGPUの新機能やTSL(Three Shader Language)で書くならWebGPURendererを試す、というように使う機能で選ぶのが安全だね。WebGPURendererを使うときはimport元を「three/webgpu」に変える必要があるよ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Three.js」って出てきたら「JavaScriptで3Dグラフィックスを手軽に作れるライブラリ」と思えればだいたいOK!
📖 おまけ:英語の意味
「Three.js」 = 3DのためのJavaScriptライブラリ
💬 名前の由来を説明した公式の記述は見当たらないけど、「Three」は3D(three-dimensional)の「3」と読むのが自然だね。「.js」はJavaScriptのファイル拡張子で、JavaScriptのライブラリであることを示しているんだ

参考資料

← 用語集にもどる