ClusterNonOverlapEnforcement

カテゴリ

クラスタ

詳細

指定のプロパティ タイプ(たとえば、マテリアル)のコンテキスト内でクラスタがオーバーラップした場合のあいまいさを解決します。$$$マテリアル)。 このコマンドは、主に ApplyShader によって使用されます。

選択したクラスタからオーバーラップを削除したり、既存のクラスタからオーバーラップを削除したり、オーバーラップしたままにすることができます。

スクリプト構文

oReturn = ClusterNonOverlapEnforcement( InputObjs, Property, ActionWhenLocalMaterialsOverlap );

戻り値

ターゲット クラスタとオーバーラップすることが検出されたクラスタを含む XSICollection を戻します。

パラメータ

パラメータ タイプ 詳細
InputObjs 文字列 (選択されている可能性の高い)クラスタのリスト。このリストに従って、すべてのクラスタのオーバーラップをテストします。

デフォルト値: 現在選択されている値

Property 文字列 テスト対象とする既存のクラスタが持つ必要のある、プロパティの例。
ActionWhenLocalMaterialsOverlap siActionWhenLocalMaterialsOverlap ターゲット クラスタとオーバーラップすることが検出された場合の、クラスタの処理。

デフォルト値: siRemoveFromSelectedClusters

VBScript の例

' The following example demonstrates how to use ClusterNonOverlapEnforcement to resolve conflicts
' when clusters with a given type of property (eg: material) overlaps.
' The example is not really a good one because ApplyShader already does all this internally
' let's create a grid
NewScene
CreatePrim "Grid", "MeshSurface"
' now lets make the four corners red
ActivateRaycastPolySelTool
SelectGeometryComponents "grid.poly[0]"
AddToSelection "grid.poly[0,1,8,9]", , True
AddToSelection "grid.poly[48,49,56,57]", , True
AddToSelection "grid.poly[6,7,14,15]", , True
AddToSelection "grid.poly[54,55,62,LAST]", , True
set l_Shader = ApplyShader
SetValue "grid.polymsh.cls.Polygon.Material.Phong.diffuse.red", 1
SetValue "grid.polymsh.cls.Polygon.Material.Phong.diffuse.green", 0
SetValue "grid.polymsh.cls.Polygon.Material.Phong.diffuse.blue", 0
SetDisplayMode "Views.ViewA.TopCamera", "shaded"
' to make the remaining polygons green lets simply select
' all the polygons and use ClusterNonOverlapEnforcement with
' siRemoveFromSelectedClusters to not override the corners
SelectAllUsingFilter "Polygon", siCheckComponentVisibility
set l_Cluster = CreateCluster
ClusterNonOverlapEnforcement l_Cluster, "grid.polymsh.cls.Polygon.Material", siRemoveFromSelectedClusters
ApplyShader
SetValue "grid.polymsh.cls.Polygon1.Material.Phong.diffuse.red", 0
SetValue "grid.polymsh.cls.Polygon1.Material.Phong.diffuse.green", 1
SetValue "grid.polymsh.cls.Polygon1.Material.Phong.diffuse.blue", 0
' now to make the 4 polygons blue in the center
' lets use ClusterNonOverlapEnforcement this time with siRemoveFromExistingClusters
SelectGeometryComponents "grid.poly[27,28,35,36]"
set l_Cluster = CreateCluster
ClusterNonOverlapEnforcement l_Cluster, "grid.polymsh.cls.Polygon.Material", siRemoveFromExistingClusters
ApplyShader
SetValue "grid.polymsh.cls.Polygon2.Material.Phong.diffuse.red", 0
SetValue "grid.polymsh.cls.Polygon2.Material.Phong.diffuse.green", 0
SetValue "grid.polymsh.cls.Polygon2.Material.Phong.diffuse.blue", 1
DeselectAll

関連項目

ApplyShader