強火で進め

このブログではプログラム関連の記事を中心に書いてます。

Unity上のMeshをColladaファイルに変換するクラス

こちらで公開されている「Unity上のMeshをColladaファイルに変換するクラス」を使ってみました。

ColladaExporter.cs - mgrenier - Michael Grenier repository - Google Project Hosting
http://code.google.com/p/mgrenier/source/browse/trunk/Unity/Utils/ColladaExporter.cs

呼び出す処理はこの様に書きました。Meshを含むGameObjectを選択して実行すると.daeファイルがUnityのプロジェクトフォルダに出力されます。
【Editor/MenuTest.cs】

using UnityEditor;
using UnityEngine;

class MenuTest : MonoBehaviour {
    [MenuItem ("GameObject/Test")]
    static void DoSomething () {
    	string outputFilePath = "./test.dae";
    	if (Selection.gameObjects.Length == 0) {
    		Debug.LogWarning ("Please select Game Object.");
    	}
    	foreach (GameObject gameObj in Selection.gameObjects) {
    		bool created = false;
			MeshFilter MF = gameObj.GetComponent (typeof(MeshFilter)) as MeshFilter;
			if (MF) {
	    		ColladaExporter.SingleMesh (outputFilePath, MF.mesh);
	    		created = true;
			}
			if (!created){
				SkinnedMeshRenderer SM = gameObj.GetComponent (typeof(SkinnedMeshRenderer)) as SkinnedMeshRenderer;
				if (SM) {
		    		ColladaExporter.SingleMesh (outputFilePath, SM.sharedMesh);
		    		created = true;
				}
			}
			if (created){
    			Debug.Log ("Created!");
			} else {
    			Debug.LogWarning ("Creation failed.");
			}
    	}
    }
}

※クラスではMeshの色も出力も記述されているみたいですがその辺りは上手く出力されていないみたいです。うーん、どうやったら上手く出力されるんだろ?

関連情報

sehm@メモ 3軒目  Unity スクリプトで動的にメッシュを変更する
http://sehm.blog48.fc2.com/blog-entry-154.html