2009年2月21日土曜日
ミクさんで拡張現実でWPFなWMPの視覚エフェクトプラグインを更新
更新内容は
1.IWMPEffects, IWMPEffects2をそれぞれ明示的に実装した。これで、過去のWMPでも使えるはず。
2.パラメタを少しいじった。
パラメタをいじったので、レジストリのHKCU/software/tomorrowplusplus/WMPEmitMiku以下を削除してから実行すると良いかも。
ここのWMPEmitMiku.zipです。
自分のPCだとパフォーマンスに難があるし、ネカフェだと.net framework3.5のインストールとかに時間がかかったりで、準備に時間がかかり過ぎる。
誰か、3D性能およびWEBカメラの性能の両方が良い環境の方、うまい音楽を選んでパラメタをうまくいじってCamStudioでのキャプチャ動画を作ってくれませんかねえ。CamStudioならスピーカ出力もキャプチャできるし(ただし何故かうちではできない)。
1.IWMPEffects, IWMPEffects2をそれぞれ明示的に実装した。これで、過去のWMPでも使えるはず。
2.パラメタを少しいじった。
パラメタをいじったので、レジストリのHKCU/software/tomorrowplusplus/WMPEmitMiku以下を削除してから実行すると良いかも。
ここのWMPEmitMiku.zipです。
自分のPCだとパフォーマンスに難があるし、ネカフェだと.net framework3.5のインストールとかに時間がかかったりで、準備に時間がかかり過ぎる。
誰か、3D性能およびWEBカメラの性能の両方が良い環境の方、うまい音楽を選んでパラメタをうまくいじってCamStudioでのキャプチャ動画を作ってくれませんかねえ。CamStudioならスピーカ出力もキャプチャできるし(ただし何故かうちではできない)。
2009年2月20日金曜日
ミクさんで拡張現実でWPFなWMPの視覚エフェクトプラグイン

最低限の形にはなった。指数分布に従って確率的にミクさんを放出し、その時に、帯域毎のパワーに応じて単位時間辺りのミクさん放出数を決めている。パラメタなどいじる余地がまだまだあるし、初速度を帯域のパワーと関連させるのもありだろう。
ここのWMPEmitMiku.zipがソース。バイナリも入っているので、readme-en.txtの指示に従えば遊ぶだけも可。
追記:設定をレジストリで持つようにしたら、平均ミク放出数の最小値と最大値を同じにしてしまって音楽に合わせた変化が生まれなくなってしまった。このバグは修正した。
2009年2月19日木曜日
.netアセンブリをCOMサーバとして登録する場合の注意
GUIDがあるんだから、同じ``名前空間.クラス名''のクラスでも問題ないと思ったら問題大有り。生成されるレジストリエントリは
と、実際に登録されるのはmscoree.dllだ。こいつが.netアセンブリをロードし、マーシャリングをする仕組みになっているっぽい。そこで、たとえGUIDがちがくとも、同じ``名前空間.クラス名''のクラスを複数登録すると、一つのCOMクライアントからそれらを同時に参照する場合に問題が生じる。多分、厳密な名前とやらを付与しても変わらない(未実験)。
そういうわけで、前のエントリで公開したWMPの視覚エフェクトのスケルトンをいじる時は名前空間やクラス名を変えて、その上でクラスのGUIDも変えるというステップを踏みましょう。
[HKEY_CLASSES_ROOT\MyEffect]
@="WMPWPFTest.MyEffect"
[HKEY_CLASSES_ROOT\MyEffect\CLSID]
@="{F6ADD2D1-C4C0-4E4A-99DF-49AC5A90D23B}"
[HKEY_CLASSES_ROOT\CLSID\{F6ADD2D1-C4C0-4E4A-99DF-49AC5A90D23B}]
@="WMPWPFTest.MyEffect"
[HKEY_CLASSES_ROOT\CLSID\{F6ADD2D1-C4C0-4E4A-99DF-49AC5A90D23B}\InprocServer32]
@="mscoree.dll"
"ThreadingModel"="Both"
"Class"="WMPWPFTest.MyEffect"
"Assembly"="WMPWPFTest, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
"RuntimeVersion"="v2.0.50727"
"CodeBase"="file:///C:/Users/Ruke/Documents/Visual Studio 2008/Projects/WMPWPFTest/bin/Release/WMPWPFTest.dll"
[HKEY_CLASSES_ROOT\CLSID\{F6ADD2D1-C4C0-4E4A-99DF-49AC5A90D23B}\InprocServer32\1.0.0.0]
"Class"="WMPWPFTest.MyEffect"
"Assembly"="WMPWPFTest, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
"RuntimeVersion"="v2.0.50727"
"CodeBase"="file:///C:/Users/Ruke/Documents/Visual Studio 2008/Projects/WMPWPFTest/bin/Release/WMPWPFTest.dll"
と、実際に登録されるのはmscoree.dllだ。こいつが.netアセンブリをロードし、マーシャリングをする仕組みになっているっぽい。そこで、たとえGUIDがちがくとも、同じ``名前空間.クラス名''のクラスを複数登録すると、一つのCOMクライアントからそれらを同時に参照する場合に問題が生じる。多分、厳密な名前とやらを付与しても変わらない(未実験)。
そういうわけで、前のエントリで公開したWMPの視覚エフェクトのスケルトンをいじる時は名前空間やクラス名を変えて、その上でクラスのGUIDも変えるというステップを踏みましょう。
C#+WPFによるWMP VisualizerのスケルトンにIWMPEffects2を実装した
これで、他の視覚エフェクトと行儀良く共存できるようになった。
ダウンロードはこちらの WMPWPFTest.zip です。
ダウンロードはこちらの WMPWPFTest.zip です。
登録:
投稿 (Atom)
