« コスプレの夕べ。 | トップページ | 第1回 XSI男後援会 狂乱の宴 2008 年忘れスペシャル »

2008年12月24日 (水)

スクリプティングのビデオ再び。

先日書いた変なメールの件ですが、その後、当人からとてもご丁寧なメールが届きましてね、もちろん内容をここで書くようなことはしませんが、ともかく、気分を良くした俺は調子に乗ってまた似たようなビデオを作ってみたのです。まあ、酔った勢いですが。


Object Model Constrain Sctipt - Ultra Basic Scripting in XSI vol.2 from junki the junkie on Vimeo.

ううむ、ヨコ1280ピクセルのビデオをアップロードしたのに、またもや Vimeo 上で HD 再生してくれません。 無料ユーザだと HD 解像度のビデオは週に1本までしかアップロードできないということはわかりましたが、毎週土曜日にその設定がリセットされるそうなんですよね。さっきアップロードした時点で土曜日はとっくに過ぎているからリセットされてまた HD がアップロードできるようになっていると思ったんですが、なぜかそうなりません。なんだよ Vimeo ゴルァ。

ってことでやはり前回と同じく、Vimeo 上で再生すると文字がつぶれて読めないのでスクリプトのチュートリアルとしては役立たずになってしまいます。ページ右下のダウンロードリンクからオリジナルのビデオファイルをダウンロードすれば高解像度で見れるので問題ないですが、Vimeo にユーザ登録してないとダウンロードできません。ってことで、もし見ようと思ったら、まずは Vimeo に登録してください。


内容、というかスクリプトの目的・結果は前回と全く同じものですが、今回はオブジェクトモデルを使ったアプローチでやっています。オブジェクトモデルとコマンドモデルの違いを詳しく解説したりはしてないですけど、まあともかく、前回と同じ目的のスクリプトを違うアプローチで書くというのは、スクリプティングへの理解を深める意味で役に立つのではないかと思ったわけです。嘘です。酔っていただけです。

xxx.FindChildren
xxx.FindChild
xxx.Kinematics.AddConstraint

などのオブジェクトモデルのメソッドが登場します。


ああ、一応言い訳を書いておかねばなりませんが、俺はプログラム畑の人間ではありません。ツールではなく絵を作る職種の人間ですので、シロートが SDK マニュアルと格闘しながら、色んなところに質問しながら、意味わかってないくせにあちこちのサンプルを安易にコピペしながら、自分がラクをするためになんとかスクリプトを書いてきたというのが実情です。よって、技術的に厳密な意味では、色々間違っていることを言っている可能性もあると思います。ええ、大いにありますね。 なのでそこは差し引いて頂きたいですし、間違いや勘違いがあれば、なにとぞ、どうか、遠慮なく指摘して頂きたいと思っております。なんだか低姿勢ですね。ほんとはそんな人間ではありません。実はビール飲ませろゴルァな人間ですが、まあそんなことはどうでもよろしい。ともかく大事なのは、スクリプトを書くことです。役に立つんです。本当です。


酔った勢いでその意義を書いてみる。

結論から言うと、スクリプトを書く目的は、必ずしも時間の節約のためではありません。モチベーション疲弊の節約のためです。

どーゆーことかと言いますとですね。

例えばかったるい繰り返し作業があります。人間キャラにボーンを大量に仕込んで、エンベロープして、上手くデフォーメーションするか試して、ウェイトの調整だけではどうにもならない、そもそもボーンの数や初期位置や角度がまずいということがわかり、エンベロープ外して、ボーンを調整し直して、またエンベロープし、同じテストを繰り返し・・・・ とか、ありますよね。まさに最近そんな作業を繰り返しているんですが。

仮に、30回この過程を繰り返すと、ボーンの仕込みが完成するとします。純粋なボーンの調整の部分は人間様の手によるしかないので時間を節約しようにありません。 節約できるのは、例えばマウスで Apply > Envelope を選んだり、デフォーマーをピックしたり、テストに都合がいいように余計なオブジェクトをハイドしたり、またはダメだった場合にハイドを解除してエンベロープを外し元の状態に戻すとか、そういう「操作」の部分です。この操作部分だけを抜き出せば、1回につきせいぜい10秒くらいです。 ってことは、30回やると、10秒 x 30回 = 300秒 = 5分の「操作時間」が必要だということです。

