Blender修行(22) 謎の[F]ボタン、フェイクユーザーの仕組み
「アニメーションを作る前にもう1つ重要な仕組みがあって、それがフェイクユーザー。Blender用語なんだけど、これがないと折角作ったアニメーションが消えてしまうおそれがある」
妹「セーブするボタンなの?」
「そうといえばそうなんだけど、Blenderの初心者向けの解説を見ると、"アニメーションを作ったらすぐ[F]のボタンを押すように。押さないとデータが消える場合があります"……というようなことが書いてある。その説明は間違いではないんだけど、この[F]はアニメーション以外でも出てくる仕組みだから、理屈もわかってた方がいいと思う。つまり、どういう場合にデータが消えるのかという話」
「とりあえず、WalkとJumpというアニメーションを作った状態。Blenderでは複数のアニメーションを1つのBlendファイル内で管理出来る。ただ1度に選択出来るアニメーションは1つだけ。今はWalkの方を選択してる。Jumpは予備みたいな状態になってる。これはいつでも切り替えられる」
妹「今のところ特に問題はなさそうな」
「ただこの予備のアニメーションというのは、アウトライナーの"全てのシーン"の中に出てこない。使用中のアニメーションが出るだけ」
「問題はBlenderがセーブする時の仕組みで、予備のやつは保存しないことになっている。つまり普通に保存すると、次にそれを読み込んだ時にはJumpのデータが消えてることになる」
妹「Jumpの方も選択したらいいのでは?」
「そっちを選択するとWalkの方が予備になってしまう。アーマチュアごとに、1度に1個しかアニメーションは選べない。アーマチュアをコピーして、そっちで予備のアニメーションを使えば、両方とも使用中になるから、保存される」
妹「後でゲームで使うんだから、予備のも保存してくれればいいのに」
「要らないからゴミだと判断するんだよ。容量の無駄だから消す。UE4でも、どこからも参照されてないデータを自動的に消す、ガベージコレクションの仕組みが入ってたけど、あれと同じ」
妹「でもそれ要るやつ……」
「そういうこともあるから、消させない機能というのがある。それがフェイクユーザー。いちいちアーマチュアをコピーしてとかやるの面倒だから、とりあえず[F]を押したら、後で使うかもしれないデータだから、仮のアーマチュアで使用されてることにしとこう、っていう動作になる。わかりやすいように一覧表示でもFの文字が表示される」
妹「フェイクユーザー……偽の利用者? っていうのは、この場合誰のことになるの?」
「使ってる人間とかじゃなく、アーマチュアとかのオブジェクトデータのことをユーザーと言ってる。これはアニメーションだけでなくテクスチャとかもそう。テクスチャのユーザーがマテリアル、マテリアルのユーザーが(3D)メッシュ」
妹「要するに親ってこと?」
「だいたいそんな感じ。ユーザーが0だとそのデータは保存されないのは全部そうだけど、普通はユーザーが1人以上居るから問題ない。ただ複数のアニメーションの場合は絶対のこの問題が起きるから、最初に[F]を押しておくっていう注意書きがある」
「アウトライナーで"孤立データ"を見ると、ユーザーが居ない、捨てられる寸前のデータがある。何故かスカルプトモードのブラシもここに入っているんだけど。Fが付いてるやつはフェイクユーザーだから消されないし、消したい時はFを消せば自動削除の対象になる」
妹「自動的に削除するんじゃなくて、削除ってした時にだけ消してくれたらいいのに」
「1つのデータを色んなとこで使う場合もあるから、ユーザーがいるうちは消さないっていう、誤削除を防止する仕組みでもあるんだよ。それにフェイクユーザー作ればいいだけだから楽ともいえる。複数のアニメーションを1つのファイルに保存すること自体が出来ないソフトも多いから。そういう場合1つのアニメを時間ごとに区切るとか、別ファイルに保存するとか、フェイクユーザーよりもだいぶ面倒くさいことになる」