3dsmax でテキストデータをオブジェクトに保存する方法

 コメントで「3dsmax でメモだけを残すモディファイヤみたいなものを作れないか」という質問を頂いたのでその説明を。

 このエントリではスクリプトを使用しない方法を紹介します。追ってスクリプトから操作する方法も紹介したいと思います。

カスタムアトリビュートとは

 3dsmax ではシーン内のオブジェクト(厳密にはノード)に対してカスタムアトリビュートを持たせることができます。

 カスタムアトリビュートというのは文字通り、カスタムなアトリビュート、つまり、ユーザが自由に追加できるアトリビュート、パラメータという意味です。カスタムアトリビュートはさまざまなところに保存できますが、今回質問は「モディファイヤみたいなもの」ということだったのでモディファイヤを使用する方法を紹介してみようと思います。

アトリビュートホルダーを適用する

 シーン内の任意のオブジェクトを選択し、「アトリビュートホルダー」というモディファイヤを適用します。

 アトリビュートホルダはその名の通り、アトリビュートを保持するという目的だけのためのモディファイヤです。これ自身にはパラメータは一つもありません。

パラメータを追加する

 メインメニューバーから、アニメーション→パラメータ編集とたどります。

 若干UIが不親切ですが、「パラメータ編集」機能を使って、カスタムアトリビュートの操作ができます。3dsmax において、アトリビュートとパラメータという用語はほぼ同じものとして使われています。

パラメータの設定を行う

 パラメータ編集画面では、追加するカスタムアトリビュートの詳細や、ユーザインタフェースの設定などができます。

 今回はオブジェクトに対して「メモ」を追加したいので、文字列(String)タイプのパラメータを追加しましょう。

 まずは追加する場所を設定します。

「タイプを追加」のプルダウンから、追加先を選択できます。

  • 選択したオブジェクトの基本レベル
    • 選択されているオブジェクトそのものにアトリビュートを追加します
  • 選択したオブジェクトの現在のモディファイヤ
    • 選択されているモディファイヤにアトリビュートを追加します
  • 選択したオブジェクトのマテリアル
    • 選択されているオブジェクトのマテリアルにアトリビュートを追加します
  • トラックを選択
    • トラックを指定してアトリビュートを追加します。(これを使うとシーンにオブジェクトが何もなくてもシーンルートトラックにアトリビュートを追加することができます)

 今回はモディファイヤを選択しましょう。オブジェクトを選択して修正パネルを開き、先ほど追加した「アトリビュートホルダ―」を選択しておいてください。

 続いてパラメータタイプを設定します。これは追加するアトリビュートの型(タイプ)を設定する部分です。プルダウンを開いてみると、実に様々なタイプのアトリビュートを追加できることがわかります。今回は「String」を選びます。

 パラメータタイプを設定するとそれと連動してUIタイプが変化します。UIタイプはEditTextで良いのでそのままにしておき、名前を設定しましょう。今回はメモを入力する想定なのでmemoとしました。

 これで準備ができたので、少し上へ戻って「追加」ボタンを押します。「追加」を押すと、選択していたアトリビュートホルダにカスタムアトリビュートが追加されます。

 追加されたアトリビュートを見ると、テキスト編集部分が狭いですね…。入力したいメモが一言だけなのであればこれでも良いですが、これだと狭い場合はこのUIを修正しましょう。

 すでに作成されているアトリビュートを編集する際は、「パラメータ編集」画面の「編集/削除」ボタンを押します。

 「編集/削除」ボタンを押すと「アトリビュート/パラメータを編集」という窓が開き、カスタムアトリビュートが列挙されるので、編集したい項目を選択します。この辺もUIがわかりにくいのですが、選択した時点で「パラメータ編集」窓の中身は選択したアトリビュートの内容に更新されます。

 この状態で内容を変更します。今回は「ストリングUIオプション」のところで、「サイズ」の「高さ」を拡大しましょう。

 ここでは適当に50にしてみました。初期値で確認できるように、一行分でこの高さは17でした。それを参考に、必要な大きさに拡大してください。

 数値を変更したら「アトリビュート/パラメータを編集」の画面に戻り、左下の「変更を適用」を押します。

 手順をおさらいするとこのようになります。

  1. パラメータ編集窓で「編集/削除」ボタンを押す
  2. 「アトリビュート/パラメータを編集」窓が開くので、修正したいパラメータを選択する
  3. 編集したい項目を修正する
  4. 「変更を適用」ボタンを押す
  5. 変更が反映される

カスタムアトリビュートを使う

 これで、ティーポットオブジェクトにメモを入力するためのアトリビュートが追加できました。さっそく使ってみましょう。

 メモが書けるようになりました。もちろんこのメモはシーンデータに保存されます。モデルの更新情報や、リグの注意点などを書いておくと便利だったりします。

まとめ

 カスタムアトリビュートは非常に便利で、アイデア次第でかなり発展的な使い方もできるのですが、UIのデザインが良くないせいでとっつきにくいものになっていると感じます。分かりにくさの原因のひとつは用語が統一されていないことです。

 カスタムアトリビュートはわかりにくいですが、難しくはないのでぜひ使ってみてください。

 なお、カスタムアトリビュートはスクリプトからもかなり柔軟に操作でき、GUIから操作すると面倒なこともより簡単にできたりします。が、こちらもGUIと同じかそれ以上にわかりにくいので、そのうち解説エントリを書きたいと思います。応用するとなんでもかんでもシーンデータに保存できるようになって恐ろしく便利です。