« 2013年12月 | トップページ | 2014年3月 »

2014年2月

2014年2月24日 (月)

パッていしおん。

何年も前から、改造したり書き足したりしながら書いたツールなんですけどね。


パーティションのアレです。 複数の Pass で、次々にパーティションを作成しながらオブジェクトをブチ込んでいくとか、既にあるパーティションにズンドコ入れていくとか、そういうアレです。


それ以外にも、パーティションがらみのちょっとした機能がいろいろ付いてます。 あの Pass にあるあのパーティションをこちらの Pass でも再現したい、でもマテリアルアサインしたりオーバーライド作り直したりするのめんどくせえなあ、先に全部設定してから Pass を複製すれば良かったなあ、などという場面で役に立ってるんですが、どうですかね。

以前に単体でこのブログに載せたことがありましたね。  それを改良したり、色々付け加えたりしたものですね。







パッていしおん

http://homepage3.nifty.com/jjj/XSIFiles/Plugin/JJJ_XSI_Plugins.html


Pa_menu


Pa_ppg







説明は全部ビデオです。 いっぱいツールが入ってるから、いちいちドキュメント書いてられない。 喋る方がずっとラクです。  HD にしないと文字読めないかも。














ではごきげんよう。





.

| | コメント (3) | トラックバック (0)

2014年2月18日 (火)

ソートします。

スケマティックビューでマウスドラッグして矩形選択しますよね。


Recsel

こういう風に。 四角を描いて選択します。


すると、選択したオブジェクトは、名前がちゃんと連番になっているにも関わらず、選択順は連番の順になってないんですよね。




なんでですか。アフォですか。昔から思ってました。


どういう時困るかと言うと、親子付けするときとかですね。このように矩形選択で選択したために選択の順番が名前順になってない時、誰かの子供にしたりすると、名前順ではないその順番で親子付けされてしまいます。 そうなると、スケマティックビューでノードを整列し直したとき、そのおかしい順番で並んでしまうんですよね。 なので I キーを押して並びを直してやらないと見づらい。 これがめんどくさい。

あとはリネームとかですよね。マルチモードの PPG を出して名前を入力してイッキに連番名にする時とか、もちろん選択順でリネームされますからね。




まあ最近の若僧はスケマティックを使わずエクスプローラばかり使うらしいから問題ないみたいだけど、あなた、人生の半分損してますよ。スケマティックは人生の半分です。 ええそうです。

っていうか最近の若僧は XSI を使わないよね。 うん、あなたの人生、ほぼ幸せのはずです。 今どき XSI と一緒にいると人生を棒に振ります。俺は知ってて一緒にいます。俺の人生そんなもんです。




ともかくですね、スケマティックで矩形選択したときでも、ちゃんと名前順にソートされた状態の選択にして欲しいんですよ。嘔吐デスク様。アフォですか。

と長年思っていたけどさっき条件反射的にスクリプト書きました。超シンプルスクリプト。 なんとなくちゃんと動いているように見えるが、きっと不都合な場面も多いだろうな。まあいいや。


JScript
---------------------------------------------------

var aItems = new Array();
for ( var i=0; i<Selection.count; i++ )	{
	aItems.push( Selection(i).Fullname );
}
aItems.sort();
SelectObj( aItems );
Logmessage( "ソートして選択し直しますた。 : " + Selection.GetAsText() );

---------------------------------------------------

こんだけなんですけどね。


このスクリプトをダウンロードする(右クリックで保存とか)



何か選択して実行すると、その選択中のオブジェクトの名前を、内部的にソートします。そしてソート後の結果を使って改めて選択し直します。結果、名前順の選択が実現しているはずです。 このスクリプトがするのはここまでです。 後は、この状態で親子付けとかすれば、ちゃんと名前順で親子付けされます。 もちろんリネームも選択順でされます。 そんだけです。

ソートは、他に方法を知らないもんだから、JScript の Array に対する sort メソッドをよく挙動も知らないまま白痴的に使ってますが、これだと不十分だったりする場面も出てくるんでしょうね。 でも他に知らないの。 何かいいアイデアあったら教えて下さいね。







2014年にもなってまだ XSI のスクリプト書いてブログに載せたりしてる俺って・・・・ ゑへへ。俺の人生そんなもんです。よろしくお願い致します。


ごきげんよう

.

| | コメント (0) | トラックバック (0)

2014年2月12日 (水)

ポリゴンの境界にインクライン。

という話を m4g さんとしていたのですがね。 一応、ここにまとめておきます。



