表示切り替えに便利なレイヤー(Layer)

レイヤー(Layer)は、透明な画層のようなもので、3Dオブジェクトの表示非表示を便利に扱うための特別なノードです。たとえば、レイヤーを使用して異なる種類のシーン情報を切り替えたり、グループのどれかを常に表示したり、特定レイヤーの組み合わせを処理することができます。レイヤーを使えば、複数案の切り替え表示が実現できるなるなど、さまざまなシーンのバリエーションを簡単に操作できます。

レイヤーは特別なノード

ワールドには、グループ、モデル、カメラ、ライト 4タイプのノードがあります。レイヤーはそれぞれを拡張した特別なノードです。一般的には、グループノードを利用して レイヤーを作成しますが、モデル自身がレイヤーとして振る舞う場合もあります。通常のノードに、レイヤー操作のインタフェースを備えたのがレイヤーノードです。ノードをレイヤーとして扱うには、SOLAの命名規則に従います。ノードの名前が「sola.layer 」から始まる場合、そのノードはレイヤーとしての働きます。

レイヤーの使い方は 3種類

SOLAには、レイヤーを最大限に活用できるインタフェースが 3種類あります。

レイヤーツリー
レイヤーの表示非表示の切り替えはチェックボックスで行います。レイヤーノードは階層構造で表示され、親レイヤーが非表示の場合は子レイヤーも表示されません。
レイヤーグループ
レイヤー同士をグループ分けします。あるレイヤーを表示すると、グループの他レイヤーが自動的に非表示に切り替わります。ラジオボタンで、どのレイヤーを表示するか選択します。
レイヤーバンドル
レイヤーバンドルは、表示されるレイヤーの選択セットです。ボタンを押すと、シーンが切り替わります。それぞれのボタンは、どのレイヤーが表示されるかの情報を持ちます。複数の検討案などを切り替える際に便利です。

レイヤーの作り方

レイヤーは、名前が特殊なノードです。ノードのタイプは、グループ、モデル、カメラ、ライトのどれでも構いません。一般的には、シーン描画に影響のないグループでレイヤーを作ります。

レイヤー
名前が「sola.layer」で始まり、スペース文字の後にレイヤー名です(sola.layer[半角スペース]レイヤー名)。大文字小文字の区別はありません。たとえば、"Car"というレイヤーを作る場合は、"sola.layer Car"です。layerの後のスペースに注意します。
レイヤーグループ
名前が「sola.lyGrp」で始まり、スペース文字の後にグループ名、その後レイヤー名をスペース文字で区切り、繋げます。(sola.lygrp[半角スペース]グループ名[半角スペース]レイヤー名......)。大文字小文字の区別はありません。たとえば、"sola.layer Desk1""sola.layer Desk2""sola.layer Desk3"、というレイヤーを切り替えるレイヤーグループ "DeskChange"を作る場合、"sola.lygrp DeskChange Desk1 Desk2 Desk3"となります。
レイヤーバンドル
名前が「sola.lyBdl」で始まり、スペース文字の後にバンドル名、その後レイヤー名をスペース文字で区切り、繋げます。(sola.lybdl[半角スペース]バンドル名[半角スペース]レイヤー名......)。大文字小文字の区別はありません。たとえば、"sola.layer Desk1""sola.layer Char1"というレイヤーを表示する"Furniture1"を作る場合、"sola.lybdl Furniture1 Desk1 Char1"となります。

ノードの名前の長さは、最大 256バイトです。半角文字だと 256文字まで使えます。しかし、レイヤー名はできるだけ短い方が、グループ、バンドルにするときに簡潔です。SOLAのインタフェースに日本語や長い文字列を表示したい場合には、ノードのラベルプロパティを活用します。たとえば、"sola.layer d1"ノードのラベルプロパティが "デスク 1"の場合、SOLAのレイヤインタフェースに"デスク 1"と表記されます。

レイヤーの表示、非表示の仕組み

ノードの階層構造ノードが表示される、されないは、そのノードがカメラのビューに写るかどうかです。言い換えると、カメラのルートノードの子孫であるかどうかです。初期設定では、カメラのルートノードは"World"グループになっています。ノードの階層関係を示した右図では、"World"グループの子でない"Node E"やその子の"Node F"などはカメラに表示されません。

レイヤーの働きは、レイヤー自身を表示するかしないかです。レイヤーノードを非表示にすると、そのノードと子孫ノードは、カメラのビューに写りません。レイヤーノードは、カメラのルートノードの子孫から一時的に外されます。レイヤーを表示しなおすと、そのノードは元の親の子の階層へ戻ります。たとえば、"Node A"がレイヤーの場合。レイヤーを非表示にすると、"Node A"は "World"と同じ階層へ移動します。レイヤーを表示すると、元の親である"World"グループの子に戻ります。

実際にレイヤーを表示非表示するには、パレットのチェックボックスなどの操作や、APIの showメソッドを使います。

SOLA サポートセンター > SOLA 5 > リファレンス > レイヤーについて