[3dsMax]スクリプトでオブジェクトを別のレイヤーへ移動する。

●説明する内容

カレントレイヤーの中身を、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メソッドでレイヤーを移動する場合はエラーが出なかった。

広告

コメントを残す

メールアドレスが公開されることはありません。

スパム対策用の計算式と画像認証です。↓の欄を入力しないとコメントが出来ません。 *

*