LoginSignup
3
2

More than 1 year has passed since last update.

Shap-Eで生成した頂点カラーGLBをUnityにもっていく方法

Posted at

使ったもの

  • Unity 2019.4.31f1
  • blender 2.83.20.0

UniGLTFは使いません。理由は後述。

まえがき

こんにちは。VRにドハマりしてる、きくはなと申します。
最近、テキストから3Dモデルを生成できるAI、Shap-Eで遊んでいます。

このShap-Eで遊ぶためには、Google Colabなどのpython環境でコードを動かす必要があるのですが、
hysts氏作成のデモサイトを使うことで、簡単に体験することができます。

上記のデモサイトで3Dモデルをダウンロードすると、glb形式で出力されます。
これをUniGLFTでインポートできるようにして、Unityで使ってみよう!

と、思ったのですが...
image.png
あれ?

エラーが出て上手くインポートできませんでした...

原因がよく分からなかったので推測にはなりますが、UniGLFTは頂点カラーglbをそもそもサポートしていないのかもしれません。
というのも、まず前提として、Shap-Eが出力する3Dモデルは頂点カラーで着色がされています。
(ここら辺の原理はShap-Eの論文を読み込んでみると理解できるかと思います。興味があればぜひ。)

試したところ、テクスチャが存在するglbはインポートができたので、そういうものなのかもしれません。

Shap-Eで生成したカービィちゃんです。"頂点の色"という項目がアクティブになっています。
image.png

ミノカサゴのフォトグラメトリモデルです。"UVセット0"がアクティブで、テクスチャデータが存在します。
image.png

気を取り直して、頂点カラーglbをUnityにもっていく方法を探してみます。

調査した結果、頂点カラーを表示するシェーダーを作成できることが分かりました。

さっそく試してみましょう!

1. blenderでglb->FBXの処理を行う。

とは言ったものの、glbをそのままUnityにインポートすることはできません。
頼みの綱のUniGLTF君には断られてしまったので、ここではblender君の力を借りましょう。
2023-05-13 (4).png
glbをインポートして、
2023-05-13 (5).png
FBXとしてエクスポートします。

おまけでUnity用FBXの設定をのっけておきます。
ボーンはないのでこの設定で十分だと思いますが、不備があれば気軽にご指摘ください。
2023-05-13 (7).png

はい、blenderくんの仕事はこれで終わりです。
一応、頂点カラーを画像テクスチャにベイクしたり、ポリゴン数を削減して軽量化を図ることも可能ではあるのですが、かなり面倒なので、今回は割愛したいと思います。

2. Unityにインポートする

FBXにしてしまえば、Unityにもっていくのは簡単です。
あとはシェーダーですが、こちらで紹介されていたものをそのまま使用させていただきました。

Shader "Custom/Shader_VertexColor" {
	Properties {
	
	}

	SubShader {
		Tags {
			"Queue"      = "Geometry"
			"RenderType" = "Opaque"
		}
	
		CGPROGRAM
			#pragma target 3.0
			#pragma surface surf Standard fullforwardshadows

			struct Input {
				fixed4 color : COLOR;
			};

			void surf (Input IN, inout SurfaceOutputStandard o) {
				o.Albedo = IN.color.rgb;
			}
		ENDCG
	}

	FallBack "Diffuse"
}

このシェーダーをFBXに適用してあげると...
2023-05-12 (3).png
こうなります。
後ろのカービィちゃんは前述しためんどくさいやり方(画像テクスチャベイク・ポリゴン数削減済み)で実装したもので、画像テクスチャが存在しますが、VRHMDのモデルは画像テクスチャがなくとも着色されていることが分かるかと思います。

おわりに

以上が頂点カラーGLBをUnityにもっていく方法になります。
皆さんもShap-Eで3Dモデルを生成しまくって、Unityにもっていって遊んじゃいましょう!

参考

3
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2