3Dモデルはたくさんのファイル形式で利用可能で、それぞれに目的があり、複雑さも様々です。 three.jsは様々なloaderを提供しています が、適切な形式とワークフローを選択することで、パフォーマンスを改善することができます。 うまく動作させるのが難しいフォーマットや、リアルタイムでの体験に適さないフォーマットもあり、 中にはまったくサポートされていないフォーマットもあります。
このガイドでは、ほとんどのユーザにおすすめのワークフローと、予期しないことが発生したときに何を試してみればよいかを紹介します。
もしthree.jsをローカルサーバで動かすのが初めてなら、 [link:#manual/introduction/How-to-run-things-locally how to run things locally]を見てみてください。 3Dモデルを表示する際の多くの一般的なエラーはファイルを正しく配置することで防ぐことができます。
可能なら、glTF(GL Transmission Format)を使うことをおすすめします。 glTFは.GLB と .GLTFの両方のフォーマットについてサポートしています。 glTFはランタイムアセットの配信に注力しているので、変換時にはコンパクトでロードも早いです。 機能としては、メッシュやマテリアル、テクスチャ、スキン、スケルトン、morphターゲット、アニメーション、ライト、カメラがあります。
公開されているglTFファイルはSketchfabのようなサイトで利用可能です。 また様々なツールでglTF形式でexportすることが出来ます。
glTFをサポートしていないツールが使いたい場合は、ツールの作者にglTFのエクスポートを依頼するか、 the glTF roadmap threadに投稿することを検討してください。
glTFが選択肢にない場合は、FBX,OBJ,COLLADAといった一般的な形式も利用可能です。 これらは定期的にメンテナンスされています。
ごく一部のローダ(例えば、[page:ObjectLoader])はデフォルトでthree.jsに入っています。 ほかのものは、ユーザがそれぞれ自分のアプリに加える必要があります。
import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';
ローダをimportした時点で、シーンにモデルを追加できるようになります。 文法はローダによって異なります。異なるフォーマットを使う場合は、そのローダのドキュメントやサンプルを確認してください。glTFの場合、グローバルスクリプトでは以下のように使用します。
const loader = new GLTFLoader();
loader.load( 'path/to/model.glb', function ( gltf ) {
scene.add( gltf.scene );
}, undefined, function ( error ) {
console.error( error );
} );
より詳細な機能について知りたい場合は[page:GLTFLoader GLTFLoader documentation]を見てください。
何時間もかけて傑作をモデリングしたのに、webpageに読み込むと、なんと!😭 歪んでいたり、色がおかしかったり、表示されなかったりすることがあります。 そういったときにはトラブルシューティングを始めましょう。
上記のトラブルシューティングのプロセスを一通りやってもまだ動かない場合、正しいやり方で助けを求めることが 早期の解決につながります。three.js forumに質問を投稿して、可能であれば自分のモデル(もしくは同じ問題を持つよりシンプルなモデル)を利用可能な形式で添付してください。他の人が問題を迅速に再現できるように、十分な情報を含めてください。