チュートリアル / はじめての人でも怖くない!!3DCGの世界
第7回:スキンってなんのこと?
- 3ds Max
- アニメ
- キャラクター・リグ
- コラム
- チュートリアル
- 学生・初心者
- 映画・TV
今回は作ったモデルにポーズを付けたりアニメーションをさせるのに必須のスキンというものに触れてみましょう
モデルを動かすための一般的な方法として、ボーンを作成してのスキンというのが考えられます。さぁここで早速もう一つの用語が出てきましたね。そう、スキンを知ってもらうためには、もう一つ、ボーンとの関係が今回のカギになります。
では、スキンとボーンとはなんなのかをまずは知ってもらおうと思います。
言葉としては、これは、ある意味そのまんまです。
スキン SKIN は、日本語で皮膚を表します。
そしてボーン BONE は、日本語で骨を表します。
ただ、実際の作業をしている中でスキンのことを皮膚と呼ぶ人はいないですが、ボーンは骨って呼んだりすることもあるような気がします。
なぜそうなるのか、これらの言葉を頭の中に浮かべながらもう少し読み進めていただければと思います。
実際これがCGにおいてどんな役割を果たしていくのかも見ていきましょう。
この時、実は上で書いたスキンとボーンがちょっと違う意味をもってくるので、それもちょっと補足しながら解説していきますね。
ボーンは名詞として働くので、実際にボーンというものが出てきます。
ですが、スキンはどちらかというと動詞的な扱いになります。皮膚そのものを表すのではなくて、作ったモデルを「皮膚として扱う」という意味になると思ってほしいのですが、分かりづらいですよね。前提としてそうなっているよというのをとりあえず頭の隅にでも置いておいてください。
では、じゃあスキンってどれ?なに?どうするの?って思いますよね?
より具体的にするために図と一緒にみていきましょうか。
まずは円柱を作ります。
ボーンを使って曲げられるような作りにしようと思いますので、図のようにある程度の長さ(高さ)をもった円柱にします。
その中にボーンを作ります。作成>システム>ボーン にありますので、円柱の根元、中心、天辺という感じで3クリック。最後に右クリックで完成です。
素材はこれだけです。
スキンしたい円柱と、ボーンです。
3面図で円柱の中央に入っているか確認します。ずれていたら調整しましょう。今回はシビアではないので多少のずれは許容範囲です。飛び出していても大丈夫です。逆に足りてなくても平気です。
位置関係に問題がなければいよいよスキンしてみます。
スキンをするのは円柱のほうです。
ボーンにスキンを適用する人も多そうなので注意です。
スキンはモディファイアですので、円柱を選択しておいてスキンモディファイアを適用します。「これを皮膚にしますよ!!」という宣言だと思ってください。
次にスキンモディファイアの中にボーンを登録します。
今度はこれが、「この皮膚を動かすのはこの骨ですよ」という宣言だと思ってください。
早速ボーンを動かしてみましょう。
まずはこれだけでも円柱が変形してくれるはずです。
いろいろ問題があったとしても、それがなんなのかはこの後解説していきますので、まずはちょっとでも動いてくれたら成功です。
成功しているのを前提として、振り返ってみます。
スキンとは、作ったモデルを皮膚として、登録したボーンの動きに合わせて変形させるための機能です。
変形させたいものにはボーンを仕込んでスキンする。
それをこれから詳しく解説していこうと思います。
ただ、これ、すごく難しかったり面倒だったりするので、3DCGの中でも怖い部類の機能になります。なるべく怖くないようにお話ししていきますので、ぜひチャレンジして、せっかく作ったモデルにポーズをつけたり出来るようになってくれたら嬉しいですね。
では改めてスキンを試してみながら、いくつか困ったことを見つけて直していくようにしてみましょう。
そう、変な書き方だな?と思いましたか?
これ、うまくいかないのがある意味普通なんです。
それの問題を潰していってキレイにしていく作業。
トラブルが前提で、トラブル回避していくという感じで、マイナスからプラスに転じさせていくのがスキンの醍醐味です。
まずは0を目指す感じですかね。
さて、では先ほどと同じく円柱で試してみましょう。
わざとちょっと失敗してみます。
まずは配置は先ほどと一緒で、中央にボーンを配置してスキンをします。
曲げてみます。
曲がりませんね。
これはとっても単純な失敗です。
ボーンの登録時に必要なボーンをすべて登録しなかったからです。
これではボーンを途中から曲げてみても曲がりませんが、根元を動かすとちゃんとついてきます。回転にも対応していますね。
これは、登録されたボーンが一つだけなので、全てがこのポーンにリンクされているのと同じ動きをしている状態です。
では改めてボーンをすべて登録してみましょう。
今度は曲げると円柱が折れるような形で曲がってくれました。
この円柱とボーンの関係ならば、よほどのことがなければ大きなトラブルはおきないと思いますが、あえて困ったことを起こしてみましょう。
一部の頂点が置いて行かれてしまって、尖ったような変形が行われています。
これは、最初と逆に加えてはいけないボーンが登録されてしまっているときに起きる現象の一つです。ボーンとして登録できるのはボーンオブジェクトだけではないので、他のオブジェクトやシェイプなどを間違って登録してしまうとこのようなことが発生したりします。
曲げたときに気づかなくても、全体を動かしたつもりがついてこない頂点があって気づくというパターンもありますので注意です。
では次に頂点とボーンの関係をもうちょっと深くみていきましょう。
変形は、登録したボーンによって起こると書きました。
これは、ある頂点がどのボーンとくっついているのかという情報が、その頂点に記録されていて、ボーンが動いたら頂点も一緒についていくようになっているからです。全ての頂点にその記録がなされています。
例えば、Aの頂点はAのボーンに、Bの頂点はBのボーンに、Cの頂点はAのボーンに・・・などです。
そして、Dの頂点はAとBのボーンにということも設定できるのです。
この両方についていくようにするということ、そしてそれがどうなるのかということをみていきましょう。
まずは簡単にそれらをコントロールできるエンベロープというものを見ていきます。
スキンモディファイアの中のエンベロープを編集を押してみましょう。
この状態でボーンのところを触ると、ボーン対応したエンベロープが表示されます。
このエンベロープというのは、ボーンの影響範囲だと思ってください。ここからここまで影響しますよというのが、内側のカプセルと外側のカプセルで表されています。基本的にはカプセルの外側には影響しないので、全ての頂点がいずれかのエンベロープに含まれるようにしてあげるようにしてください。ただ、デフォルトでは範囲に含まれていない場合は近くのボーンに属すようになっていますので、おおよそこのくらいの範囲までというイメージで構いません。
エンベロープはカプセル上に見えている頂点をドラッグすることでサイズ調整できます。ドラッグしづらい時には頂点を選択してパラメータ上で半径の数値での調整も可能です。
複数のエンベロープに囲まれた頂点に関しては、双方の動きの影響を受けます。
滑らかな変形を目指す時には、この複数ボーンからの影響でバランスをとっていくことはかかせません。
エンベロープの内側が1として、外側が0、その中間は距離に応じて数値が変化すると思ってください。これと同じように複数のエンベロープからも影響があり、双方から引っ張られる感じです。
エンベロープはこのようにカプセルを使って大雑把に範囲を決めてスキンの調整をしていくものになりますが、さらに細かく調整するための方法があります。
頂点ごとに、どのボーンにどれだけの影響を受けるかを数値で振り分けていく方法です。一つ一つでも可能だし、まとめて調整することも可能です。
ウェイトツールというものでボーンと頂点の関係を数値で表して設定していきます。
エンベロープを編集ののちに、直下の「頂点」というチェックボックスをオンにします。
この状態で頂点とボーンを触ることが出来るようになりますので、双方を選んで数値を入力していきます。
数値を入力といっても、プリセットされている数字0~1のボタンを押すことや、その下にあるウェイトを設定の数値で+-することでどのくらい影響させるかを上下させていくことになります。
図でちょっと見てみましょう
頂点をもったエッジを挟んで二つのボーンがあります。
これにスキンが当たっていると思ってください。
左側のボーンに1を割り振って、右を0にするとこんな感じです。
左のボーンに完全にくっついてきます。
逆に右のボーンに1を割り振ると、左のボーンを動かしてもついてきません。
そして、どちらのボーンにも0.5を割り振ると中間の値をとるようになります。
0~1の中でお互いにバランスを取って引っ張り合う作りになっています。
数値は複数のボーンからの値を全て足すと1になるようになっていて、あるボーンからの値を増やすと、別のボーンが減るという形になって、やはり全てを足すと1となります。
ボーンからの影響を切るためにはこの数値を0にする必要があるのですが、頂点に影響をしているボーンが一つしかない場合、0を設定しようとしても他への振り分けが出来ないので0にすることができません。
頂点と接点のあるボーンが一つだけだと、縁を切りたくても切れないわけです。一度もまだ関係性を作っていないボーンに対しては自動的には割り振られないようになっているからです。
なので、他のボーンを登録(紹介)してあげます。そうするとボーンの影響を0にすることが可能になります。新しいボーンさんが1受け持ってくれることになります。
ちなみにこの数値のことをウェイト(重み)と呼びます。このウェイト調整がスキン作業のほとんどの時間を使うことになるでしょう。
難しいうえにめんどくさい作業をすることになるスキン。
とはいえキャラクターなどの変形には欠かせない機能ですので、せめてコツだけでも知ってもらえたらと思います。
まず一番大切なのは、あってはならない変形をさせないようにすること。それは、関係のないボーンと頂点がくっついてしまわないように、関係性を断ち切っていくことです。
要するにちょうど直前に記した 0 ウェイトを設定するということです。
余計なところに引っ張られている頂点があったら、その頂点を選びます。
するとウェイトツールにはその頂点に登録されているボーンがリストされます。ボーンをひとつずつクリックしてみると、どのボーンなのかが確認できます。
そして、そのボーンがどの頂点にどれだけ影響しているのかが色で可視化されています。
離れたボーンがその頂点に加わってしまってはいませんか?
そうしたらその頂点とボーンを選んだ状態で0ウェイトを設定しましょう。
そうすれば彼と縁が切れます。
一番これらが発生しやすいのが、左右の足や指でしょうか。どうしても近くに関係のないボーンがいることで、そっちに引っ張られてしまうことがあるからです。
最後の最後にしつこくもう一回書きますね。
頂点をボーンに登録する ことよりも 頂点からボーンを切り離すこと。
0ウェイトこそがコツです。
そして、0にできないときは別のボーンを紹介してあげましょう。
より美しく、正しく変形させるためにはもっと知らなければいけないこともあるのですが、まずはペアになるべき頂点とボーンを結び付かせてあげる。それ以外は縁を切らせてあげる。そこを目指してキャラクターにポーズがつけられるようにがんばってみましょう~!!