指定のプロパティ タイプ(たとえば、マテリアル)のコンテキスト内でクラスタがオーバーラップした場合のあいまいさを解決します。$$$マテリアル)。 このコマンドは、主に ApplyShader によって使用されます。
選択したクラスタからオーバーラップを削除したり、既存のクラスタからオーバーラップを削除したり、オーバーラップしたままにすることができます。
oReturn = ClusterNonOverlapEnforcement( InputObjs, Property, ActionWhenLocalMaterialsOverlap ); |
ターゲット クラスタとオーバーラップすることが検出されたクラスタを含む XSICollection を戻します。
パラメータ | タイプ | 説明 |
---|---|---|
InputObjs | 文字列 |
(選択されている可能性の高い)クラスタのリスト。このリストに従って、すべてのクラスタのオーバーラップをテストします。 デフォルト値: 現在選択されている値 |
Property | 文字列 | テスト対象とする既存のクラスタが持つ必要のある、プロパティの例。 |
ActionWhenLocalMaterialsOverlap | siActionWhenLocalMaterialsOverlap |
ターゲット クラスタとオーバーラップすることが検出された場合の、クラスタの処理。 デフォルト値: siRemoveFromSelectedClusters |
' 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 |