PMDをUnityで読み込みたい(2)
PMDをUnityで読み込む方法をググってるとこんな場所にたどり着いた
【3Dゲームエンジン】Unity 3
http://2chnull.info/r/gamedev/1303575476/1-1001
2chスレのキャッシュですね
この512~516レスによれば
>514:名前は開発中のものです。:2011/06/27(月) 15:50:04.87 id:z2a7fB+Rdownup
> mikumikudanceをunityに持っていくには何がお勧め?
> blenderは自分でマテリアルとテクスチャ設定しなきゃいけないのがうざい
>
> Unityではpmdから頂点データとか自分でロードして、レンダリングは出来ないよね
>
>515:名前は開発中のものです。:2011/06/27(月) 17:31:22.54 id:kNgxDM4idownup
> 別にできなくはないぞ
>
>516:名前は開発中のものです。:2011/06/27(月) 20:04:15.09 id:MwjbHmN0downup
> リファレンス軽く見てみたら
> WWWとGL
> Graphics.DrawMesh
> Mesh
> とか使えばいけそうな気がするようなしないような(自分の実力と時間的に)
>
> filestreamクラス見たいのがないのが不安
> やるべきかやらざるべきか
ということらしい
「WWW,GL,Graphics.DrawMesh,Mesh」って何やねんという疑問があるので
Unityのスクリプトリファレンスを読んでみよう
http://unity3d.com/support/documentation/ScriptReference
このリファレンスの"Runtime Classes"を覗いてみると件の4つのクラスがありました
じゃあ順番にWWWから見ていこうと思う
(1) WWW : "Simple access to web pages"のためのクラス
http://unity3d.com/support/documentation/ScriptReference/WWW.html
えっ?
"This is a small utility module for retrieving the contents of URLs. "
って説明に書いてある
WWWはどうやら指定したURLの内容を回収するためのクラスらしい
ウーム、なんだかわかんないぞ
俺が今やりたいこととは関係ない気がする…
よくわからんので後回しにしよう
(2) GL : "Low-level graphics library"のためのクラス
http://unity3d.com/support/documentation/ScriptReference/GL.html
説明の文章をエキサイト翻訳してみたら以下な感じ
「活発な変換マトリクスを操作し、オープンGLのイミーディエイト・モードに
似ている演出コマンドを出し、他の低レベルのグラフィックス・タスクを行うために
このクラスを使用してください。Graphics.DrawMeshを使用するほとんどすべての場合での
それがイミーディエイト・モード図面を使用するより効率的であることに注意してください」
ほうほう
あと"GL drawing commands execute immediately"っていう記述があった
GLの描画コマンドは、Update()内で呼ばれるとカメラのレンダリング前に実行されるらしい
なるほどこのGLクラスは低レベルでのグラフィック操作をガンガンやりたい人のための
ものなのね。Unityにもこういうのがあるのかー
じゃあだいたい概要がわかったので次いこう
(3) Graphics.DrawMesh
まずはGraphicsクラスから調べる
●Graphics : "Raw interface to Unity's drawing function"のためのクラス
http://unity3d.com/support/documentation/ScriptReference/Graphics.html
ほほう。Unityの描画関数をナマで触りたい人のためのクラスなのね
じゃあ件のGraphics.DrawMeshNowについて見ていこう
●Graphics.DrawMesh : "Draw a mesh"のためのメソッド
http://unity3d.com/support/documentation/ScriptReference/Graphics.DrawMesh.html?from=GL
説明を機械翻訳&ちょこっと修正したら、以下の感じになった
「DrawMeshは、1フレームのためのメッシュを描画する
メッシュは照明の影響を受けるし、影を投げたり受け取ることができる
そして、プロジェクターによって影響を受けることができる
- ちょうどそれがあるゲーム・オブジェクトの一部であるように
それはすべてのカメラ、あるいは特定のカメラのために描画することができる」
フゥーム。ようわからんけど、これでメッシュ描画できるのね?
じゃあ次
(4) Mesh : "creating or modifying meshes from scripts"のためのクラス
http://unity3d.com/support/documentation/ScriptReference/Mesh.html
スクリプトからメッシュ作成・修正を行うためのクラスなんですって?
説明読んでみたけどちょっとわかんないね。
ここまで4つのクラスと1つのメソッドについて調べてみたよ
まとめると、最初に示した516番のレスの意味するところは
「MMDデータをUnityにもっていくには
MMDデータを読み込んで頂点データリストなど取得した後
(1)MeshクラスでMeshを作成して、Graphics.DrawMeshで描画する
(2)GLクラスで描画する
のが良さそう
ただし、filestreamクラスみたいなものが無いから
(MMDデータを読み込むことが可能か不明なので)不安だ」
っていうことなのかしらね
とりあえずそのように理解しておこう
ちょっとつかれたので休憩