iPhoneアプリ開発:AR 目次

 

 AOIちゃんにアーマチュアもあるんでモーションも入れちゃいます。

 前回言ったようにアーマチュアは、3Dキャラなんかのポージングに利用するためのもの。

ポージング

 キャラの姿勢を決めるのがポージングなわけですが、AOIちゃんの形状を構成する頂点の数は「お気楽極楽Blender[1]後編」でやった立方体やトーラスの比じゃないっす。五芒星なんて鼻で笑われるレベル。

 なので、この前のように頂点を選択して直接移動や回転させたりするやり方だと、かなり大変そうだというのは想像つくんじゃないかと思われ。

 せっかくポーズ取らせた後で、うーんちょっと違うねぇ、いったん元に戻してとか言われたらブチ切れるレベル。

 で、そこらへんを解決するために用意されてるのがアーマチュアなわけでして、柔らかい素材の人形の中に入ってる骨組みをイメージしてもらえればと思うわけですよ。

 実際、体験するのが早いっす。

 まずは、前回、邪魔だって隠したアーマチュアを表示しちゃってください。

 前回と同じく、アウトライナービューで"AOI"って項目内にある"AOI_arm"って項目の表示/非表示アイコンをクリックすれば、今度は表示されます。

 

 MMDのモデルは髪の毛にもアーマチュア入れてるみたいで、かなり複雑なんだけど、腕のあたり見ると、骨組みが透けて見えてる感じがするんじゃないかと…

 で、このアーマチュアを、3Dビューで直接右クリックするか、アウトライナービューで"AOI_arm"の左のアイコンをクリックするかで選択します。

 そうすっと黒かったアーマチュアがオレンジになるんすよ。つまり選択状態ね。

 

 アーマチュアを選択すると3Dビュー側でポーズモードが選べるようになる。

ポーズモード

 オブジェクトモード、編集モードときて、今回はポーズモードっす。

 

 このモードで、アーマチュアの各節を移動したり回転させたりして、キャラにポーズを取ってもらうわけですな。

 この節それぞれをボーン(bone:骨)と呼んだりします。

ボーン


 で、例えば、上腕あたりのボーンを、頂点動かした時のように右ボタンでのドラッグで引っ張ると〜

 

 

 腕が、肘の関節で曲がるみたい動いたりするわけっす。

 

 

 適当な場所で左クリックで確定させたら、右腕も同じように動かしてポーズつけてやってください。

 

ま、適当に…

 

 アーマチュアでは、それぞれのボーンごとに、AOIちゃんの形状を構成する頂点群のどれが追随して動くかを決められるんで、こんなことができるんですな。

 で、例えば、今動かした右腕のボーンに関連付けられた頂点がどれかをみたい、もしくは関連付けを変更したい場合は、このポーズモードで右腕のボーンを選択した状態で、AOIちゃんの形状側を右クリック(shiftキー付きじゃなく単独クリックで切り替える)して選択します。

 そうすっと、選択物がアーマチュアじゃないんで、モードが自動でポーズモードから別のモードに切り替わるんですな。特に指定してなければオブジェクトモードになります。

 

 つまり「お気楽極楽Blender[1]後編」で、3D形状を選んだ状態と同じ状態に戻ってるわけっす。

 選んだオブジェクトを編集モードにする時、編集モード以外にいろいろな項目が並んでたの覚えてるかな?

 今回は、編集モードじゃなくウエイトペイントに変更する。

 

 

 

 これで、ポーズモードで最後に選んでいたボーンに追随する頂点、というより、頂点で構成される平面がどれくらい、そのボーンに影響受けるかを色で表現されることになります。

