【12】回転は迷宮への路  HPB回転を理解する(完結)

画像はクリックすると拡大されます。戻る   デジタル降魔録へ   次へ


ようやく C4d Lは XYZ軸回転をしていない、と解ったところでなにも進展していないことに気づいた頭の回転の鈍さ。オブジェクトを回転させる前に自分の頭を回転させろよ、と言われてきょろきょろする時間はもったいない。すぐに次の一手を打ちます。といっても、頼れるのはネットの情報と 古代の C4D(R9)の取説のみ。

 ネットで解ったのは、

 緑 Hはヘディング=垂直軸回転
 赤 Pはピッチ=水平軸回転
 青 Bはバンク=奥行軸回転

 ほかにもいろいろ出てきましたが、どれも霧の中を目をつむって歩くような、いい表現に変えると『アカデミック』。C4D L歴 数か月のペーペーには近寄りがたくて理解できませんでした。
 中にははっきりと Hは Y軸回転、PはX軸、Bは Z回転と書かれているサイトさんもあります。

「いやいや。それは違うやろ。でなければこんなに苦労はせんよ」

 他には『その座標の中心を軸にしてHは水平の回転をして、Bは垂直の回転をする』と書かれているサイトさんも。
 ここがワタシの考えと最も近いことを書かれていました。しかしこの理屈だと Hも Bも同じ方向に回転する状況の説明ができないのです。だから頭から煙を吐いたわけでして……。

 結局、唯一共通して解ったことは、H、P、Bの呼び方だけでした。


 HPBが何の略は解りましたが、現実は何も変わりません。Hを垂直軸回転、Pを水平軸回転と扱ってみても、B回転で垂直軸回転を始めてしまう理由は?
「だいたい何にたいして水平なの? オブジェクトを傾けてしまったら水平軸も垂直軸もそのつど替わるし……」

 何をやっても疑問だらけ、まるでこっちをあざ笑うかのような挙動にいら立ちを覚えました。

 今度こそ解明してやると意気込んでも、基本となるルールが解らないうちは思考が混乱するだけ、疑問符満載のまま終了。いつまでたっても、ぶち当たっているおかしな挙動に対する答えは見つけられません。

 最後のよりどころ。R9の取説を探すことに。


 案の定、色々と書かれていましたが、気になる文面を見つけました。

HPB 座標系にしたがってオブジェクトを回転させるには、抽象的な思考が必要で、熟練したアニメータでなければ扱えません。

現在遭遇している挙動らしきことが書かれていて、最後にこのように締めくくられていました。つまり熟練したアニメーター以外は手を出すな、的な意味合いが含まれているような、いないような。


 取説では、文章だけですべての説明がなされていて、空間認知力がそうとう高くないとイメージしずらいです。
 そこで、書かれていたことを 3Dの映像にしたら、いくぶんでも理解の足しになるだろうという思いで、取説に描かれていた絵をもとに HPB回転を探ることに。

 HPB回転とはこんな感じだと書かれていました。


 画質が落ちますがユーチューブでもご覧いただけます。https://youtu.be/0DnEJQn3qDU


「ほらみろ、Y、X、Zの順に回転してんじゃん!」
 指を差して叫びたい気分でした。

ところが取説はまだ続きます。

HPBが回転するのは、オブジェクトの軸の周りでもなく、ワールドの軸の周りでもありません。そのバンクが、オブジェクト軸を中心とした回転と同一になるのは全くの偶然です。


「そう見えるのは誤解だと?」

 そうなんです。たまたまイラストの 3D軸がワールド座標と一致しているだけで、それは偶然に過ぎない、と。

 なぜそう断言できるのか。
 そうなら、いったい何を基準に回しているのか。

 続きの説明があります。

X 軸、Y 軸、Z 軸という3 個のオブジェクト軸のみでは"回転角度を扱えない"理由は、数学に関係しています。数学的に見た場合、オブジェクト軸を中心した回転は、非可換群です。


 可換とは掛け算や足し算のように逆に計算しても答えは変わらないものをそう呼ぶようです。ようは『3×2』も『2×3』も答えは『6』です。でもX、Y、Zの軸回転から位置を求める計算はそうではないと。計算順序を変えると答えが変わってしまうと、説明があり、続けて HPBだとそうならないと綴られていました。

 そこは文章だけでその違いを説明してあって、一度読んだだけでは理解できないので、ここも再現してみます。



 画質が落ちますがユーチューブでもご覧いただけます。https://youtu.be/oSbUuG9G_S8

