輝けシリンダ



アナウンサー「スタジオには知欠ジョーさんにお越し頂いています」
知欠ジョー「よろしくお願いします」
アナ「シリンダではかなり苦労されたようですね」
ジョ「もう大変でした。位置の合わせ込みにすごく時間がかかるし、
オカマジョーは夜な夜な出かけて金遣い荒いし、
テレビのリモコンはどっか行くし、
ネコはこたつで丸くなるし」

アナ「その難関に、どのように挑まれたんですか?」
ジョ「つまりはブームの動きにシリンダが連動する必要があるわけです。
結局AC1600では実現できなかったのですが、
連動を自動化できないかと日々模索しました」

アナ「こうして自動化の試みが始まりました。
しかしそれは大きな試練の連続でした」

知欠ジョーが使うCGソフトには「スクリプト」という仕組みがあった。
すてきな短いプログラムを組み込んで機能をアップさせる仕組みだ。
車で言うとパーツ追加で馬力アップだ。
当時すでに色々なスクリプトが web上に公開されていた。
だが、知欠ジョーが求めている機能を持つ物はなかった。
そこで知欠ジョーは無謀にもスクリプトの自作に挑戦した。

原理としてはこうだ。

左図の赤い点のように回転軸,原点,目標点の3つのポイントを仕込む。そして3つのポイントが作る角度"θ"を計算させる。ブームを動かすたびに計算した値を軸の回転値にぶち込んでやればシリンダが自動的に連動するようになるのだ。

AC1600のCGを最後まで公開し終えた2001年9月、
壮大なプロジェクトが本格的に始まった。

知欠ジョーはまずweb上で情報収集を行った。
そして、角度"θ"を計算するには
「3次元ベクトル」と「内積(ないせき)」というものが必要とわかった。

知欠ジョーはそれらの謎を解くためハカセジョーのもとを訪ねた。
ジョ「はかせ、3次元ベクトルとはなんでしょうか?」
ハカセジョー「もちろん知っとるぞい。んーと、あ、あれぢゃ、
4次元ポケットの安いやつぢゃ」

ジョ「……じゃ内積は?」
ハカセ「な、ないせき? えーと、えーと、『ナイスキック!』」
ジョ「え。今なんと?」
ハカセ「い、いや別に(ポッ)」
やっぱりハカセジョーは何の役にも立たなかった。

しかたなく知欠ジョーは自力で調査を続け、
スクリプトの作成を開始した。
長い、苦闘の日々だった。

アナ「スタジオです。大変でしたね」
ジョ「ハカセジョーなんぞに頼ろうとした私がバカでした」

アナ「結局二つの言葉は何を表すんですか?」
ジョ「えーと、簡単に言うと...
3次元ベクトルは空間内の2つの点の結ぶ線の長さと向き、
内積はあるベクトルが他のベクトルに落とす影の長さです(カンペ棒読み)」

アナ「ちょっと脳みそがプルプルしてきました」
ジョ「私もです」
アナ「これをスクリプトでは数式にする必要があるんですね?」
ジョ「そうです。数式の一部をお見せしましょう」

 #3次元ベクトルの長さ計算
set fLB [ expr sqrt(pow($fXA - $fXB , 2) + pow($fYA - $fYB , 2) + pow($fZA - $fZB , 2 )) ]

 #単位ベクトル(長さが1のベクトル)算出
set fVec [ list [ expr ( $fXA - $fXB ) / $fLB ] [ expr ( $fYA - $fYB ) / $fLB ] [ expr ( $fZA - $fZB ) / $fLB ] ]

 #内積計算
set fNai [ expr $fVecAx*$fVecBx + $fVecAy*$fVecBy + $fVecAz*$fVecBz ]

 #θ算出
set fTheta [ expr acos ( $fNai ) ]

ジョ「ど、どうでしょうか? 皆さん脳汁が出たかもしれません
私は日々腹筋を鍛えているので、チョビッとしか出ませんでした ゼイゼイ」

アナ「.....(気絶中)」
ジョ「だ、大丈夫ですか?ウゥッ...(自分も気絶)」

こんな調子だったが、1ヶ月かかってなんとかスクリプトは出来上がった。
気絶しながらも出来上がったのは、
なんらかの弱酸性パワーが働いたか、
夜中に妖精さんが代わりにやってくれたかのどっちかだった。

2001年10月。スクリプトの動作テストの日が来た。

テストには左図のサンプルが用意された。サンプルには3本のシリンダが付けられていた。

知欠ジョーはまずブーム,アーム,バケットのパーツを動かした。

ここではパート1と同様にシリンダはパーツの動きに付いて来ない。ここでスクリプトを実行すればシリンダが自動で動いてくれるハズだ。期待と不安が高まって、実行ボタンを押す指に緊張がこもった。
「ポチッ!」

動いた!

3本のシリンダがきれいに整列した。1ヶ月の苦労が報われた瞬間だった。知欠ジョーの顔にようやく笑顔が浮かんだ。

これでシリンダ微調整の地獄から解放される。
知欠ジョーはホッとした。
今夜はお祝いにカツ丼だ。
そう思っていた矢先、衝撃の出来事が起こった。

なんと土台を傾けると、シリンダの動きがバラバラになってしまった。

スクリプトのミスだった。これでは「傾斜地の建機」に対応できない。何と言う事だ。カツ丼はおあずけだ。知欠ジョーの必死の対策が始まった。

そして1週間後。

知欠ジョーはようやくミスを修正し、斜めの状態でもシリンダが正しく動くようになった。よかった、これでカツ丼が食える。知欠ジョーの心はその事でいっぱいだった。

2001年10月、
こうして出来上がったスクリプトの最初のバージョンが
T282のシリンダに組み込まれた。

そして同年12月、
さらに使い勝手などを向上させたバージョンが
MSG-50のワイヤーに実装された。

こうして知欠ジョーの挑戦は実を結んだ。
ふて寝、気絶、カツ丼おあずけ。
数々の試練を乗り越えた、
長い挑戦だった。

今後も知欠ジョーのCGは発展を続けて行くだろう。

♪にゃ〜にゃにゃ〜 にゃ〜にゃにゃ〜
#↑あのエンディング曲


ちなみにこのスクリプトの名前は何がいいかなと友人に尋ねたところ、
「山本シリンダってのはどう?」という返事が返ってきました。
こんな友人と今後どのようにつき合っていけばいいのでしょうか?
シリンダ困っちゃう。