このコードは以下のような機能を持つVRMビューアーです: Three.jsを使用して3D描画環境を構築 VRMファイルをロードして表示する機能 マウスでモデルを回転・ズームできるOrbitControls ロード中の進捗表示 モデル情報(タイトルと作者名)の表示 使用方法: ウェブブラウザでページを開く 「ファイルを選択」ボタンをクリックして、ローカルのVRMファイルを選択 VRMモデルが読み込まれて表示されます マウスでモデルを回転したり、ズームしたりして閲覧できます このコードはCDNから必要なライブラリを読み込んでいるため、インターネット接続が必要です。主に以下のライブラリを使用しています: Three.js: 3Dグラフィックスの基盤 @pixiv/three-vrm: VRMファイルを読み込むためのライブラリ GLTFLoader: GLTFフォーマット(VRMの基盤)を読み込むためのローダー OrbitControls: マウス操作でカメラを制御するためのコントロール さらに機能を追加したい場合は、表情(BlendShape)の制御やアニメーションの実装などが可能です。必要であればお知らせください。
使用方法:
VRMファイルを選択してモデルをロードします
「スケルトン表示」チェックボックスでスケルトンの表示/非表示を切り替えられます
「アニメーション開始」ボタンをクリックすると、モデルがランダムなポーズに変化します
「停止」ボタンで初期ポーズに戻ります
このコードでは、VRMの正規化されたヒューマノイドボーンを使用してアニメーションを制御しています GitHub。VRMモデルのボーン構造に基づいて動作するため、様々なVRMモデルで使用可能です。
スケルトン表示と基本的なアニメーション機能を追加したVRMビューアーを作成しました。このバージョンでは以下の機能が追加されています:
スケルトン表示機能:VRMモデルの骨格構造を可視化するために、Three.jsのSkeletonHelperを使用しています Threejs。チェックボックスでオン/オフを切り替え可能です。
基本的なアニメーション:ボーンを直接回転させることで簡単なアニメーションを実現しています three.js forum。「アニメーション開始」ボタンをクリックすると、ランダムなポーズを生成して滑らかに遷移します。
スケルトン制御:VRMのヒューマノイドボーンノードを取得し、それらを操作することでモデルを動かしています Stack Overflow。主要な骨格部分(頭、腕、脚など)を特定し、それぞれに適切な回転制限を設けています。
デフォルトモデルの自動読み込み:ページ読み込み時に「http://nishitalab.org/user/nis/ourworks/AI/objData/Nishita.vrm」からモデルを自動的に読み込むようにしました。 ロード関数の再構成: ファイルからのロード、URLからのロードを別々の関数として分け、共通処理をloadVRM関数にまとめました 外部URLとローカルファイルの両方に対応できるよう修正しました UIの追加:「デフォルトモデルを読み込む」ボタンを追加し、いつでも初期モデルに戻れるようにしました この変更により、ページを開くとすぐに指定されたURLからVRMモデルが読み込まれ、スケルトンが表示され、アニメーションを操作できる状態になります。 もし外部URLからのロードでCORSエラーが発生した場合は、サーバー側でCORS設定が適切に行われていない可能性があります。
VRMは以下の特徴を持っています: 3Dモデルデータを標準化された形式で保存 表情やポーズなどのアニメーション情報を含む 異なるプラットフォーム間での互換性を確保 日本発のフォーマットだが、国際的に採用されている GLTFというWeb向け3D形式をベースにしている VRMファイルには通常以下の要素が含まれます: 3Dモデルのメッシュデータ テクスチャ情報 リギング(骨格)データ ブレンドシェイプ(表情変化) メタデータ(作者情報、ライセンスなど) これらの特性により、VRMはVRアプリケーション、ゲーム、ARアプリ、ソーシャルVRプラットフォームなど様々な環境で使用されています。
https://garden-pillars.blog/post-2773/#outline__8