たぶんこういう意味だと思うのですが……。
 最初に Y軸回転で90°、次に X軸で 30°した物体と、最初に X軸で30°、続いて Y軸で90°回転した物体。どちらもやっていることは同じですが、最終位置が異なるということです。まあそれはそうですが……。

「それなら HPB回転ははどうなんですか?」と尋ねたいですよね。
 だいたい、HBPは何を基準に回してるんでしょうか。

 取説ではこう書いてありました。

 Z 軸回転 ( バンク角度 ) がオブジェクトシステムで行われる一方で、Y 軸と X 軸を中心にした回転(ヘディングとピッチ)は常にワールドシステムで行われることに、多くの方は戸惑います。


「ひぃ~。もはや何を書いているのか分からない」

 なんだか振出しに戻ったみたいな気分です。
 それでも最後の一文がヒントになりました。

『ヘディングとピッチはワールドシステムで行われる』

 まるで古文書を解読するみたいですが、ワールドシステムとはたぶんワールド座標のことだと思われます。C4Dにはワールド座標とオブジェクト座標があり、オブジェクト座標はそれぞれのオブジェクトが持っている座標軸で、ワールド座標はさらに上位であって不変の座標軸。現実の世界でいうところの宇宙です。そこに点在する恒星や惑星はそれぞれに軌道を持ち、おのおの傾きなどもあります。それを包含するのが宇宙です。

 ここでピンときました。オブジェクトマネージャの最上位層にあるオブジェクトには親はないのです。そこが階層構造の最も上だからです。つまり最も上位に位置するオブジェクトはワールド座標を、子のオブジェクトの場合はその親の座標を基準にして、ヘディング(H)とピッチ(P)は回転するという意味ではないでしょうか。

 この二つを解くことができたら、バンク(B)が解けるのも時間の問題です。

 もう一度、さっきの十字型のオブジェクトを回してみます。果たして取説のとおりに回っているのでしょうか。

 画質が落ちますがユーチューブでもご覧いただけます。https://youtu.be/yqnZXG6UE4I

取説が示すワールド座標は画面左下に出したものです。垂直方向が Y軸、水平方向が Z軸になっています。また、X軸がこちらを向いているということは、この映像は中心を正面から見ずに、右方向から見ていることも解ります。


 回してみて納得です。確かに Hはワールド座標の Y軸を基準に、Pはワールドの Z軸を中心に回転しています。しかし Bに至ってはもはや意味不明です。なぜ Hと同じ方向へ回転するのでしょう。

 せっかく明るい兆しが見えてきたのに、もう壁にぶち当たってしまいました。ほんと泣きだしたい気分です。



 再び迷宮の中をさ迷いました。何か手掛かりになるものはないかと。
 今度は今作った親の角度をすべて『0』に戻して、中に鎮座する子の Hだけを 10°ずつ増やしながら Pを変化させてみました。この Pが基準にしているものを見つければ迷路から脱出できるような気がするのです。

 とにかく万作尽きるまでやり続けるしかないのです。



 それは本当に偶然でした。
 先ほどとは逆に、Pの数値を一定時間かけてグルグル回しながら、Hの数値と Bの数値を順番に変化させて観察していた時でした。

 画質が落ちますがユーチューブでもご覧いただけます。https://youtu.be/Bi6FJX4SAl8

映像では、回転させるオブジェクトの軸が解りやすいように、 ガラス製の細い管に
しました。
 それから針金みたいなのが、初期角度 H=P=B=0°のオブジェクトと親の軸です。なので最初は同じです。
 それとここが重要です。初期時は Y軸回転も H回転も区別はありません。Xも Pも、Zも Bもすべて重なっています。

 さて映像の説明に入ります。
 最初はP回転させながら Hを変化させていくと、ゆっくりと Y(H)軸を中心にオブジェクトが反時計回りに移動していきます。H回転は親のY軸を中心にまわりますのでこれは問題ありません。
 次です。

 Bを変化させた途端。X軸が大きくうねりだし、回転のセンターと X軸がどんどんと離れて行くのが見て取れます。

 この時、頭の中で一閃が薙いだのです。

