Auf Szenenknoten zugreifen (GUI und Headless)
Auf die Elemente der Szene kann über lux.getSceneTree() zugegriffen werden, wobei jeder Szenenbaumknoten vom Typ lux.SceneNode ist. Dies ist nützlich, da Sie für jeden Knoten ein-/ausblenden, sperren/entsperren, auswählen/abwählen, Material ändern, Transformationen anwenden, duplizieren, verschieben und mehr können. Probieren Sie help(lux.SceneNode) aus, um weitere Informationen zu erhalten.
Nehmen wir an, Sie wollten alle Knoten ausblenden, die “Cord” als Teil ihres Namens haben:
>>> root = lux.getSceneTree()
>>> for node in root.find(name = "Cord"):
node.hide()
Ein weiteres Beispiel könnte sein, dass Sie auf alle Gruppen mit dem Namen „Padding“ zugreifen und alle untergeordneten Knoten (in der Szene mit Umriss) auswählen möchten, deren Name „Ear Pad“ lautet:
>>> for node in root.find(name = "Padding", types = lux.NODE_TYPE_GROUP):
for ch in node.getChildren():
if ch.getName() == "Ear Pad":
ch.select()
Wenn Sie einige Teile ausgeblendet haben und einfach alles wieder zeigen möchten:
>>> root.show()
Anmerkung
Der Root-Knoten selbst ist ein lux.SceneNode, sodass auf ihm dieselben Funktionen aufgerufen werden können wie mit untergeordneten Knoten.
Auch ein Materialwechsel ist möglich. Um Umgebungsokklusion zu simulieren, können Sie Folgendes tun:
>>> for node in root.find(""):
node.setMaterial("Matte White")
Tipp
Verwenden Sie lux.SceneNode.find(“”), um einfach alles zu finden.
Knoten können wie im Szenenbaum per Drag-and-Drop in andere Gruppen verschoben werden. Im Folgenden finden wir die Gruppe „Headphone #1“ und verschieben alle Knoten dorthin, die ein Material mit „Padding“ darin verwenden.
>>> grp = root.find(name = "Headphone #1")[0] # Take first node of set.
>>> for node in root.find(mat = "Padding"):
node.moveToGroup(grp)
True