チュートリアル / 読んで触ってよくわかる!Mayaを使いこなす為のAtoZ
第104回:3DCG用語の不思議(アニメーション編その2)

  • Maya
  • アニメーション
  • ゲーム
  • コラム
  • チュートリアル
  • モデリング
  • 初心者・学生
第104回:3DCG用語の不思議(アニメーション編その2)

春の季節には3DCGを学ぶユーザが増えますね。(諸説あり)
謎の用語だらけのこの世界で路頭に迷う方を救うべく、再び用語の不思議について取り上げます。今回はアニメーション編の続きです。

と言っても取り上げるのは「タンジェント」と「バインド・スキン」ですので、モデリングとアニメーションの両分野に関わる用語です。

早速見ていきましょう!

タンジェント

タンジェント

学校で習ったサイン・コサイン・タンジェントのこと?

サインとコサイン = テストに出てくる主役級の扱い
(ファミレスで出てくるハンバーグとグリルチキンのようなポジション)

タンジェント = テストには出てこない脇役
(ポテト的なおまけポジション)

と真っ先に思い浮かべたことでしょう。(これも諸説あり)
授業でピタゴラスの定理が出てきて「面白いけど、おとなになって役に立つことはないな」と思っていましたが、まさか役に立つときが来るとは。

でも実はデザイナが関わるところで言う「タンジェント」とは、学校で習ったものと少し異なります。

「タンジェント(Tangent)」は日本語では「接線」と呼びます。数学用語なので日本語が用意されています。
「接線」という文字からしてどこかに「接触している直線」というわけですから、色々なところで登場します。

そう、この用語は何の話をしているかという流れで理解する必要があります。

モデリングでのタンジェント

モデリングでの接線・タンジェントはNURBSカーブやUVで登場します。
NURBSカーブでは「Curves > Edit Curve Tool」でカーブ上のどこかを選べば、カーブの曲がりを操作するハンドルとして接線が表示されます。

タンジェント

ベジェカーブでは次の図のようにコンポーネントとしてハンドルが接線として表示されます。

タンジェント

え、ハンドルという新しい用語が。
そうなんですよね…。編集するためのこういう伸びたものはハンドルと呼びがちで、ハンドル=タンジェント・接線ではないですが、同じ意味で使うことが多いです。

UVを編集していて接線を意識することはあまりないですが、実際には接線というものがあります。
UVとメッシュの形から自動的に計算されるので直接操作することはありません。(法線・従法線・接線と呼ばれるXYZ値になります。)
メッシュの表示オプションで切り替えると確認できます。

メッシュを選択してから「Display > Polygons > Tangents」を選ぶか、アトリビュートエディタで「Display Tangent」をオンにします。青や赤の線が表示されます。
赤色の線が接線です。青は従法線です。

「Display Tangent」をオンにします

次のようにdisplayRGBColorコマンドを使うと、接線の色を変えられます。

displayRGBColor -q "tangent"; // 色の確認。デフォルトは0.8 0 0。
displayRGBColor "tangent" 1 1 1; // 色の設定。ここでは白にします。
displayRGBColorコマンド

この接線は法線マップの計算に使われますので、法線マップのベイクとシェーディングするときにも関わってきます。

アニメーションでのタンジェント

アニメーションではキーフレームのハンドルがタンジェント・接線です。

アニメーションでのタンジェント

NURBSやベジェカーブのようにカーブの補間具合を調整するために使います。

モデリングでは「カーブを操作するためのハンドル」や「法線とUVに関わる値」という感じで登場します。
アニメーションでも「カーブを操作するためのハンドル」ですけれど、キーフレームにしか登場しません。

どちらも雰囲気としては、何かの曲がり具合や方向を補足するためのもの、という関わりで付き合うことになります。

「法線マップがうまくベイク出来ていないのはタンジェントが影響している」と言われれば、UVや形状になにかする必要があるということです。
「動きが滑らかじゃないので、タンジェントを確認してみて」と言われれば、キーフレームのタンジェントを確認して、アニメーションのカーブがなめらかに変化しているかを確認します。

バインドはスキニングとは違うのか?

バインドとスキニング

3DCG初心者のときは「スキニング」という響きからして、実行すると肌のマテリアルやUVを作ってくれるのかと思っていました。それに加えて肌のように柔らかい変形もするのかと。
実際にはジオメトリの変形だけを担当します。

これも諸説ありますが、ジオメトリをジョイントと関連付けて、ジョイントの動きで変形させる準備をするのが「バインド」や「スキニング」と呼ばれるものです。マテリアルは関係なくて、頂点の変形だけです。(厳密には法線も変形します)

スキニングはスキンと呼ぶこともあります。
仕事の現場ではバインドとスキン、スキニングはごちゃ混ぜで使われます。