この「操作」の部分を、1クリックでやってくれるスクリプトを書いたとします。すると、その操作はせいぜい1秒くらいになります。 10秒が1秒になるということは10倍スピードアップするということですが、トータルで見ると、5分の操作が10倍速くなって 0.5分つまり30秒になるというだけです。 その後も長く汎用的に使えるスクリプトならともかく、今やっている仕事の、今やっている部分だけに焦点を当てたスクリプトだとすると、たったこれだけしか時間が節約できてません。

それどころか。

そのスクリプトを書くための時間も無視できません。1分で書けるようなものもありますが、1時間くらいかけてスクリプトを書くこともザラです。もっともっとかかる時もあります。5分の操作を30秒に縮めるためのスクリプト書くのに1時間かけていたら、時間の節約どころか、時間の浪費です。スクリプトなんか書かずに手でやってしまった方が早いということです。

じゃあなんでスクリプト書くの。

その理由はモチベーションの疲弊を節約するためなのです。
つまりだ、物理的に節約できる時間は大したことない、それどころか余計に時間がかかっている、でも、俺は1クリックじゃないとやる気にならねえんだよゴルァ ってことです。
あなた、上記のようなエンベロープの操作を1回するごとに、どれだけのモチベーションを消費しますか。俺は 1200kcal くらい消費します。正しいオブジェクトを選び、Animate モジュールに行き、Apply Envelope を選び、コンストラクションモードをアニメーションモードにするかどうかのダイアログに OK をクリックし、あらかじめ Group にしておいたデフォーマー Group を探し、クリックし、エンベロープのスムースを1回くらいかまし、さすがに顔の頂点だけはぐにゃぐにゃ動くと全体のデフォーメーション具合を見るときに邪魔で気になってしまうのでとりあえず Head ボーンに100%ウェイト付けし、あらかじめ仕込んでおいたテスト用アニメーションでデフォーメーション具合を見るためにタイムラインをスクラブし、ボーンが多すぎてうざったいのでひとまずハイドし・・・・。 ボーンの調整を1回やるごとに、純粋にその結果を見てみるためだけに、これだけの「操作」が必要になります。数回も繰り返すと手は慣れてきてスラスラとできます。たった10秒か15秒しかかかりません。 でも、7回目8回目くらいに、俺はやってられっかよゴルァ とモニタを破壊します。ミスで違う Group をピックしてしまってアンドゥしたりした日には、マシンを3Fの窓から遠投します。クリックするその瞬間に誰かに声をかけられて意識がそがれたときには、そいつに電気アンマをくれてやった上でやはり3Fの窓から遠投し着弾を確認する前に家に帰ってビールを開けます。

もしこれが1クリックだったら、30回の調整に耐えられます。もし30回目に上手く行ってなかったとき、31回目の挑戦をするかどうかで作品のデキはもちろん大きく変わるわけですが、1回につきたかだか10秒の一連の動作ですが、30回繰り返した後にもう一度これをやることを思い描いたとき、俺は「ま、これでもいいか」とあきらめるのです。そんなに弱い人間なのです。ダメ男です。 しかし、もしこれが1クリックで済むなら、「ううー ビール飲みに行きたいけど、31回目行きましょうー」 となるわけです。時間の問題ではなく、メンタリティの問題です。 

ということなんです。31回目にやる気になるために、1時間でも2時間でもかけてスクリプトを書くんです。時間の節約なんかよりも、この意義の方がはるかに大きい。 1クリックでできなかったら、30回やるうちに俺のモチベーションは疲弊しきってしまい、ヘタするとバレバレな不具合が残っていても 「ま、いいか そんなに目立たないでしょ」 などと言い始めます。それほどダメな男なんです。バレバレな不具合を修正するなんてごく当たり前の話なんですが、疲弊しきったダメ男には、その当たり前レベルすらできなくなってしまうんです。


スクリプトとは、美しいものではありません。
ダメ男が、人並みに近づくために使うものなのです。
馬鹿につける薬と言ってもいいかも知れません。
貴方がものすごく意思が強く、バレバレ不具合を放置しないという当たり前レベルを30回目以降も続けられるなら、スクリプトなど必要ありません。手でやりましょう。
俺は30回どころか7~8回でそうなってしまうので、
スクリプトといういわば「ドーピング」に頼ってやっていきます。



