Stage以下をTraverseする
ipynbFile Traverse_01__Stage以下をTraverseする.ipynb
In [1]:
In [3]:
| layer = Sdf.Layer.FindOrOpen(r"D:\Kitchen_set\Kitchen_set.usd")
stage = Usd.Stage.Open(layer)
|
In [4]:
| defaultPrim = stage.GetDefaultPrim()
print(defaultPrim)
|
In [6]:
| # シーン以下をTranverseする
# Traverse すれば、全PrimをTraverseできる。
allPrim = [x for x in stage.Traverse()]
print(len(allPrim))
|
In [8]:
| # Unloadした状態
# Unloadしているので、PayloadsのPrim以下は表示されていない。
stageB = Usd.Stage.Open(r"D:\Kitchen_set\Kitchen_set.usd",Usd.Stage.LoadNone)
for i in stageB.Traverse():
print(i)
|
Success
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 | Usd.Prim(</Kitchen_set>)
Usd.Prim(</Kitchen_set/Arch_grp>)
Usd.Prim(</Kitchen_set/Props_grp>)
Usd.Prim(</Kitchen_set/Props_grp/North_grp>)
Usd.Prim(</Kitchen_set/Props_grp/North_grp/NorthWall_grp>)
Usd.Prim(</Kitchen_set/Props_grp/North_grp/SinkArea_grp>)
Usd.Prim(</Kitchen_set/Props_grp/North_grp/SinkArea_grp/Cupboard_grp>)
Usd.Prim(</Kitchen_set/Props_grp/North_grp/SinkArea_grp/Cupboard_grp/WallFruits_set>)
Usd.Prim(</Kitchen_set/Props_grp/North_grp/SinkArea_grp/Cupboard_grp/WallFruits_set/WallApples_grp>)
Usd.Prim(</Kitchen_set/Props_grp/North_grp/SinkArea_grp/Cupboard_grp/WallFruits_set/WallBanana_grp>)
Usd.Prim(</Kitchen_set/Props_grp/North_grp/SinkArea_grp/Cupboard_grp/WallFruits_set/WallFlower_grp>)
Usd.Prim(</Kitchen_set/Props_grp/North_grp/SinkArea_grp/Cupboard_grp/WallFruits_set/WallOrange_grp>)
Usd.Prim(</Kitchen_set/Props_grp/North_grp/SinkArea_grp/CookingUtensils_grp>)
Usd.Prim(</Kitchen_set/Props_grp/North_grp/SinkArea_grp/DryingRack_grp>)
Usd.Prim(</Kitchen_set/Props_grp/North_grp/SinkArea_grp/Sink_grp>)
Usd.Prim(</Kitchen_set/Props_grp/North_grp/SinkArea_grp/Countertop_grp>)
Usd.Prim(</Kitchen_set/Props_grp/North_grp/SinkArea_grp/SinkFloor_grp>)
Usd.Prim(</Kitchen_set/Props_grp/North_grp/StoveArea_grp>)
Usd.Prim(</Kitchen_set/Props_grp/North_grp/FridgeArea_grp>)
Usd.Prim(</Kitchen_set/Props_grp/West_grp>)
Usd.Prim(</Kitchen_set/Props_grp/West_grp/WestWall_grp>)
Usd.Prim(</Kitchen_set/Props_grp/West_grp/FoldingTable_grp>)
Usd.Prim(</Kitchen_set/Props_grp/DiningTable_grp>)
Usd.Prim(</Kitchen_set/Props_grp/DiningTable_grp/TableTop_grp>)
Usd.Prim(</Kitchen_set/Props_grp/DiningTable_grp/TableTop_grp/CerealBowl_grp>)
Usd.Prim(</Kitchen_set/Props_grp/DiningTable_grp/TableTop_grp/CerealBowl_grp/Cheerios_grp>)
Usd.Prim(</Kitchen_set/Props_grp/Ceiling_grp>)
|
In [15]:
| # Unloadしているけど、PayloadsがあるPrimを表示したい場合は
# GetFilteredChildren を使用してフィルタリングする。
prims = []
def Traverse(prim,ret):
ret.append(prim)
for c in prim.GetFilteredChildren(Usd.PrimIsActive & Usd.PrimIsDefined & ~Usd.PrimIsAbstract):
Traverse(c,ret)
|
In [16]:
| Traverse(stageB.GetDefaultPrim(),prims)
print(len(prims))
|