チュートリアル / 読んで触ってよくわかる!Mayaを使いこなす為のAtoZ
第15回:ヒストリを知ろう!ヒストリの使い方(2/2)
- Maya
- ゲーム
- コラム
- チュートリアル
- 中級者
- 学生・初心者
- 教育
- 映画・TV
前回に引き続きヒストリの使い方を見て行きたいと思います。ヒストリの扱いに慣れれば、いよいよMayaの正体、ノードに迫ることができるのです。今回も困った時にさりげなく役立つテクニックを紹介しますので、これを通してもう一歩ヒストリに慣れてみましょう。
では試してみましょう。
1)Create > Polygon Primitives > Cube でキューブを作ります。
2)フェースを選択して削除します。

3)ファイルを保存して開きます。Undoができなくなります。
キューブを選択すると、チャンネルボックスのヒストリ欄にdeleteComponent1というのがあることでしょう。(もしなければヒストリが作られていませんので、前回のコラムを参考にしてヒストリ作成をオンにして、キューブを作り直してみてください。)
チャンネルボックスでdeleteComponent1という文字をクリックしても、何も開かないので編集も何もできないのですが、これがフェースを削除したというヒストリです。
4)キューブを選択してアトリビュートエディタを開き、deleteComponent1というタブを選びます。
5)アトリビュートエディタの左下のSelectボタンを押してヒストリを選択します。(画面上では何も選択されていないように見えますが、選択されています。)

6)Deleteキーを押して選択しているヒストリを削除します。
おお、削除したはずのフェースが復活しましたね!フェースを作り直すとUVも作り直さないといけなくなるので面倒だったんですよ!
…とまあ、このように履歴を削除することで後からUndoを行うことができます。他にもUVやエッジを捨ててしまった時もヒストリが残っていればやり直せます。
(実際Undoではヒストリを削除して前の状態に戻したりしています。)
実はヒストリがないオブジェクトでフェースを削除してもヒストリが作られないのです!
ヒストリがないとヒストリが作られない…。なんというパラドックス。こういう困った時の常套手段としてTransform Componentという技がありますので紹介しておきます。
要は空のヒストリを作れば、コンポーネントを削除した時のヒストリが作られるようになるわけです。
都合がよいのがこのTransform Componentという機能です。
1)メッシュオブジェクトを選択します。
2)Edit Mesh > Transform Componentを実行します。
これだけです。この機能はコンポーネントの移動をヒストリで行うものです。実行しただけなら移動しないので、見た目の変化はありません。なので空のヒストリとしてとても都合がよいわけです。
下図でTransform Componentの効きっぷりを説明します。
左側のキューブにはヒストリが無いので、上面フェースを削除してもヒストリは作られません。
一方右側のキューブはTransform Componentを実行したことによりpolyMoveVertex1というヒストリができます。キューブの見た目に変化はありませんが、INPUTSにヒストリが出来ているのが確認できます。そして上面フェースを削除すれば、ヒストリとしてdeleteComponent1が作られます。
ちなみに、フェースを削除するのにはDeleteキーを押すしかないのですが、頂点とエッジはそれぞれDelete VertexとDelete Edgeという削除用のコマンドがあります。そのうちDelete Edgeはヒストリがなくてもヒストリが作られます。
どんな時に便利かというと何かの編集(べベルとか)を適用したモデルと適用していないモデルとで見比べたり、スムースなど処理の重いヒストリを無効にしておいてアニメーションを快適に再生できるようにしておくなどに便利です。
では試してみましょう。
1)Create > Polygon Primitives > Cubeでキューブを作ります。

2)キューブを選択したままEdit Mesh > Bevelでベベルをかけてみましょう。

3)次にMesh > Smoothでスムースをかけます。
4)アトリビュートエディターを開き、polyBevel1というタブがあるので選択します。

5)アトリビュートエディタの下の方にNode Behavior > Node Stateというアトリビュートがあります。
通常はNormalになっています。これをHasNoEffectにしてみてください。
6)ベベルは実行されず、そのあとのスムースだけがキューブに適用されるようになります。
どのヒストリであってもNode Stateというアトリビュートがあります。 Normal/HasNoEffectを切り替えることでヒストリをオン・オフできます。
Node Stateを切り替えたらスクリプトエディタにMELが表示されるので、それをシェルフに登録しておけば簡単にヒストリをコントロールできるようになります。
が、これはMayaの表面でしかないのです。実はこれをたどっていくと、よりディープで面白いMayaの仕組みが見えてきます。次回からはいよいよMayaの核心「ノード」について見ていきたいと思います。
ヒストリをUndoの様に使う
人生で黒歴史を消すことはできませんが、Mayaでは嫌な過去をなかったことにできます!シーンを閉じてしまえばUndoができなくなりますが、ヒストリがあればUndoの様に作業記録が残っているわけなのである程度Undoのようなことをすることもできます。では試してみましょう。
1)Create > Polygon Primitives > Cube でキューブを作ります。
2)フェースを選択して削除します。