m4g さんはもともと、ワイヤフレームのレンダリングをしたかったらしいのですがね、俺が言う方法は、頑張ればそれにも使えるとは思うけど、もともとはワイヤフレームレンダではなく単に任意のポリゴンの境界にインクの線を出現させたかった、というものであります。 長年使ってきた方法です。



まずですね、オブジェクトに、このようなマテリアルを与えます。 UV も必要です。

Inky11

Toon_Host の中に Unblend Group というものがありますよね。これ、例えばマテリアルごとに数値を変えておくと、違う数値同士はアンブレンドする = ブレンドしない = つまり線を描く という機能ですね。 こいつとこいつの境界には絶対に線を描けよ! と指令していることになりますね。 

っていうか、こんな機能使わなくても、マテリアルが違えばもうその時点で境界に線が描かれるというのが Toon_Ink_Lens のデフォルト設定ですね。 でも、なんらかの都合でこのデフォルト設定を変えてマテリアル境界に線を描かないようにしている場合でも、この Unblend Group で違う数値を持つマテリアル同士では、必ずその境界に線が描かれるということだと思います。

で、このパラメータ、テクスチャが貼れちゃうんですね。 なので、マテリアルは同一でも、UV で指定された領域ごとに違う数値を持たせてやれば、その境界に線を引けるわけです。 1つのオブジェクトの中で、この部分は Unblend Group 1、この部分は Unblend Group 2・・・・という風に指定してあげるわけです。


上の画像の場合、6色のテクスチャを使っています。このテクスチャ画像は、必要な明るさの段階の数だけ色数があるなら、6色じゃなくともなんでもいいと思います。 一番暗い色は黒100%(ゼロ)、一番明るい色は白100%(1)にしておきます。

で、Change Range します。 元のテクスチャは黒100%から白100%までの明るさがあるので、Change Range の Old Range のスタート/エンドは、0 と 1 を入力します。 そしてそれを、6色テクスチャを使っているから6段階にリマップしてあげるということで、New の方に 1 と 6 を入力しています。 「この画像は元々 0-1 の明るさを持っているが、その 0-1 という範囲を、1-6 という6段階の数字に直して出力しろよ」 と言っていることになります。

こうして各ポリゴンは、UV で指定された位置によって、必ず1から6までのどれかの数値(整数)を引っさげて Unblend Group にブチ込まれることになります。 実際に6色しかない画像を使って1-6にリマップするんだから、結果は整数にしかなり得ません。 そして理論上、2-8 でも 21-26でも 9-3 でもいいと思います。6段階にさえなればそれでいい。たぶん。  もし8段階の明るさがあるテクスチャを使うなら、1-8とかにすればいいと思います。たぶん。



そして、上の画像の XSI男の目のあたりを見て欲しいのですが、UV 操作によってこの部分は周囲とは別の色になっています。 ポリゴンによって色が違うということは、その色によって別の数値が Unblend Group に渡されるので、線が引かれるはずです。

ただし、各ポリゴンは、テクスチャエディタ上でそれぞれ1点に集約(コラップス)しないとダメのようです。これをやらないと怪しい模様が出てきたりします。 サンプルポイント同士を補完しようとするから? なのかな? コラップスしていれば、UV上での座標は同一なので、補完されなくなり、整数以外の値が出てこなくなるから、とか? どうでしょうかね。


ってことでコラップスして、レンダリジョン描いてみました。
Inky12

左側、テクスチャエディタ上で、グレー部分のサンプルポイントと、黒部分のサンプルポイントが、コラップスされているのが分かると思います。

そして目の周辺にちゃんとインクラインが描かれている。 反対側の目を見てもらうとわかりますが、本来はラインが描かれないはずの領域です。しかし、目の周辺の領域とそれ以外の領域で違う数値が Unblend Group に渡されているので、線が描かれているわけです。 m4g さん、俺がいつもやってるのはこれです。


ってことで、この方法でやると、ポリゴン境界に確実に線を描くことができると思います。
Inky13


当然、ラインを描きたい場所は、必ずその描きたいラインに沿う形でポリゴンの境界が存在してなければならず、つまりそのようにモデリングしておかなければなりません。 ただの平面だったとしても、そこにラインでなんらかの模様を描きたければ、平面を分割して、平らのまま、分割した線をその形にモデリングしておくということです。



Inky14

例えばメカもので、メカメカしいパーティングラインをインクラインで出したい場合だとか、デカール類の境界線をインクラインで出したい場合、よく使っています。


しかしこれをワイヤフレームレンダリングに使うとなると、隣接するポリゴン同士が同じ色にならないように全ポリゴン分けていかなければいけないので、UV 作業が超大変ですね。