「オブジェクトは B回転で傾いていくが、X軸は動いていない!」
 オブジェクトの傾きと軸が別に動くということでしょうか?
 これまではオブジェクトが傾けばそれに同期して軸もすべて動く、と考えていました。そうではないと…………。

「どゆこと!? こりゃあ、取説もネットも信用ならんゾ!」
 これだと、あるときは X軸回転、あるときは Z軸回転。神出鬼没の謎回転。
 これが回転魔界の正体かもしれません。軸が想定外の動きをする瞬間を見つけたのです。

「そんなアホな……」

 やっと取っ掛かりを見つけたのですが、この時すでに 2週間が経過していました。


 ではなぜオブジェクトが傾いていくのに、軸が動かなくなるのか。

 新たな実験方法に変更です。
 観察の方法は簡単ですが、手順がややこしいので箇条書きにします。

(1)初期角度 H=P=B=0°から、Hを60°に傾けて、Pと B軸を順に 1回転(360°)させてみます。
(2)初期角度から、Pを60°に傾けて、Hと B軸を順に 1回転。
(3)初期角度から、Bを60°に傾けて、Hと P軸を順に 1回転。

 まずは(1)から。

 画質が落ちますがユーチューブでもご覧いただけます。https://youtu.be/PtIAAn4N914

初めは X(H)軸を60°回します。初期角度では X軸と P軸が重なっているので区別はありません、X=Pです。
 回転させると、連動してオブジェクトが真上から見て反時計回りに移動しますが、ここで軸も動いたかどうかは回転させてみないと解りませんので、まずは P回転させます。
 すると、オブジェクトの赤いガラス管を中心に回転しましたので、X軸もここに移動したことになります。

 続いて、B回転させます。
 ここも同じように青いガラス管を中心に回転しましたので、Z軸も移動したのです。
 H回転では、P(X)軸も B(Z)軸も連動して移動するとなりました。


 では次、(2)Pを60°に傾けて、Hと Bを回転です。

 画質が落ちますがユーチューブでもご覧いただけます。https://youtu.be/jKkdrmLyQ70

今度はPを60°に傾けます。連動してオブジェクトのYと Z軸が動きます。この段階では PはX軸のことですので、X軸は動きません。
 最初は H回転ですので、10時から 4時の方向に延びた緑色のガラス管のセンターを中心に回転するかと思いきや。もとの Y軸を中心に回転しました。これはY(H)軸は P回転では動かなかったことを意味します。
 続いて Bを1回転させると、オブジェクトの青いガラス管の中心で回転しましたので Z軸は移動しています。
 続々と新事実が浮き彫りになっていきます。

 最後に(3)Bを60°に傾けて、Hと Pを回転させます。

 画質が落ちますがユーチューブでもご覧いただけます。https://youtu.be/zTF6l8AUUn4

Bを60°に傾けると、連動して、オブジェクトが正面から見て時計回りに移動します。Z軸は静止たままです。
 H回転させると緑のガラス管を中心に回らず、もとの Y(H)軸を中心にまわり、P回転させると、これまた赤いガラス管の中心を回らず、X(P)軸を中心に回りました。

 これらのことをまとめると、こんなことが解りました。
