Gポイントポイ活 Amazon Yahoo 楽天

無料ホームページ 楽天モバイル[UNLIMITが今なら1円] 海外格安航空券 海外旅行保険が無料!

log

2011.05.26 Lscript:モーションリターゲットスクリプト

ファイル 348-1.jpg

自作のモーションリターゲットスクリプトでワールド-ローカル座標系の変換がうまく
いかなってここ数日四苦八苦してましたが。。とりあえず固定回転記録を使って
初期回転値を0にしてからリターゲットすれば、ボーンの構造が違っていてもうまく
リターゲットできる様子なので、ワールド-ローカル座標系変換はとりあえず一旦
保留にしようと思います。何だかあと少しでできそう、、な気がするのですが。
出来るといった確証は無いですからね。

ここまででキャラクター間のモーションリターゲットの画像を用意していなかったので
一枚用意してみました。標準体型からちびキャラへのリターゲットの場合に足が
少し地面にめり込んだりといった不都合がでたので少し修正が必要ですが、
ひとつひとつキーをコピー&ペーストするといった手間がなくなったのが何より嬉しい!

ただ、今のところポーズの左右反転コピーは未だにコピー&ペーストといったチマチマ
した手法をとっているので…苦笑。後はこの辺だけでも自動化したいところです。

2011.05.24 LScript:MultiGameMove

LW10のゲームデバイスが自身の環境で利用できなかったので、代わりに
キーボードを使ってアイテムを動かすLScriptを作ってみました。

UP/DOWN/LEFT/RIGHTキーで選択アイテムを移動させます。ただ単に移動させる
だけなので、指定アイテムを地面として高さを変えたりとかはやってません。C++では
以前やったことですが、LScriptでそれをやるととてもしんどそうなので保留です苦笑;

何気なしに作ってみましたが、サクサクっとカメラを動かしたい場合に使えるかな。

http://green.ribbon.to/~takehouse/archive/MultiGameMove.zip

追記:
Stickyモディファイアを利用して、指定アイテムの高さを取得するサンプルシーンを
追加で入れておきました。それとVPRだとキー入力が続いている間は以前の
位置・フレーム時の画面を描画し、キー入力が終わったらその時点での新しい
位置・フレーム時の画面を描画、という感じになりますね。ちょっと残念…。

2011.05.18 Lscript:モーションリターゲットスクリプト作成中

色々とスクリプトが出来てきたので、今回は練習で作ったスクリプトたちを
いくつかご紹介してみようと思います。

・MultiSetValue
 座標値、UV値、頂点カラー値、ウェイト値、法線値の数値設定。
・MultiScale
 スケール・法線方向スケール・Inflate・Increase機能をまとめたスクリプト。
・MultiSmooth
 スムース・Flatten機能をまとめたスクリプト。
・MultiMirror
 ウェイトマップ名の左右反転を考慮したミラー。
・MultiMerge
 ウェルド・マージ・不正ポリゴン修復機能をまとめたスクリプト。

こんなところです。ちなみに全てのスクリプト名に"Multi"という名前がついているのは
スクリプトの頭文字が同じだとファイル名でソートしたときに並んで自分のスクリプトが
表示されることを考えてです。スクリプトフォルダでソートできたらいいんですが、
それができないですからね。。
それとサイトでは2つしか公開してませんが、下の3つは完全に自分用の組み方
なので公開は特に考えてません苦笑。

それと現在はモーションリターゲットのスクリプトを作るためにレイアウトのスクリプトを
勉強中です。リターゲットに必要なアイテムのプロパティは大方取得できたので、
後は座標系のローカル-ワールド変換くらいです。とりあえず、リターゲット機能が
一番実装したかった機能なので割とすんなり組めそうでほっとひと安心です。
こんなにすんなりできるのであれば、もっと早めにやっておくんでしたね;

2011.05.14 LW:MultiScale

ファイル 345-1.jpg

MultiSetValueと平行してMultiScaleというスクリプトも作ってみました。こちらは
LWのサイズ、ストレッチ、法線方向移動の機能を1つにまとめたものです。
MultiSetValueと同様リアルタイム確認がとれるようにしたのと、選択頂点を
元にセンターを1ボタンで設定できるようにしてみました。

