Three.jsで3Dモデルをレンダリングする

Three.jsの概要

【エンジニア募集中】フルリモート可◎、売上/従業員数9年連続UP、平均残業8時間、有給取得率90%、年休124日以上 etc.  詳細はこちらから>

Three.jsとは、3DモデルをリアルタイムレンダリングによってWebブラウザ上で表示する軽量なJavaScriptライブラリおよびAPIです。

Webブラウザ上で3DモデルをプラグインなしでレンダリングするAPIとして、WebGL(Web Graphics Library)というAPIがあります。しかし、WebGLのみでは様々な専門知識が必要で学習のコストが高いです。

Three.jsはこのWebGLの技術を利用し、基本的なJavaScriptのコードでより簡単に3Dモデルをレンダリングすることができます。

Three.jsを利用するための準備

公式サイトの左側のメニューのdownloadリンクからライブラリをダウンロードできます。

Three.js 公式サイト

ダウンロードしたthree.js-master.zipを展開して、three.jsファイルを任意の作業フォルダにコピーします。

作業フォルダに以下のようなコードを記述したHTMLファイルを作成します。

以上でThree.jsを利用するための準備は完了です。

Three.jsはnpmからのインストールやCDNで提供されているURLでも利用可能です。

シーンを作成

カメラで撮影するためのシーン(空間)を作成します。

このシーンに後述する作成した3Dモデルやライトを保持させていきます。

 

カメラを作成

空間内でモデルを撮影するためにカメラを作成します。

今回はPerspectiveCameraでカメラを作成します。

Perspectiveは遠近法という意味で近くのものは大きく、遠くのものは小さく見えます。

カメラを設置します。

3Dモデルを作成

ジオメトリとマテリアルで構成されたメッシュと呼ばれるオブジェクトが3Dモデル自体になります。

ジオメトリで3Dモデルの形状を設定することができます。

今回は球=SphereGeometryを設定します。

球のほかにも立方体=BoxGeometryやドーナツ型=TorusGeometryなど様々な形状を設定することができます。

マテリアルで3Dモデルの素材(色、質感)を設定することができます。

今回は光沢感のある質感を表現できるMeshPhongMaterialを設定します。

色、質感の違う様々な素材を設定することができます。

メッシュにジオメトリとマテリアルを設定します。

シーンにメッシュを追加します。

ライトを作成

ライトを使用することで3Dモデルの陰影を表現することができます。

今回は特定の方向に放射されるDirectionalLightでライトを作成します。

ライトを設置します。

シーンにライトを追加します。

レンダラーを作成

3D空間をレンダリングするためにレンダラーを作成します。

以下のような3Dモデルがレンダリングできれば完成です。

全体のソースコード(index.html)

【エンジニア募集中】フルリモートも◎(リモート率85.7%)、平均残業8時間、年休124日以上、有給取得率90% etc. 詳細はこちらから>

Smallitのサービス