わあ、長い文章になっちゃったな。
全部嘘です。酔った勢いだけです。
けけけけけけけ。



.

|

« コスプレの夕べ。 | トップページ | 第1回 XSI男後援会 狂乱の宴 2008 年忘れスペシャル »

コメント

junkiさんGood Job!!
ここに公開されているものは、ご自身のためだけのものではありません。
今日も当社の仕事に大いにに役立っております。
感謝。

投稿: aki | 2008年12月25日 (木) 21時04分

aki さま、そうですか、会社の役に立っているんですか。
では junki にビール1年分送ってあげてと御社の社長にねだって下さい。けけけけけけ。

実際、ここに何か書いたりビデオを作ったりするのは、自分の頭を整理するのにとても役立ちます。あまりにもテキトーなことは言えないという緊張感もあり、ものごとをちゃんと調べようとするモチベーションにもなります。副産物として、誰かの役に立つこともあるらしい。ビールをもらえることすらある(過去1回だけですが)。 ブログもしくはインターネットって、自分の役にも立ち、時には予測不可能な面白い展開を見せることもある。このスクリプティングのビデオも、そもそもどこぞの誰かからポカーンなメールが来なかったら作らなかったわけで、こりゃなかなか刺激的な場所だと思ってます。だから何か書こうという気になるんでしょうね。

嘘です。全ては酔っ払った勢いです。けけけけけけけ。

投稿: junki | 2008年12月26日 (金) 04時42分

junki様、はじめまして。
ゲーム畑で仕事をしているモチオという者です。m(_ _)m

