メタセコイアのプラグインを作成するためのメモ。
常駐型プラグインでユーザー操作に応じてシーンを再描画したい場合、単にRedrawAllSceneを呼ぶだけではダメ。どうやらメタセコからのコールバックが終了したタイミングでしか再描画されない模様。
MQStationPlugin::ExecuteCallbackをオーバーライドしてRedrawAllSceneを呼び出すようにしておき、上位からはBeginCallbackしましょう。
2012年5月21日月曜日
2012年5月11日金曜日
メタセコイアプラグインをC++/CLIで作るときの注意点
メタセコイアのプラグインを自作しようとSDKを弄り中。
私が作ろうとしてるプラグインはパラメータ画面が複雑なため、Win32+WTLではなく
クラスライブラリが充実してる.NETで作りたいところ。
そこでプラグインDLLはC++/CLIで作って画面はC#で作って呼び出すことにしました。
メタセコSDKのサンプルをマネージ混在モードに切り替えてビルドしてみました。
ビルドは成功し、出来上がったDLLをメタセコへインストール・・・としてたところで見事にフリーズ、「DllMainでマネージドコードは呼んじゃだめよ」というエラーが発生しました。
調べてみるとDllMain関数をネイティブコードで生成していなかったのが原因でした。
#pragma unmanagedでネイティブコードを指定してやれば無事メタセコからロードできました。
#pragma unmanaged
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
return TRUE;
}
#pragma managed
2012年4月26日木曜日
続・美少女キャラモデリング
今まで使っていた美少女キャラの素体(顔と体)がヘボかったので作り直しました。
人体の骨格や肉付きをざっと勉強しつつ、キャラによって体型を変更しやすいよう、メタセコイアの曲面化機能を使って少ないポリゴンで組み上げました。
で、できあがった素体を使ってみたのがこちら↓
「夜明け前より瑠璃色なMC」のシンシア・マルグリットです。
pixivのプロフ絵用にレンダリングしたものがこちら。
べっかんこう先生の絵柄に近づくようパラメータを調整してみました。
トゥーンレンダリングにはWarabiを使っています。
次は藍澤光かキュアビューティを作ろうかな~
2012年3月29日木曜日
SQL ServerでDataフォルダを取得する方法
SQL ServerのDBをユーザープログラムからバックアップ/リストアするときのお話。
Management StudioでDBをバックアップするとデフォルトの保存先はSQL Server内のBackupフォルダになります。
逆にDBを復元する時、デフォルトパスはSQL Server内のDataフォルダです。
Q. ではこのDataフォルダの絶対パスを取得するにはどうすればいいでしょう?
A. SQL Serverのインスタンスに必ず1つ存在するmaster.mdfのパスを取得しましょう。
以下のSQLでmasterデータベースのmdfファイルパスを取得します。
select [physical_name] from master.sys.[database_files] where [name]='master'
通常はこれがProgram Files\SQL Server\MSSQL\Data\master.mdfを指しているのでDataディレクトリが分かります。
Management StudioでDBをバックアップするとデフォルトの保存先はSQL Server内のBackupフォルダになります。
逆にDBを復元する時、デフォルトパスはSQL Server内のDataフォルダです。
Q. ではこのDataフォルダの絶対パスを取得するにはどうすればいいでしょう?
A. SQL Serverのインスタンスに必ず1つ存在するmaster.mdfのパスを取得しましょう。
以下のSQLでmasterデータベースのmdfファイルパスを取得します。
select [physical_name] from master.sys.[database_files] where [name]='master'
通常はこれがProgram Files\SQL Server\MSSQL\Data\master.mdfを指しているのでDataディレクトリが分かります。
2012年2月27日月曜日
HV-128Fレビュー 続き
以前レビューした低周波マッサージ器HV-128Fですが、使い始めて5ヶ月以上経ち
どうも当初のパワーが出ないと思っていましたが、消耗品のロングライフパッドを新品に替えたら
最初のパワーが復活しました。
どうやらパッドの表面が摩耗して導電性が下がるようですね。
使用頻度によりますが、ロングライフパッドは4ヶ月程度で買い換えた方がいいでしょう。
どうも当初のパワーが出ないと思っていましたが、消耗品のロングライフパッドを新品に替えたら
最初のパワーが復活しました。
どうやらパッドの表面が摩耗して導電性が下がるようですね。
使用頻度によりますが、ロングライフパッドは4ヶ月程度で買い換えた方がいいでしょう。
2012年1月31日火曜日
3Dで美少女モデリング
3Dで紅瀬桐葉を作りました。スカイガールズのモーションスリット仕様です。
メタセコでモデリングし、アニメ調レンダリングができるWarabiというソフトを使って出力しました。
pixivにアップした後にWarabi上で細かいマテリアル設定ができることに気づいたのでもう一枚。
2012年1月26日木曜日
C#/VB.NETのUsingステートメント
C#やVB.NETにはUsingステートメントというのがあります。
これはオブジェクトをnewしたとき、Usingで定義したスコープを抜けると自動的に破棄(Dispose)してくれます。
でもこれ、無駄にスコープが作られちゃうので私はあまり使いません。(積極的に使ってる人いるんだろうか?)
例えばファイルを3つ開きたいとき、
Sub OpenFiles
Using file = new FileStream(“FILE1.TXT”)
Using file = new FileStream(“FILE2.TXT”)
Using file = new FileStream(“FILE3.TXT”)
・・・
End Using
End Using
End Using
End Sub
スコープ(というかブロック)が3つもネストしてしまい、すごくムダです。
かといってTry~Finallyで明示的にDisposeするのも野暮ったいし。
親スコープ内を抜けた時にDisposeする言語仕様だったらすごくスッキリするんですけどね。
ちなみにC++ではauto_ptr使えばこれが出来ます。
Sub OpenFiles
Using file = new FileStream(“FILE1.TXT”)
Using file = new FileStream(“FILE2.TXT”)
Using file = new FileStream(“FILE3.TXT”)
End Sub
でもこれ、無駄にスコープが作られちゃうので私はあまり使いません。(積極的に使ってる人いるんだろうか?)
例えばファイルを3つ開きたいとき、
Sub OpenFiles
Using file = new FileStream(“FILE1.TXT”)
Using file = new FileStream(“FILE2.TXT”)
Using file = new FileStream(“FILE3.TXT”)
・・・
End Using
End Using
End Using
End Sub
スコープ(というかブロック)が3つもネストしてしまい、すごくムダです。
かといってTry~Finallyで明示的にDisposeするのも野暮ったいし。
親スコープ内を抜けた時にDisposeする言語仕様だったらすごくスッキリするんですけどね。
ちなみにC++ではauto_ptr使えばこれが出来ます。
Sub OpenFiles
Using file = new FileStream(“FILE1.TXT”)
Using file = new FileStream(“FILE2.TXT”)
Using file = new FileStream(“FILE3.TXT”)
End Sub
登録:
投稿 (Atom)