3)ファイルを保存して開きます。Undoができなくなります。
キューブを選択すると、チャンネルボックスのヒストリ欄にdeleteComponent1というのがあることでしょう。(もしなければヒストリが作られていませんので、前回のコラムを参考にしてヒストリ作成をオンにして、キューブを作り直してみてください。)

チャンネルボックスでdeleteComponent1という文字をクリックしても、何も開かないので編集も何もできないのですが、これがフェースを削除したというヒストリです。
4)キューブを選択してアトリビュートエディタを開き、deleteComponent1というタブを選びます。

5)アトリビュートエディタの左下のSelectボタンを押してヒストリを選択します。(画面上では何も選択されていないように見えますが、選択されています。)

6)Deleteキーを押して選択しているヒストリを削除します。

おお、削除したはずのフェースが復活しましたね!フェースを作り直すとUVも作り直さないといけなくなるので面倒だったんですよ!
…とまあ、このように履歴を削除することで後からUndoを行うことができます。他にもUVやエッジを捨ててしまった時もヒストリが残っていればやり直せます。
(実際Undoではヒストリを削除して前の状態に戻したりしています。)
空のヒストリを作る
フェースなどコンポーネントを削除すると作られるヒストリ。昔からなんとなくお気づきの方もいるかもしれませんがこのヒストリ、場合によっては作られたり作られなかったりします。実はヒストリがないオブジェクトでフェースを削除してもヒストリが作られないのです!
ヒストリがないとヒストリが作られない…。なんというパラドックス。こういう困った時の常套手段としてTransform Componentという技がありますので紹介しておきます。
要は空のヒストリを作れば、コンポーネントを削除した時のヒストリが作られるようになるわけです。
都合がよいのがこのTransform Componentという機能です。
1)メッシュオブジェクトを選択します。
2)Edit Mesh > Transform Componentを実行します。
これだけです。この機能はコンポーネントの移動をヒストリで行うものです。実行しただけなら移動しないので、見た目の変化はありません。なので空のヒストリとしてとても都合がよいわけです。
下図でTransform Componentの効きっぷりを説明します。

左側のキューブにはヒストリが無いので、上面フェースを削除してもヒストリは作られません。
一方右側のキューブはTransform Componentを実行したことによりpolyMoveVertex1というヒストリができます。キューブの見た目に変化はありませんが、INPUTSにヒストリが出来ているのが確認できます。そして上面フェースを削除すれば、ヒストリとしてdeleteComponent1が作られます。
ちなみに、フェースを削除するのにはDeleteキーを押すしかないのですが、頂点とエッジはそれぞれDelete VertexとDelete Edgeという削除用のコマンドがあります。そのうちDelete Edgeはヒストリがなくてもヒストリが作られます。
ヒストリを無効化する
ヒストリの基本の最後です。ヒストリは無効化することができます。どんな時に便利かというと何かの編集(べベルとか)を適用したモデルと適用していないモデルとで見比べたり、スムースなど処理の重いヒストリを無効にしておいてアニメーションを快適に再生できるようにしておくなどに便利です。
では試してみましょう。
1)Create > Polygon Primitives > Cubeでキューブを作ります。

2)キューブを選択したままEdit Mesh > Bevelでベベルをかけてみましょう。

3)次にMesh > Smoothでスムースをかけます。

4)アトリビュートエディターを開き、polyBevel1というタブがあるので選択します。

5)アトリビュートエディタの下の方にNode Behavior > Node Stateというアトリビュートがあります。

通常はNormalになっています。これをHasNoEffectにしてみてください。
6)ベベルは実行されず、そのあとのスムースだけがキューブに適用されるようになります。

どのヒストリであってもNode Stateというアトリビュートがあります。 Normal/HasNoEffectを切り替えることでヒストリをオン・オフできます。
Node Stateを切り替えたらスクリプトエディタにMELが表示されるので、それをシェルフに登録しておけば簡単にヒストリをコントロールできるようになります。
まとめ
もっとも基本的なヒストリの操作から、ヒストリの削除、無効化と一通りの扱い方を見てきました。これでヒストリに関しては自由自在ですね!普段使いの中でいろいろ困った時、これを知っているだけでも快適に作業ができるようになると思います。が、これはMayaの表面でしかないのです。実はこれをたどっていくと、よりディープで面白いMayaの仕組みが見えてきます。次回からはいよいよMayaの核心「ノード」について見ていきたいと思います。