🎨

[Gltf] 各頂点ごとのデータがほしいとき

に公開

ゲーム開発をしていると3dモデル(Gltfファイル)のデータをゲーム進行中に書き換えたいときがありますね。しかしGltfファイルはOBJなどと違って頂点ごとのデータがGltfファイルに直接記述されているわけではありません。したがって.gltfファイルの中を見ても、各頂点の座標や法線ベクトル、UVのデータは閲覧できません。
gltf-viewerでも頂点ごとの情報を得ることはできません。

GodotやBevyなどのゲームエンジンで各頂点ごとに処理を分けたい場合はどうすればよいのかというと、頂点カラーを使います。
3DモデルをBlenderで作成したとします。頂点カラーはVertex Paintモードで行いますが、完成品をGltfとしてエクスポートするときにマテリアルをつけてしまうと頂点カラーがなくなってしまうので、UV展開はしつつ、マテリアルなしでエクスポートします。
モデルのロードが完了したら頂点カラーを白vec4(0,0,0,0)に変更することで頂点カラーをキャンセルしておきましょう。

あとは好きなように3dモデルの頂点データを変更することができます。🎊

Discussion