• R/O
  • SSH
  • HTTPS

mmdx: Commit


Commit MetaInfo

Revision626 (tree)
Time2010-11-27 14:49:23
Authorwilfrem

Log Message

……やり直し。

Change Summary

Incremental Difference

--- branches/PipelineRefactor/MMDImporter/Model/MMDBuilder.cs (revision 625)
+++ branches/PipelineRefactor/MMDImporter/Model/MMDBuilder.cs (revision 626)
@@ -17,7 +17,7 @@
1717 /// </summary>
1818 class MMDBuilder
1919 {
20- public const bool UseMaterialPalette = true;
20+ public bool UseMaterialPalette = true;
2121 /// <summary>
2222 /// ビルド処理
2323 /// </summary>
--- branches/PipelineRefactor/MMDImporter/Model/MMDImporterNM.cs (nonexistent)
+++ branches/PipelineRefactor/MMDImporter/Model/MMDImporterNM.cs (revision 626)
@@ -0,0 +1,64 @@
1+using System;
2+using System.Collections.Generic;
3+using System.Linq;
4+using Microsoft.Xna.Framework;
5+using Microsoft.Xna.Framework.Graphics;
6+using Microsoft.Xna.Framework.Content.Pipeline;
7+using Microsoft.Xna.Framework.Content.Pipeline.Graphics;
8+using MMD = MikuMikuDance.Model.Ver1;
9+
10+using TImport = Microsoft.Xna.Framework.Content.Pipeline.Graphics.NodeContent;
11+
12+namespace MikuMikuDance.XNA.Model
13+{
14+ /// <summary>
15+ /// MikuMikuDanceのモデルデータをXNAにインポートするためのインポータ
16+ /// </summary>
17+ [ContentImporter(".pmd", DisplayName = "MikuMikuDance PMD(HiDef-NonMaterialPallete) : MikuMikuDance for XNA", CacheImportedData = false, DefaultProcessor = "MMDHiDefProcessor")]
18+ public class MMDImporterNM : ContentImporter<TImport>
19+ {
20+ /// <summary>
21+ /// インポート処理
22+ /// </summary>
23+ /// <param name="filename">ファイル名</param>
24+ /// <param name="context">コンテントインポータ</param>
25+ /// <returns>XNAモデル用のNodeContent</returns>
26+ /// <remarks>XNAのインポータから呼び出される</remarks>
27+ public override TImport Import(string filename, ContentImporterContext context)
28+ {
29+ //Identityを設定(コンテンツのロード元の判別等に必要)
30+ ContentIdentity Identity = new ContentIdentity(filename);
31+
32+ //MMDモデルの読み込み
33+ //ここで注意点だが
34+ //MMDは左手座標系で、XNAは右手座標系である
35+ //よって、全てのZ軸情報が逆である
36+ MikuMikuDance.Model.MMDModel modelBase;
37+ try
38+ {
39+ modelBase = MikuMikuDance.Model.ModelManager.Read(filename, MikuMikuDance.Model.CoordinateType.RightHandedCoordinate);
40+ }
41+ catch (Exception e)
42+ {
43+ // コンテンツ ID (行番号を含む) を含めて例外を報告します
44+ throw new InvalidContentException(
45+ "Unable to load MMD Model file. Exception:\n" + e.Message,
46+ Identity, e);
47+ }
48+ //MMDバージョンチェック
49+ if (modelBase.Version != 1.0f)
50+ throw new InvalidContentException(
51+ "This Importer can read only MMD Model ver 1.0.", Identity);
52+ //バージョンチェックしたのでMMDVer1にキャスト
53+ MMD.MMDModel1 model = (MMD.MMDModel1)modelBase;
54+
55+ //MMDBuilderを使ってモデルビルド
56+ TImport result;
57+ MMDBuilder builder = new MMDBuilder();
58+ builder.UseMaterialPalette = false;//Reachはマテリアルパレット使えない
59+ result = builder.Build(filename, model, Identity);
60+
61+ return result;
62+ }
63+ }
64+}
--- branches/PipelineRefactor/MMDImporter/Model/MMDImporter.cs (revision 625)
+++ branches/PipelineRefactor/MMDImporter/Model/MMDImporter.cs (revision 626)
@@ -14,7 +14,7 @@
1414 /// <summary>
1515 /// MikuMikuDanceのモデルデータをXNAにインポートするためのインポータ
1616 /// </summary>
17- [ContentImporter(".pmd", DisplayName = "MikuMikuDance PMD : MikuMikuDance for XNA", CacheImportedData = false, DefaultProcessor = "MMDHiDefProcessor")]
17+ [ContentImporter(".pmd", DisplayName = "MikuMikuDance PMD(HiDef) : MikuMikuDance for XNA", CacheImportedData = false, DefaultProcessor = "MMDHiDefProcessor")]
1818 public class MMDImporter : ContentImporter<TImport>
1919 {
2020 /// <summary>
@@ -55,6 +55,7 @@
5555 //MMDBuilderを使ってモデルビルド
5656 TImport result;
5757 MMDBuilder builder = new MMDBuilder();
58+ builder.UseMaterialPalette = true;//Hidefはマテリアルパレット使える
5859 result = builder.Build(filename, model, Identity);
5960
6061 return result;
--- branches/PipelineRefactor/MMDImporter/Model/MMDReachImporter.cs (nonexistent)
+++ branches/PipelineRefactor/MMDImporter/Model/MMDReachImporter.cs (revision 626)
@@ -0,0 +1,64 @@
1+using System;
2+using System.Collections.Generic;
3+using System.Linq;
4+using Microsoft.Xna.Framework;
5+using Microsoft.Xna.Framework.Graphics;
6+using Microsoft.Xna.Framework.Content.Pipeline;
7+using Microsoft.Xna.Framework.Content.Pipeline.Graphics;
8+using MMD = MikuMikuDance.Model.Ver1;
9+
10+using TImport = Microsoft.Xna.Framework.Content.Pipeline.Graphics.NodeContent;
11+
12+namespace MikuMikuDance.XNA.Model
13+{
14+ /// <summary>
15+ /// MikuMikuDanceのモデルデータをXNAにインポートするためのインポータ
16+ /// </summary>
17+ [ContentImporter(".pmd", DisplayName = "MikuMikuDance PMD(Reach) : MikuMikuDance for XNA", CacheImportedData = false, DefaultProcessor = "MMDReachProcessor")]
18+ public class MMDReachImporter : ContentImporter<TImport>
19+ {
20+ /// <summary>
21+ /// インポート処理
22+ /// </summary>
23+ /// <param name="filename">ファイル名</param>
24+ /// <param name="context">コンテントインポータ</param>
25+ /// <returns>XNAモデル用のNodeContent</returns>
26+ /// <remarks>XNAのインポータから呼び出される</remarks>
27+ public override TImport Import(string filename, ContentImporterContext context)
28+ {
29+ //Identityを設定(コンテンツのロード元の判別等に必要)
30+ ContentIdentity Identity = new ContentIdentity(filename);
31+
32+ //MMDモデルの読み込み
33+ //ここで注意点だが
34+ //MMDは左手座標系で、XNAは右手座標系である
35+ //よって、全てのZ軸情報が逆である
36+ MikuMikuDance.Model.MMDModel modelBase;
37+ try
38+ {
39+ modelBase = MikuMikuDance.Model.ModelManager.Read(filename, MikuMikuDance.Model.CoordinateType.RightHandedCoordinate);
40+ }
41+ catch (Exception e)
42+ {
43+ // コンテンツ ID (行番号を含む) を含めて例外を報告します
44+ throw new InvalidContentException(
45+ "Unable to load MMD Model file. Exception:\n" + e.Message,
46+ Identity, e);
47+ }
48+ //MMDバージョンチェック
49+ if (modelBase.Version != 1.0f)
50+ throw new InvalidContentException(
51+ "This Importer can read only MMD Model ver 1.0.", Identity);
52+ //バージョンチェックしたのでMMDVer1にキャスト
53+ MMD.MMDModel1 model = (MMD.MMDModel1)modelBase;
54+
55+ //MMDBuilderを使ってモデルビルド
56+ TImport result;
57+ MMDBuilder builder = new MMDBuilder();
58+ builder.UseMaterialPalette = false;//Reachはマテリアルパレット使えない
59+ result = builder.Build(filename, model, Identity);
60+
61+ return result;
62+ }
63+ }
64+}
--- branches/PipelineRefactor/readme.txt (revision 625)
+++ branches/PipelineRefactor/readme.txt (revision 626)
@@ -336,10 +336,23 @@
336336 モデル
337337 -パイプラインの大幅修正
338338 --MMDProcessorをMMDHiDefProcessorに変更
339---マテリアルパレットをconst定数値でtrueに固定(インポータの継承で対処する?)
339+--マテリアルパレットを削除。(マテリアルパレットをオフにする場合はMMDReachImporterを使用)
340340 ---既存モデルとの互換性のために、プロセッサから削除しました。
341341 ---影響が出るのは透明を多用しているモデルです。
342342 ---申し訳ないですが、変えたい方はソースコードから変更をお願いします
343+-MMDImporterNMの追加
344+--マテリアルパレット無しのインポータ
345+--マテリアルパレット使いたくない場合はこちらを指定
346+-MMDReachImporterを追加
347+--ReachProcessor用の
348+-MMDReachProcessorを追加
349+--ReachProcessorの内容
350+---toon, スフィアマップ非対応
351+---ボーン数制限
352+---表情非対応
353+---シェーダ2.0対応……のはず。(確認できず)
354+---他の形式のモデルとの連携
355+---XNA4.0対応時、WindowsPhoneに対応予定
343356
344357 -パイプラインを大幅修正し、既存のモデルインポータ/プロセッサと互換性を持たせる予定
345358
Show on old repository browser