「キャラクタのモデルをバインドする」
「メッシュをスキニングする」
「オブジェクトにスキンを割り当てる」

どれも同じことを意味します。
スキン、つまり「皮膚」?
インターフェースとかでスキンと言うと、外見を別の見た目に変える目的でスキンと呼びますが。

さらに微妙に異なる呼び方がいくつもあります。正確な定義は不明です。

スキン(Skin) → 皮膚を変形させるという感じ?ジョイントで変形させる機能のこと。3DCG一般的な用語。
スキニング(Skinning) → 「皮膚する」?スキンを適用する作業のことかも。
スムーズスキン(Smooth Skin) → Mayaで言うスキン。ノードは skinCluster。(硬いスキンはあるのか?…いい質問だ)

バインド(Bind)は「結びつける」という意味です。
実行するとスキニングをするので、スキンとバインドの違いが分かりにくいですが、実は歴史的背景を知るとなぜバインドなのかがわかってきます。

今は使われない機能として「リジッドバインド(Rigid Bind)」があります。20年前には使うこともありましたが、今はMayaのメニューから削除されているのでもはや使うことはありません。
ドキュメントは残っていますけれど。
https://help.autodesk.com/view/MAYAUL/2024/JPN/?guid=GUID-30415E88-797A-424E-95C5-8EDC79B25614

これがどういう機能かというとまさにリジッド!硬いバインドなのです。

硬いバインド

頂点は一つのジョイントにしか付いてきません。スムーズスキンをインフルエンス数1で実行したのと同じです。
変形させれば、ジョイント間のつなぎ目がパキッと変形します。
実はメッシュとジョイントを選択してから「bindSkin」コマンドを実行すると、今でも作成できます。

メッシュとジョイントを選択してから「bindSkin」コマンドを実行

skinClusterノードではなくjointClusterノードが作成されます。各ジョイントごとに作成されます。
何に使うの?と思われるかもしれませんが、昔はこれでキャラクタを動かしていました。skinClusterより処理が速いとか言っていた記憶があります。
扱いとしてはデフォーマにあるクラスタ(Cluster)の上位版のようなものでした。

そして、ウェイトのペイントで綺麗にスムーズにつなぐようにしたのがスムーズスキンです。実は後発の機能です。

ジオメトリとジョイントを結びつける方法としてバインドには「リジッド」と「スムーズ」の二種類があったわけです。
でもリジッドのほうが使われないため、バインドは実質的にスムーズのみとなり、今に至ります。
一応これについてもドキュメントが残っています。
https://help.autodesk.com/view/MAYAUL/2024/JPN/index.html?guid=Maya_SDK_Writing_a_Deformer_Node_Skinning_html

だから「バインド=スムーズスキン=スキニング=スキン」という用語の壮絶なダダカブリが発生しているのです!
次の図のように、バインドはスキン全体のことを意味しているのです。

バインドはスキン全体のことを意味しています

デザイナが作業しているときはどれも同じ意味と思ってください…。
でも「スムーズ」とだけ言うと意味がわからないのでご注意ください。
「バインド」という動詞自体は他の意味合いで使う可能性もありますが、Mayaでは普通はスムーズスキンのこととして使われます。

というわけで実用例文は次のとおりです。

「バインドを調整してください」
→ Bind Skinのオプション設定を変えて実行するという意味かもしれないし、スキンウェイトの調整のことかもしれない。

「スムーズを調整してください」
→ 意味が曖昧。Smooth Meshのことかと勘違いされるかも。

「スキニング(スキン)を調整してください」
→ スキンウェイトの調整のことがほとんど。

「スムーズでスキニング(バインド)をしてください。」
→ Bind Skinを実行するということ。(暗にリジッドでスキニングをするパターンを知っているということで、発言者は年寄り扱いされる危険性あり。)

「スキンをスムーズしてください」
→ スキンウェイトにSmooth Skin Weightsを適用するか、Paint Skin Weight ToolでSmoothを実行して、ウェイト値を滑らかにするということ。

作業のみならず用語もややこしいバインド作業でした。

まとめ

主に「タンジェント」と「バインド」という2つの用語の話でしたが、それでもこれだけややこしい3DCG用語。
この業界の関係者は、こんなにフワフワした会話でよく成り立っているなと、段々と思えてきました…。
英語であって同じようなものですから世界中の関係者がフワフワしているわけで。

新しく3DCGを学ぶ方も、覚えることが多いながらもこんな感じで適当になんとかなるものだなと、気軽に考えてもらえればちょうどよいかと思います。

製品購入に関するお問い合わせ
オートデスク メディア&エンターテインメント 製品のご購入に関してご連絡を希望される場合は、こちらからお問い合わせください。