ウエイトペイント

 赤いところほど、ボーンと一緒に動き、青いところは、一緒に動かない。その中間が黄色なわけです。

 

 

 で、ここでAOIちゃんの形状平面を赤色にどんどん塗り広げていくと、右腕のボーンと一緒に動く頂点が増える(右腕のボーンの位置に合わせて形状が変形する)し、青色を増やせば、あまり動かなくなるわけですよ。

 この調整をするのがウエイトペイント。

 この状態で、右クリックでボーンを選べるようになってるんで、いろいろなボーンを選んで、どこに影響するのか見てみるといいです。

 

 

 とりあえず今回は見るだけね。

 色付けとかやるのは自分でボーンをつける時にでもやりましょう。

 さっきやった腕のボーンをドラッグしたら関節曲がるように動く仕掛けも、ボーン同士のコンストレイン(制約:constrain)設定によるんだけど、そこらへん説明しだすと長いからね。

 今回は確認できたらオブジェクトモードに戻す。

 ちなみに、ウエイトペイント移行には、この手順以外にも、アウトライナービューで "AOI_arm" の中にある "AOI_mesh" 左のアイコンを選んでオブジェクトモードにしてからウエイトペイントに切り替えるって方法もあります。

 そもそも、ボーンを選んでおく必要もないっす。話の流れ場、腕を選んだ状態で切り替えただけで、3D形状選んでれば、いつでもウエイトペイントに切り替えられるし、その後で、ウエイトを編集したいボーンを選んだっていい。

 ここらへんは好き好きで。

 

 とにかく、こんな風に3D形状は、アーマチュアという骨格に追随して表皮が動くようなイメージがあるんでスキン(皮:skin)と呼ばれるわけですよ。

 こうやって3D形状を調整するのをスキニングと言います。

 1990年前後には、すでにあったような…

 ジェラシックパークなんかは、これでやったんじゃないかと思うんだけど、確証はない。

 

 告知

 これまでは3D形状を全てスキンと言ってたけど、これからは、こういったアーマチュアに割り当てられたものだけスキンといって、そのほかはメッシュ(網目:mesh)と呼ぶようにします。

 最初紹介した時、メッシュ・スキンなどと呼ばれますって言って、私は中身がないんだから全部、皮でいいじゃんって軽い気持ちでスキンて呼んでたけど、やっぱ区別した方が良さげ。過去のブログもスキンのところをメッシュに直す。


 で、ポージングができるようになったので、一つのポーズから別のポーズへの変異を指定してみます。

 

 

 これがモーションす。Blenderではアクションって言ってる。

モーション

 まずは、今のポーズをモーションの初期ポーズとして登録。

 そのためには、まず3Dビューの下のタイムラインビューで、現在(current:カレント)のフレームを1にします。

タイムラインビュー

 

 というか、何も触ってないならカレントフレームの表示は1になってるはず。

 

 そうなってないならタイムラインビューのボトムバーにある頭出しボタンクリックしてください。直接カレントフレームにフレーム値として1を入力も可。

 

フレーム

 フレームとはフィルムの1コマって意味。

 前に言ったように、動画は高速な静止画の切り替えによって、見ている者に動いているように錯覚させている。映画で、その1つ1つの静止画像をフレームと呼んでたのが慣例になって、ビデオやデジタルアニメーションでも、動画中の高速に切り替えられていく静止画1つ1つをフレームと呼んでいるんす。

 前も言ったように秒間何枚のフレームで構成するかで動きの滑らかさが決まる。

 FPS(Frame Per Second:フレーム/秒)て単位で、値が大きい方が滑らかに動く。この値がフレームレート。

フレームレート

 映画だと24FPSで、これがBlenderのデフォルトになっているみたい。

 もちろんフレームレートは変更可能だけど、今はこのまま24FPSで進めます。

 ということで、モーション動画の初期位置である第1フレームに、現在のポーズを登録しましょう。