Inky15

うーん、大変だ。 しかも見落としミスをしやすいな。 この画像でも、見落としミスによって、ポリゴンの境界なのに線が描かれてない部分があります。 m4g さん、このやり方だと、全ポリゴンそれぞれでコラップスしていくツールとか、必要かもね。 m4g さんのようにプロシージャルにやる方法を考えた方が良さそうですね。




この方法の大きな欠点は、上に書いたようにモデリングが面倒なこと、UV 作業が面倒なこと、ですよね。 まあ、ワイヤフレーム的に使うのでなければ、その面倒さはもう仕方ないと思っていつもやってますけどね。

あと、閉じた線しか描けないことですかね 例えば文字の 「C]のように、ぐるっと一周つながっておらず一部開いた部分がある線というのは、その構造上できないと思います。 これについて何か方法があれば是非教えてください。



この方法、もともとどこで覚えたんだっけなあ。たぶん、Toddアキタさんのチュートリアルビデオを見たんだと思う。 それを見て、まとめて、シンプルなツリーに落とし込んでくれと丸○くんに頼んでできたレンダツリーだったような記憶があるんだが、どうだったっけね○山くん。




それともうひとつ、ポリゴン境界に頼らず、ポリゴンをまたいだ状態のテクスチャを貼ってそこにインクラインを出せないか、なのですが・・・・。

やってみると難しいんです。 これができれば完全に自由なのにね。
Inky21
テクスチャ画像は自由に描いた物です。マルもあれば四角もある。そして2色しか使ってないので、Change Range の出力は 1-2 にしてあります。

上の画像、なんか、ちゃんと出来ているように見えるでしょ? テクスチャ通りにインクラインが描けていると思うでしょ?


しかし寄ってみると、
Inky22
こうなんです。 線がガタガタです。

これ、テクスチャ画像の曲線部分はアンチエイリアスがかかるので、白か黒(1か0)以外の明るさのピクセルもあるからなんですよね。にも関わらず1-2という、1か2の2種類の数値しか持てない値に Change Range してしまっているので、このようなガタガタの線になるのだと思います。

じゃあアンチエイリアスがない画像にすればいいかというとそんなことはない。同じようにガタガタの線になります。アンチエイリアスしてないということは、元の画像ですでにガタガタの線が描かれているわけで、メンタル霊は忠実にそのガタガタを拾ってインクラインを描くだけです。


ちなみにこの部分だけは問題がないように見える。
Inky23
なぜなら、この部分は元のテクスチャ画像上でで水平線か垂直線しかなく、ゆえにアンチエイリアスがもともと無いからです。水平・垂直線ゆえに、アンチエイリアスがなくとも成立するのですね。 でも実際は、こんな水平・垂直線だけで済むインクラインなんてあり得ません。

試しに Change Range の値を変えてみると、このような変な模様が出てきました。
Inky24
このテクスチャ画像は、アンチエイリアスがかかっているために、もともと何段階かの明るさを持つ画像になっているわけで、それを1-6に押し込めたらこうなった、というものです。意味無し。


でもこの New Range のスタートとエンドを適当にがちゃがちゃいじっているうちに、上手く行ったように見えることもあります。
Inky25
これは適当に 8-2 なんて数値にしてみたら、変な模様が消えた! なんか、上手く行ってる?  でも線がちょっと太いような・・・・。


寄って見てみると、
Inky26
線がガタっている。


同じ箇所をもっと寄って見てみると、
Inky27
わっ 線が複数描かれていたっ
ダメだこれは使えねえ orz

やはり、アンチエイリアスのためにテクスチャ画像のピクセルの色が何段階かになっちゃっているのが原因ですよね。その境界に線を引けと言っているわけだから、アンチエイリアスのボケの中に含まれる明るさの違いの数だけ、線が引かれてしまうということなんですよね、たぶん。 ダメですねやっぱり。  

一方、上記のようなポリゴンコラップス方式は、もともとアンチエイリアスもクソもありません。ポリゴン(というかサンプルポイント)がまるごとコラップスされてある色の領域にまるまる入っているんだから、インクライン境界は画像のピクセルで作られるのではなく、UV で作られるとでも言うかなんというか。

でもまあ、あまり寄らないレンダリングには、上のようなテクスチャを貼る方式も使えるかもしれませんね。




どうでしょうかね。