いつもは毎日コソコソと今日はなにか更新されないかな~、と拝見させていただいているのですが、
今回の内容に非常に共感する部分があったので思わず書き込んでしまいました。(;´Д`A ```
(といいつつ読んでから3日経ってますが。細かいことは気にしないでください…)
それは「スクリプトはモチベーションの疲弊を節約するためのもの」という部分です。
そう!そうなのです!!
プログラマーでない人間がスクリプト勉強するなんて、その1点のみなんですよねー。
逆にスクリプト打たない人には「なぜなの!?」とすら思ってしまいます。(いや、まぁ個人の自由ですが。)

今回の動画も非常に楽しく拝見させていただきました。
内容的には理解しているものではあったのですが、より理解を深められた部分もあり大変感謝しています。

ちなみに、このブログを最初に訪れたときはプラグインとかすげーー!という感じだったのですが、
今では自分もプラグインなども作れるようになり、
これもそれもあれもどれもjunkiさんの(スクリプトを勝手に盗み見たりコソコソブログ内を徘徊してた)お陰です。たぶん。
勝手にお世話になってます。ψ(`∇´)ψケケケケケ

ビールウェアは使用してませんが、いつかビールおごらせてください。
いや、本気で。

それでは=。(_´Д`)ノ~~サヨーナラー

投稿: モチオ | 2008年12月28日 (日) 01時26分

モチオさま、そんな、もったいないお言葉でございます。いつも、単なる酔った勢いなのです。恐縮してしまいます。ビールおごって下さい。けけけけけけ。

おれもスクリプトは専門じゃないんで、わかったようなわかってないようなという感じのままダラダラ続けています。どこかで体系的に勉強しなければという気分だけはあるんですが、まあ今のところやりたいことはできてるからいいかーとサボり続けています。スクリプティングやプログラミングの本なども1冊も持っていません。

XSI のスクリプティングで必要と思いつつまだ踏み込めてない領域は、コンポーネントまわりと、オペレータですね。やらねえとなあ。。。。。
あと、特に初期の頃のプラグインは、深く理解してないがゆえに非常に汚い、あるいは思い込み・勘違いがコードに現れているものになってます。刷新したいんだが、なかなか数が多くて腰が上がりません。。。。

モチオさまのプラグインも、是非 WEB 上で発表して下さい。自分専用のものだったとしても必ず誰かには役立つでしょうし、スクリプティングを勉強したい人の役にも立つはずです。また、WEB上に出そうと思うと少しはちゃんとした方がいいであろうなどという色気も出てきて、さらにコードをブラッシュアップして自分の理解が深まるなどの利点もあります。是非。

ビールは麒麟が好きです。けけけけけ。

投稿: junki | 2008年12月28日 (日) 22時17分

飲み会いいなぁー。( ´Д`)ゝ
すげーー楽しそうです。
いつかかならず参加しますーー。その時は麒麟の箱を持参しますよ(迷惑

ということでまたお邪魔しております、モチオです。

junkiさまくらい理解してれば本なんていらないんじゃないですかねー。
といっても確かにプログラミングをきちんと理解していると違うようです。
会社でもプログラマーがXSIをいじり始めたらあっという間に理解してましたし…。orz

コンポーネントと、オペレータ…自分にはまだまだ早いようです…まず言葉の理解からはじめなくては…。(;´Д`A ```
junkiさまの後を追います。
なので勉強したら是非ともブログに…(冗談ですorz

たしかに、WEB上にプラグインを公開するっていうのは自分を成長させる意味でも有効ですね。
いまのヘボプラグインを公開すると考えただけでも…ブルブル(lll゚Д゚)
その前に本気で使えるもの一つもないような…。
でもjunkiさまの言葉で、ブログでも始めてみようかなー。なんて思ってます。
はい。単純です。
その時は是非リンクはらせてくださいませ。

ということで、長文失礼しました。
それでは。(_´Д`)ノ~~サヨーナラー

投稿: モチオ | 2008年12月29日 (月) 19時01分

モチオさま、飲み会で待ってます。

コンポーネントってのは、そのまんま、XSIのコンポーネントのことです。Point とか Edge とか Polygon とか Sample point とか、オブジェクトを構成する要素のことですね。それをスクリプトからいじるやり方を、いまいち理解してません。

オペレータは、Explorer で言うところの、歯車のアイコンですね。Curve Deform とかそういうのは歯車のアイコンじゃないですか。毎フレーム再計算される類のものです。その場限りのものではなく、シーンの中でライブに生きていて、そのときの状態によってアップデートされるものです

まあとにかく、麒麟です。けけけけけけけけけけ。
ブログ期待してます。こういうものは、ともかく勢いです。

投稿: junki | 2008年12月30日 (火) 02時10分

どうも。
三度失礼いたします。モチオです。
何度もすいません。 m(_ _)m

コンポーネントとはそれらのことなのですね。
基本なのですね…申し訳ありません (T△T)
オペレータはそういうもののことを言うのですね。
職業柄でしょうか…XSIの森の中で出会ったことがない気がします。(いや、ただの勉強不足
2つとも解説有難うございました。大変勉強になりました。
それとお手を煩わせて申し訳ありません。_| ̄|○

ところで、ブログ作ってみました。(http://mo-chi-mo-chi.blogspot.com/)
勢いで。
ただただ勢いで。
後先考えておりません。(A;´・ω・)アセアセ
Junki The Junkie's Junkyardさまにもリンクを張らせていただきました。
えぇもちろん勢いで。

勝手にリンクはってんじゃねーよ(#゚Д゚)ゴラァと かございましたら言ってくださいませ。
これからもこちらの方に顔を出させていただくことがあるかもしれません。
その時は是非相手にしてやってくださいませ。

それでは。(_´Д`)ノ~~サヨーナラー

投稿: モチオ | 2008年12月30日 (火) 03時19分

モチオさま、3度と言わず、コメントはどうか遠慮なく何度でも書き込んで下さい。やりとりがあった方が楽しいので。「それ違うんぢゃねーの」「よくわかんねーよ」という突っ込みもいつも待っているんですがね。

別にコンポーネントやオペレータというコトバを知っていなくても映像作りはできますんで、大した問題じゃありません。酒の味は変わりません。
基本的には、M キーを押すと動かせるもの、がコンポーネントですね(他もあるけど)。オペレータは、例えばエンベロープオペレータってのもオペレータですわね。Explorer で エンベロープのところを開くと、歯車のアイコンが出てきます。ボーン(デフォーマ)の動きに合わせてライブでアップデートされるわけですね。ICE も同じくオペレータですね。


ブログ、ブックマークしました。拝見させて頂きます。

投稿: junki | 2008年12月30日 (火) 10時35分

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: スクリプティングのビデオ再び。:

« コスプレの夕べ。 | トップページ | 第1回 XSI男後援会 狂乱の宴 2008 年忘れスペシャル »