それほど対したスクリプトでもないんですけどね苦笑;何故こんなスクリプトを作った
かといえば、コマンドパネルのレイアウトをすっきりしたかったからな訳です。
今まではスケール処理のコマンドで3つも表示コマンドをとっていましたが、これが
スッキリとまとまった上に今まで小さく押し込めていたコマンドを表示させることが
できるようになったので意外や意外、これが結構嬉しい結果となりました。というより
ショートカットを沢山覚えれば、こんなスクリプトも必要ないんですが…、まあ色んな
ソフトを扱っているとショートカットもバラバラなので沢山のショートカットを長時間
覚えるのは個人的にしんどいのであった。

ちょっとコマンドをすっきりさせたいなあ、という方は是非お試しあれです笑。
http://green.ribbon.to/~takehouse/archive/MultiScale.zip

追加:
試しにInflateとCrease機能もつけてみました(上の画像参照)。
ちゃんとしたInflate,Creaseのアルゴリズムを知らないのでいんちき実装ですが、
やっとこさこしらえましたよ笑。時間かかった~。

2011.05.11 Lscript:MultiSetValue

ファイル 344-1.jpg

最近Lscriptを触り始めていたのですが、ようやくLscriptでそれっぽいものを
ひとつ作ってみました。その名もMultiSetValueです!

LW標準のSetValueの機能追加版です。実は似たような他のプラグインがいくつも
あるのですが、それらの機能がまとまったらいいのになあと以前から考えていたので
今回は自分が思う理想のSetValueスクリプトを手がけてみることにしました。

とりあえず、まだ実装していない機能がいくつかあるのですが、使ってみたいという方が
いらっしゃるかもしれないので配布してみようと思います。
詳しい説明はZipアーカイブの中に入れておきましたのでそちらを参照してください。

http://green.ribbon.to/~takehouse/archive/MultiSetValue.zip

というか使いたいLWユーザさん、いるかなあ苦笑。

2011.04.25 sculptris:スカルプト&リトポについて少し考察

ファイル 343-1.jpg

久しぶり~な投稿です。今回は新しいキャラクターをスカルプト&リトポしてみました。
いつもならば、リアルタイム用にもっとポリゴン数を少なめにリトポするのですが、
ちょっと服の練習がしたかったので無駄に多めにリトポしてみました。ただ、現在は
リトポを覚えたばかりで頂点を一つ一つぽちぽちと打つ感じで作業してますが、
おかげでリトポ作業にかかる時間がかなり多くなってしまったので、もう少し効率的に
リトポできるように少し研究したほうがいいなと思いました。

リトポにかかる時間についてですが。リトポ前とリトポ後のポリゴン数の差が小さく
なるほど、あまりスカルプトで作業する必要が無いような気がするなと個人的に
思いました。場合によっては始めからポリゴンで作ったほうが早くなる場合もあるので。。
リトポを以下に効率的に作成できるかが今後のスピードモデリングの鍵になりそうです。

2011.03.26 LW:ようやくテクスチャ作成

ファイル 342-1.jpg

プログラムやら何やらで1ヶ月ほどほったらかしにしていたモデルを久しぶりに
更新。テクスチャとウェイトをある程度作成して、とりあえず完成手前といった感じです。

ちなみに公式設定をみると身長が95cmだそうですが、さすがにその通りに設定
すると他のキャラと比べて小さすぎる感じだったので1m数cm程度にしてみました。

ようやく出来てきたなあ、と思いつつ。これから背景も作らないといけないな;

2011.03.18 C++:OpenGLはじめました。

最近になってまた少し寒くなってきましたが、、「もっと熱くなれよっっ!」と思うこの頃。

前からOpenGLの勉強を少しずつ積み重ねていたので、今までDirectX一辺
倒で制作していましたが今回少しだけOpenGLのプログラムを組んでみることに
しました。とりあえず頂点バッファの実装まで出来て、思うことがあったので、
そのことについてのメモを残しておきます。

インディーズデベロッパの方の多くがDirectXでの開発なのではないかなと推測して
いるのですが、それの大きな原因となっているのがOpenGLはDirectXと
比べてより低レベル実装なAPIであるということなんだと思っています。具体的には
D3DXのようなヘルパー関数が標準で実装されていなかったり、デフォルトの
描画処理周りがスタック構造になっている、等など。