フレームへのアーマチュアポーズ登録

 タイムラインビューでカレントフレームが1なのを確認したら、今度は3Dビューをポーズモードにしてアーマチュアを全選択。3DビューでAキー使っても良いし、アウトライナービューでポーズ項目選ぶでも良いです。

 オブジェクトモードでメッシュを選んでる状態だとメッシュの状態を登録することになっちゃうんでね。

 

 

 登録したいのはアーマチュア側の全ボーンの状態なわけですよ。

 

 

 この状態で3Dビューのボトムバーからオブジェクト>アニメーション>キーフレーム挿入…を選ぶ。

 

 

 ショートカットはIキー。なので透視画面上でIキー打ちでも良いです。

 選ぶと、何を挿入したいのか聞いてくるので位置/回転を選ぶ。

 

 

 これで第1フレームにアーマチュア全ボーンの位置と回転情報が登録される。

 位置/回転/拡張を選んでスケーリングまで登録しちゃうと、AR側のスケーリングがリセットされるんじゃないかと思われるんで位置と回転だけにしときました。確認してないけど。どうでも良いけど、メニューの中、スケーリング、拡張、拡大縮小の単語が入り乱れてますな。

 とにかく、これでタイムラインビューのタイムラインに黄色い線が追加されたはず。これで、モーション開始時は、アーマチュア全ボーンの位置と回転がこの状態になるわけですよ。で、ボーンに各頂点が追随するので、勝手にメッシュも変形する。

 

 

 次にカレントフレームを1秒後あたりに設定。タイムラインビューの24フレームあたりをクリック。もしくは値を直接入力。

 

ファック!外れた、まあいいや

 

 で、3Dビューでポージングしてください。私は首を傾げさせます。頭のボーンを選んでドラッグ、は、やりにくいので選んでからGで動かした。

 

 

 嘘じゃ、ボケェえ。

 ここまで傾けるわけないやろ。首折れるわ。

 傾けは、ほどほどにね。

 で、またまた登録。今度は首のボーンの回転情報だけ登録ね。

 これで、モーションの初期状態のアーマチュアの状態から、1秒後に首のボーンの回転だけ変更することになる。いわゆる差分です。もちろん全ボーンの移動/回転を登録してもいいけど、他のボーンは初期位置・回転ともに同じで無駄だからね。

 

首の傾げはこれくらいにしといたほうがいいあるよ

 

 最後に2秒後、48フレーム目あたりに1フレーム目と同じポーズを登録しようと思うんだけど、ポーズをきっちり戻すために、カレントフレームを1フレーム目に戻してから、3Dビューのボトムバーのポーズ>現在のポーズをコピーを選んでポーズをコピっときます。もちろん首のボーンが選ばれた状態ね。

ポーズをコピー/ペースト

 

 で、タイムラインビューでカレントフレームを48フレーム目あたりに移動させてから

 

 1)3Dビューのボトムバーのポーズ>現在のポーズを貼り付けを選ぶ

 2)首のボーンの回転を登録

 

とやって登録作業完了。今度は、うまいこと48フレームが選べた。

 ここでタイムラインビューのボトムバーからフレーム>終了フレームを設定を選んで、最後の登録フレームをモーションの終わりに指定。

 

 これで、モーションは1〜48フレーム、2秒間のモーションてことになる。

 厳密にしたい人はカレントフレームや終了フレームに直接、値48を入力でやってください。

 

 用意したポーズは、最初と中間と最後の3つだけど、その間の変化はコンピュータが勝手に計算して滑らかに繋いでくれる。

 人間は、最低限、この時間には、このポーズになってないと困るてのを指定するわけっす。

 この人間が指定するポーズのあるフレームのことをキーフレームって言います。

キーフレーム

 首かしげる程度なら、3枚で十分すよ。

 竜巻旋風脚みたいなダイナミックな動きなら、もう少しキーフレームを増やして、ポーズを指示してやらないと、コンピュータもどうしたらいいかわからなくなるわけだが…

モーションのプレビュー

 ここまでできたらタイムラインビューのボトムバーにあるプレイボタンをクリック。

 

 

 3Dビューでアニメーションしてくれます。ほっとくと永遠に繰り返す。

 もっかいクリックで停止ね。

 

 

 確認できたら、COLLADAファイル書き出してアプリで読み込ませてみましょー

 作業は前回と同じ、というか書き出し先を、先に設定したプロジェクトフォルダにあるart.scnassetsフォルダ内のaoiフォルダにして、ファイル名をaoi.daeで上書きしちゃえば手間が省けてよくってよ。

 書き出したら、XcodeでRun。

 

ふぁっ?

 

 前回と変わってねーんすけど。

 動かね〜んすけど…

 

 後編に続く。