あ、Max の Pencil って、どうなんですか。 こういうインクラインの制御、すごくできますか? タッチとかそういう制御もそうだけど、今回のこの話題のように、「どこに線を描いてどこに描かないか」の制御が、緻密に出来ますか? あるいは、Maya でも何かいい機能がありますか? 知っているお方、教えて下さい。


そしてもちろん XSI で、俺は他の方法でインクラインを制御してるぜというお方がいらっしゃいましたら、どうか教えて下さい。 この方法のまま、何年もどん詰まり、進化無し状態ですよ俺 orz  新しい知識や技を入れたいところです。。。。。





.

| | コメント (0) | トラックバック (0)

2014年2月11日 (火)

Fカーブエディタで選択ツールに戻れず激怒。

Fカーブエディタで、選択ツールに戻れずに困ったこと、ありませんか? 俺はしょっちゅうなんです。激怒します。


ちなみに、0 を押して出現するフローティングのエディタではなく、ドックされたエディタ上での話です。フローティングのエディタの中でもこの問題が起きるのかは、わかりません。





Fカーブエディタ上では、デフォルトでは選択ツールですよね。

Fc1

上の画像にある、矢の先っちょのようなアイコンですよね。 これでFカーブもキーフレームも選択できる。



で、Fカーブエディタ上でパンとかズームとかの操作をします。 S キーだったり、Z キーとかですかね。
Fc2
すると、上の画像のようなアイコンに変わります。


で、その後、また選択ツールに戻りたい。 だから Space キーを押します。 Space キーを押すと、「選択ツール」 と 「Fカーブ選択ツール」 のトグルに入るはずです。 でも、なぜかそうならない。 選択ツールに戻れない。 なんで? 何度押しても、力いっぱい押しても、なでるように押しても、選択ツールには戻れません。 いったいどういう押し方をしろと言うのでしょうか。 激怒します。

選択ツール独自のショートカットは Y キーらしいのですが、Y を押してみても戻りません。 激怒します。



この現象、ないですか? 俺はいつもこうなります。 激怒です。



他のキーを適当にがちゃがちゃいじくっていると、急に選択ツールに戻れたりします。 いつの間にか直っちゃった感じ。 でも、どーしても戻れないこともあります。そういう時は仕方なく、XSI を再起動します。 再起動さえすれば必ず戻るのでいいのですが、超面倒です。激怒。


これ、ずっと昔からあったんだよなあ。 回避方法が分からず、何年も放置して来ました。 ビデオカードの問題かなあ、とか思ったり。






しかし、最近その回避策というか、この現象が起こったときに100%確実に選択ツールに戻れる方法を発見したような気がするのです。 サッキーたんと話をしているうちに、偶然見つけた気がします。


実にシンプルな方法なのですが、この症状が出たら、0 キーを押す。 以上。
Fc3

0 キーは、フローティングのアニメーションエディタを開くショートカットです(Fカーブエディタはアニメーションエディタの中の1つのモードですね)。 テンキーの方じゃないですよ。フルキーの 0 です。

このフローティングのエディタの中では、ちゃんと選択ツールに戻れるんですよね。 なぜかは知りません。 Space 押したり Y キー押したりしてみます。ちゃんと選択ツールに戻れることがわかります。

そのままフローティングのエディタは閉じちゃって、元のドックされたエディタに戻ります。 すると、Space キーとかでちゃんと戻れるようになっているのです。



ということで、この現象が起きたら フローティングのエディタを出して何か操作をし、閉じて、元のエディタに戻る。 をやればよいらしいとわかりました。 今のところ100%これで行けてます。



正確には、0 を押すことが重要なのではなく、フローティングのエディタを出現させることが重要なのだと思います。たぶん。

あれ? フローティングのエディタ上で、なにかしらの操作は要るのかな? もしかして、エディタを出して何も操作せずすぐ閉じてもいいのかな? ちょっとわかりません。 この現象は、しょっちゅう出るくせに、意図的に再現しようとするとできないんですよねー。 いったい何をきっかけにこの 「戻れない状態」 に突入するのか、いまだにその法則性がわからないです。 右クリックが関係してそうな気もしているんだけど、定かではありません。

あと、最初からフローティングのエディタでやっていた場合も、どうなるかわかりません。 もうひとつフローティングのエディタを出せばいいのかな?  そもそもフローティングのエディタでもこの現象は起こるのかな? 俺、普段はドックされたエディタでしか作業しないので、わかりません。




どうですか。やってみてもらえますか。なんか気づくことがあれば、どうか教えてくださいませ。どなたでも。







あ、明けましておめでとうございました。






.

| | コメント (2) | トラックバック (0)

« 2013年12月 | トップページ | 2014年3月 »