ヘルパー関数についてはDirectXで自作実装していれば容易にそこから持って
これそうですが、DirectXが左手座標系なのに対してOpenGLは右手座標系
ですから、そのあたりでやっぱり少し面食らう訳なのです。
「OpenGLでも作ってみたいけど、色々と面倒そうだし資料少ないし実際
DirectXと変らないでしょ?」という感じでそのままDirectXの制作に戻る
のも頷けます。自分もそうでした笑。

ただ色々とOpenGLを調べてみると、低レベルAPIであるおかげでDirectXでは
触ることすら許されない部分が自分でカスタマイズできるという利点もある訳です。
例えばOpenGLだと頂点バッファをそれぞれ座標用バッファ、法線バッファ、UV
バッファのように分離してそれぞれを指定して描画ができます。

ここから何ができるのかというと、以前制作したボクセルは必ず頂点位置が一定
間隔でスナップするので、頂点座標のバッファはリサイクルできるわけなのです!
DirectXだとリサイクルしようにもUV等の他の共有できない情報が邪魔してしまう
のですが、OpenGLだとそれが可能になります。これは嬉しい。

他にもトライアングルストリップの他にクアッドストリップ(トライアングルストリップ
の4角ポリゴン版)等があったりと、DirectXでこれあったらいいなと思っていた機能が
ちらほらある感じで、3DソフトでOpenGLを使っているものが多いのが何故なのか
妙に頷けるような気がしました。どうでしょう、OpenGL触りたくなったでしょう?笑


追加:
よくよく考えて後から調べてみると、DirectXでもSetStreamSource()の
ストリーム番号を指定することで複数バッファで描画できるということを知りました。
あらら、自分の無知を晒してしまいました。。まだまだDirectXでも新しい発見が
ありそうですね、頑張ろう!

2011.03.16 C++:ボクセルことはじめ

ファイル 340-1.jpg

流体表現をやる前のことはじめとしてボクセルを実装してみました。
手前の白いワイヤーの形状がボクセルで表現しています。とりあえず形だけは
できましたが、まだ法線計算もできていないし、UVも計算できていないです。。

ボクセルが出来たところで、ちょっとリアルタイム流体表現の話でもしてみます。

昨今のリアルタイム流体表現は、自分が知る限り大きく2つの表現に分かれるかと
思います。ボクセル表現とスクリーンスペース表現です。
・ボクセル
 等間隔グリッドごとの情報を元にサーフェイスを生成。
 利点:分割数次第でスクリーンスペースと比べて滑らかになる。
 欠点:分割数が多いほど頂点計算やロック処理が重い。
・スクリーンスペース
 ハイト情報のパーティクルを一時バッファに描画し、バッファをブラーした後、
 バッファのハイトを元に法線を計算してレンダーバッファを描画。
 利点:サーフェイス生成を行わないので効率が良い。
 欠点:複数回描画なのでピクセルシェーダ負荷が大きい。

こんなところでしょうか。自分が思う限り、ボクセルはサーフェイス生成が面倒な上に
半透明の形状は不得意な印象なのでスクリーンスペースの方が実装が楽かな
という気がします。はい、「なぜボクセルにした!」という話になりますね笑。

リアルタイムのサーフェイス生成は近年のGPUでようやくそれなりにできるように
なったかなという感じですが、今後よりこの動きが加速するんじゃないかというのを
見越しての実装です。何より、動的にオブジェクトを生成できるっていうのは楽しい
ことだと思うんですよね。昔のゲームでも、例えばアイテムを合成したり町づくりが
できたりといった要素が入っているものは楽しかった印象があります。
実は3Dになってから逆にサーフェイスやオブジェクトが少し静的になった部分が
あるなと以前から思っていましたが、嬉しいことにようやくそれを乗り越えられるような
いい時代がやって来たのかもしれません。…て、一体何をいっているのやら笑。

2011.03.15 C++:球面線形補間の導入

以前から「流体表現やってみたいなあ」と思い、とある書籍をネットで注文して
たのですが、地震のためか中々届かないですね。。まあ、地震よりも結構前から
注文してたりしますが苦笑。今は宅配・流通関係の業者も忙しいでしょうから
それが落ち着くまではゆっくり気長に待ちたいと思います。

それと、今までモーション補間を線形補間で実装していたので球面線形補間に
変更してみたのですが。たまにモーションが素早く切り替わる現象は直らずといった
感じでした。うーん、、いくつか問題点として心当たりのある部分は思いつくのですが
何ともいえない所です。とりあえず、一つ一つ調べていくしかないな。