●説明する内容
カレントレイヤーの中身を、NG録レイヤーという名前のレイヤーに移動する。
●状況説明
適当なオブジェクトをカレントレイヤー内にいくつか作り、
スクリプトを使い、それらを別のレイヤー内に移動する。
●手順
手順①:
testというレイヤーを作り、カレントレイヤーにする。
そのレイヤー内に適当なオブジェクトをいくつか適当に作る。
手順②:
NG録レイヤーという名前のレイヤーを作る。
(レイヤーに任意の名前をつける場合は、
↓のスクリプトで、NG録レイヤーになっている部分を任意で付けた名前に変更する)
※オブジェクトを選択したままレイヤーを作ると、
選択したオブジェクトは新しく作られたレイヤー内に入ってしまうので注意。
手順③:
スクリプトエディターに↓のスクリプトをコピペして実行。
(実行のショートカットはctrlキー+Eキー)
●スクリプト
layerManager.current.nodes & nakami for i in nakami do( (layerManager.getLayerFromName"NG録レイヤー").addNode i )
●説明コメント付
layerManager.current.nodes & nakami --↑カレントレイヤーの中身を、変数nakamiに入れる。 --↓forループを使い、変数nakamiの中身を、一つずつNG録レイヤーに入れていく。 for i in nakami do( (layerManager.getLayerFromName"NG録レイヤー").addNode i )
●↓カレントレイヤーの中身を、変数nakamiに入れていくイメージ図
●↓forループで変数nakamiの中身を、NG録レイヤーに入れていくイメージ図
●こう書くことも出来る。
hako = layerManager.current hako.nodes & nakami tage = layerManager.getLayerFromName "NG録レイヤー" for i in nakami do( tage.addNode i )
●説明コメント付
hako = layerManager.current --↑カレントレイヤーをhakoという変数に入れる。 hako.nodes & nakami --↑hako(カレントレイヤー)の中身を変数nakamiに入れる。 tage = layerManager.getLayerFromName "NG録レイヤー" --↑tageという変数に、NG録レイヤーという名前のレイヤーを入れる。 --↓forループで変数nakamiに入ったオブジェクトを、 -- tage(NG録レイヤー)に一つずつ入れていく。 for i in nakami do( tage.addNode i )
●スクリプトでレイヤーを取得する方法は3つある。
・番号で取得。
・名前で取得。
・カレントレイヤーを取得。
今回のスクリプトで使用したのは、
名前で取得する方法と、カレントレイヤーを取得する方法。
参考:3ds Max 2016 ヘルプ インタフェース LayerManager
●nodes&変数の部分について
layerManager.current.nodes & nakami
・nodesという部分はメソッド。
>レイヤ上のすべてのノードの配列を返します。
後に続く変数(ここではnakami)に、
レイヤー内の全オブジェクトを配列として入れてくれる。
・&記号について。
↓リファレンスの、参照パラメーターの引渡しの項目を読み、ぼんやりと理解…
>関数の参照パラメータを定義するには、先頭に文字「&」を付けます。 >関数の複数の結果を渡すためにしばしば利用されます。
※ライトやカメラ等のターゲットとセットになっているオブジェクトは、
forループで削除しようとするとエラーが出てしまったが、
今回の様にaddNodeメソッドでレイヤーを移動する場合はエラーが出なかった。