・H軸は親のY軸を基準にしていて、Pも B軸も動く。
・P軸を動かすと B軸は動くが、H軸は動いていない。
・B軸を動かしても Hと P軸は動いていない。

 やはり知らされていない何かがあります。あるいは取説が古すぎて、どこかで仕様が変わったのかもしれないです。
 しかし知らないままでは、キャラクターアニメーションをするにあたって、どう対処したらいいのか解らず、また赤ネジくんのように動かせなくなって四苦八苦することになります。


 当然ですが、取説には出てきませんのでネット検索しかありません。今度は『オイラー角、回転できない』で検索しました。

 オイラー角はもろ数学でした。頭が痛いです。それでもめげずに検索を続けていると『ジンバルロック現象』というのがでてきました。

 簡単に説明しますと、オイラー角を利用した回転処理には『ジンバルロック』と呼ばれる、回転不能な状態に陥る現象が起きるそうです。
 それはまさに今回の赤ネジくん現象と一致します。さらに調べると、連鎖的に疑問が解けていきました。

 C4D の回転エンジンは仮想の軸(回転ツールの回転バンド)で回転をサポートしますが、ジンバルロックが起きて回せない方向がある場合、使える 2軸を小刻みに調整して回転させようとする、まさにそれが異常回転だったのです。

 ジンバルロックという言葉を最初から知っていたら、こんなにいろんな実験をしなくてもすんだのでしょうが、これはこれでいい勉強になりました。


 ジンバルロックは回避不能な現象なので、その状態にならないように軸を把握してアニメーションするのが近道だと、海外で活躍するアニメータの方が申しておりました。

「あー。あなたサマのような方とお知り合いならば……。こんなに悩まなくてもよかったのに……」
 悔やんでいても道は拓けません。前へ進みましょう。時間は掛かりましたが自力で『ジンバルロック現象』にたどり着いたのは良しとします。

 おかげで、ジンバルロックに近づいているかどうかを見極めることができる回転ツールオプションが、C4D Lにもあることを発見しました。

 回転ツールをオンにして【属性マネージャ】の【モード】を【ツール】にして【オブジェクト軸】のボタンを押してください。次の写真のようになります。


ここにはっきりと【ジンバル回転】と書かれています。そこにチェックを入れると、見慣れていた回転バンドが替わって。



こんな感じです。お解りでしょうか。左は赤、緑、青のバンドが 90°ずつに分れています。ですが、右のオブジェクトは、青の帯と緑の帯が重なって一本になっています。つまり Y軸と Z軸が一緒になっているため、ふつうは 3軸で回転させるものが 2軸になってしまい、回転できない方向ができたのです。これがジンバルロック現象です。赤ネジくんがドラム缶転がしができなくなったのはこのためでした。

 次の写真はジンバルロック状態の十字型オブジェクトを 少し後ろに倒した絵です。緑と青の軸がわずかにずれて、かろうじてロックが解けた状態です。


この状態で各軸をそれぞれ回してみるとはっきりします。H軸回転の中に P軸が、P軸の中に B軸がある構造をしており、H軸回転させると PとBが一緒に動きP軸回転させると Hは動かず B軸が動く。そして B軸は最も内側の回転軸なので、それ自身しか回らない。すなわち、最後の実験の結果どおりでした。

「ああぁ。こんな便利なものがあったとは……」
HPB回転は、ジンバル構造になった H、P、B軸を中心に回転していたのですね。

 PCの中ではオブジェクトがジンバルロック状態。こっちは脱力状態でした。


 ――そして結論と教訓。

【1】 キャラクターアニメーションをするなら、動かすキャラオブジェクトをオブジェクトマネージャの最上位に置かずに、ヌルの親を最低二重構造にしてからキャラ自身のオブジェクトを入れておくのが賢明(理由は欄外)。

最も上位階層のヌルでキャラオブジェクトの移動のみを行います。次の下層に置いたヌルで回転のみを任せて、その下層にキャラ用のオブジェクトを格納します。
こうすると最悪ジンバルロックが起きても上位層のヌルを回転させて急場をしのぐことができます。そしてどこかのタイミングを見計らって上位階層の回転した角度を元に戻しておくのがいいかもしれません。このおかげで、現在は軸回転が怖くなくなりました。

【2】 ジンバルロックは回避できないので、キャラクターアニメーションをするときはキーフレームを打つ前にその状態に陥らないかよく調べる。

【3】回転させるオブジェクトの Y軸が倒れているときは回転モードをジンバルにして、ムチャな軸配置になっていないか目を光らせる。






【12】回転は迷宮への路  HPB回転を理解する(完結)  お騒がせしました

戻る   デジタル降魔録へ   次へ