• R/O
  • SSH
  • HTTPS

mmdx: Commit


Commit MetaInfo

Revision205 (tree)
Zeit2010-05-01 22:16:34
Autorwilfrem

Log Message

シャドウマップマネージャとモデルを接続

Ändern Zusammenfassung

Diff

--- trunk/MikuMikuDanceXNA/Model/MMDModel.cs (revision 204)
+++ trunk/MikuMikuDanceXNA/Model/MMDModel.cs (revision 205)
@@ -23,6 +23,8 @@
2323 FlipTexture2D faceVertTexture; // 表情の頂点位置を格納するテクスチャ(CPUアニメーション用)
2424 //物理エンジンマネージャ
2525 MMDPhysics physics;
26+ //前回Drawしたタイムの保持
27+ static long beforeDrawTick = 0;
2628 //モデル名
2729 internal string Name { get; set; }
2830 //モデル付随アクセサリ
@@ -290,6 +292,8 @@
290292 Draw(gameTime.TotalGameTime.Ticks);
291293 //base.Draw(gameTime);
292294 }
295+
296+
293297 /// <summary>
294298 /// モデルの描画
295299 /// </summary>
@@ -303,9 +307,21 @@
303307 Effect effect = ModelData.ModelData.Meshes[0].Effects[0];
304308 mmdXNA.Camera.SetEffectParam(effect, totalTicks, Game.GraphicsDevice);
305309 mmdXNA.LightManager.SetEffectParam(effect, totalTicks);
306- //ここでシャドウマップマネージャ(仮)からテクスチャをもらう
307310 if (UseShadowMap)
308- throw new System.NotImplementedException();
311+ {//シャドウマップ処理
312+ if (mmdXNA.ShadowMapManager == null)
313+ throw new System.ApplicationException("シャドウマップマネージャがMMDXにセットされていません");
314+ if (beforeDrawTick < totalTicks)
315+ {
316+ Texture2D shadowTex;
317+ Vector2 shadowOffset;
318+ //シャドウマップマネージャからテクスチャをもらう
319+ mmdXNA.ShadowMapManager.GetShadowMap(out shadowTex, out shadowOffset);
320+ effect.Parameters["ShadowMap"].SetValue(shadowTex);
321+ effect.Parameters["ShadowOffset"].SetValue(shadowOffset);
322+ beforeDrawTick = totalTicks;
323+ }
324+ }
309325 }
310326
311327 ModelDraw(Game.GraphicsDevice, "MMDBasicEffect");//モデルの描画
@@ -316,7 +332,7 @@
316332 /// モデルのシャドウマップの描画
317333 /// </summary>
318334 /// <param name="totalTicks">GameTime.TotalGameTime.Ticksの値を入れる</param>
319- /// <remarks>手動更新用</remarks>
335+ /// <remarks>シャドウマップ描画用。シャドウマップ描画時に呼び出す</remarks>
320336 public void DrawShadowMap(long totalTicks)
321337 {
322338 if (ModelData.ModelData.Meshes.Count > 0 && ModelData.ModelData.Meshes[0].Effects.Count > 0)
--- trunk/MikuMikuDanceXNA/MikuMikuDanceXNA.cs (revision 204)
+++ trunk/MikuMikuDanceXNA/MikuMikuDanceXNA.cs (revision 205)
@@ -49,8 +49,11 @@
4949 /// 物理エンジン
5050 /// </summary>
5151 public btDiscreteDynamicsWorld Physic { get; internal set; }
52-
5352 /// <summary>
53+ /// シャドウマップマネージャ
54+ /// </summary>
55+ public IShadowMapManager ShadowMapManager { get; set; }
56+ /// <summary>
5457 /// 物理演算を使用フラグ
5558 /// </summary>
5659 /// <remarks>物理演算完成までデフォルトはfalse</remarks>
--- trunk/MikuMikuDanceXNA/IShadowMapManager.cs (nonexistent)
+++ trunk/MikuMikuDanceXNA/IShadowMapManager.cs (revision 205)
@@ -0,0 +1,23 @@
1+using System;
2+using System.Collections.Generic;
3+using System.Linq;
4+using System.Text;
5+using Microsoft.Xna.Framework.Graphics;
6+using Microsoft.Xna.Framework;
7+
8+namespace MikuMikuDance.XNA
9+{
10+ /// <summary>
11+ /// シャドウマップマネージャインタフェース
12+ /// </summary>
13+ /// <remarks>MMDX内オブジェクトとそれ以外のオブジェクトとの間で正しくシャドウマップを共有するためのインターフェイス。</remarks>
14+ public interface IShadowMapManager
15+ {
16+ /// <summary>
17+ /// シャドウマップ取得
18+ /// </summary>
19+ /// <param name="texture">テクスチャ</param>
20+ /// <param name="offset">シャドウマップオフセット</param>
21+ void GetShadowMap(out Texture2D texture, out Vector2 offset);
22+ }
23+}
Show on old repository browser