スポンサーサイト

  • --/--/--(--) --:--:--

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

MikuMikuDance for XNA v1.60a公開

  • 2010/12/05(日) 22:49:05

MikuMikuDance for XNA v1.60a公開しました。

久しぶりのマイナーバージョンアップとなります。

今回の主な更新点は
・軽量モデル(Reach)対応
・x, fbxとかのアニメーション付きモデルの対応
となります。

それに伴いパイプラインが変更されていますのでご注意下さい

今回の機能ですが、主にゲーム製作に使うためのものだと思っています。
一般的なMikuMikuDanceのモデルですが
ゲームに使う場合、必ずしも必要で無い機能が多いのも事実です。
例えば、多いボーン数、素材数、トゥーン、物理などの情報は
ア○ドルマスターとか○リームクラブのような綺麗さ重視のゲームには必要ですが
単純なアクション、シューティング等では必ずしも必要のない情報です

また、同じゲーム無いでも、ザコ敵とか、モブとかには細かな描画は必要なかったりします。
そういった物に対して、Reachをお使いください

なお、今回Reachと名前つけましたが
XNA4.0にはまだ対応してません……

早く対応したいのですが
ゲーム製作+修論があるので、そうはいかないのも現状です。

あと、今回Reachを作りましたが
MikuMikuDance用モデルは綺麗な物が多いため
対応しているモデルが非常に少ないです。

ボーンとか、表情とか多すぎじゃなイカ?

スポンサーサイト

この記事に対するトラックバック

この記事のトラックバックURL

この記事にトラックバックする(FC2ブログユーザー)

この記事に対するコメント

MMD for XNA

はじめまして。

ライブラリ、ちょっと使わせてもらいましたー。
圧巻のコード量ですねえ。これ・・どれくらいかかったんですか?

使用感ですが、いい具合にまとまっていていいですねえ。
正直、リファレンスが欲しいですけど…。
C++/CLI からも使ってみようと試みましたが、ContentPipeline の読み込みで
型関係の例外が出てしまって折れてしまいました。

今後の希望としては、SubDivide とモデル、テクスチャ、ボーン、モーションなどの各種データのLoDに対応して頂けると、ゲームにも使える気がします。
(自前でLoDデータ用意すればいいかもしれませんが・・・)

今後もがんばってください。

  • 投稿者: Nattoh
  • 2010/12/09(木) 22:10:26
  • [編集]

はじめまして

そうですねー
つくりはじめたのが今年の1, 2月ぐらいで、初版公開が3月なので2ヶ月ほどでしょうか。

リファレンス……あ。
すみません。src版にリファレンス付けるの忘れてました。
v1.61aBinary版に簡易リファレンスが付いてます。
(ちょっとリアルでバタバタしてるため、手が回ってないです。ごめんなさい。)

データの簡素化、軽量化はパイプライン処理で行うべきものかどうかは
少々、考えどころではあります……(ゲーム動かさないと分からないので)
ただ、MMDモデルは高性能な物が多いので
簡素化ツールを別に用意したほうがいいのかな?(むしろその辺りは既存のモデリングソフトの範囲?)と思ってます。

あと、ContentPipelineの例外とはどのようなものでしょうか?
いわゆるα版なので、まだバグ等があると思うので(といいつつ、4.0で大幅リファクタになってしまうのですが……)
できれば教えて頂けないでしょうか?

  • 投稿者: ウィルフレム
  • 2010/12/10(金) 10:23:11
  • [編集]

No title

MikuMikuDanceXNA.cs 内、line 458
MMDModelData modelData = Content.Load<MMDModelData>(assetName);

この部分ですね。

'Microsoft.Xna.Framework.Content.ContentLoadException' のハンドルされていない例外が Microsoft.Xna.Framework.dll で発生しました。

追加情報: "Model\MMD_Miku" の読み込み中にエラーが発生しました。ファイルに MikuMikuDance.XNA.Model.MMDImporterOutput が含まれていますが、MikuMikuDance.XNA.Model.ModelData.MMDModelData として読み込もうとしました。

言語仕様的なものなのかな?と、ろくに調べもせずに放置してました。
こちら側の呼び出しは、

m_hThreadManager = gcnew ThreadManager();
m_hMmd = gcnew MikuMikuDanceXNA(m_hGame, m_hThreadManager);
m_hModel = m_hMmd->LoadModel("Model/MMD_Miku", m_hGame, QuatTransform::Identity);

こんな感じです。
ContentPipline 部分は、C#のプロジェクトと依存関係です。


>データの簡素化
そうですね、モデラで対応できれば一番パフォーマンス高いと思うのですが、
そのあたりのデザインスキルの無い私のような人間だと、機能に頼ってしまいがちです・・・。
PMDデータのポリゴンリダクションツールを作ったほうが早いかもですねー。

  • 投稿者: Nattoh
  • 2010/12/10(金) 11:43:14
  • [編集]

No title

プロセッサが通ってないですねー
インポーター通しただけで終わってますね。

.pmd→MMDImporter→MMDImporterOutput→MMDHiDefProcessor→ModelDataContent→.xnb→MMDModelDataという流れなので
プロセッサを通すと多分上手く行くでしょう。

プロセッサ通しているなら、何かの理由でプロセッサが通ってないか……

  • 投稿者: ウィルフレム
  • 2010/12/10(金) 16:01:58
  • [編集]

No title

こんにちは、前も質問に来たものですが。
MMDModelがinterfaceになってるのはいいのですがTransformが無くなってますよね。
モデルの移動はどうすればいいのでしょうか?

  • 投稿者: -
  • 2010/12/13(月) 19:55:22
  • [編集]

MMDModel.Transformについて

Transformは現在、MMDReachModel(かMMDHiDefModel)にキャストして利用することになっています。

その理由として、QuatTransform構造体や行列はプロパティを使わずpublic変数として利用して欲しいからです(現に前のverではそうしていました)
C#で構造体をプロパティでアクセスする場合、model.Transform.Translation.X+=20みたいなことは許可されません。
また、Vector.Add等の関数で参照渡しが使えず、パフォーマンスに問題が出やすいということ。
インターフェイスにメンバ変数を含むことが出来ない等があるため
申し訳ないですが、あえて、Transformプロパティを用意していません。

ただ、要望があれば、MMDModelインターフェイスにget/set関数は作成してもいいとは思っています(パフォーマンス問題がありますが)

  • 投稿者: ウィルフレム
  • 2010/12/13(月) 20:45:52
  • [編集]

No title

返答ありがとうございます。
やっぱりキャストするのが正解なんですね。
ダウンキャストしようとするとなぜか体が拒むのでw

  • 投稿者: -
  • 2010/12/13(月) 21:07:46
  • [編集]

No title

こんにちは、度々すみません、
MMDCameraのGetViewMatrixでVector3.Transform(CameraUpVector, CameraMatrix)
とありますが平行移動も反映されてしまうのはまずくないですか?

  • 投稿者: -
  • 2010/12/15(水) 09:33:06
  • [編集]

No title

あ……確かにまずいですね。
ご指摘ありがとうございます。修正して次版で訂正版を出そうと思います。

  • 投稿者: ウィルフレム
  • 2010/12/15(水) 09:46:23
  • [編集]

コメント投稿

管理者にだけ表示を許可する

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。