Open topic with navigation
Scene basics
A Vizard script can create multiple scenes, each with its own set of
objects. When multiple scenes have been created, you can flip back and
forth between them by setting the scene that's currently being rendered.
By default things are added to the first scene (scene 1). You need to
use viz.addScene
if you want more than the default 6 scenes.
#Add an object to scene 1 (default)
duck = viz.addChild('duck.wrl')
duck.setPosition([1,1,5])
#Add an object to scene 2
wheelbarrow = viz.addChild('wheelbarrow.ive', scene=viz.Scene2)
wheelbarrow.setPosition([-1,1,5])
#Add keypresses to change between scenes 1 and 2
vizact.onkeydown( '1', viz.MainWindow.setScene, viz.Scene1 )
vizact.onkeydown( '2', viz.MainWindow.setScene, viz.Scene2 )
Duplicating, copying and cloning to another scene
You can copy, duplicate or clone an object to a different scene. The
duplicate of an object (<node3d>.addParent(<parent>,<scene>))
will appear in the specified scene. Any transforms or changes in appearance
to the original object will also be applied to the duplicate. If you copy
an object to another scene, the copy ((<node3d>.copy()) will have the appearance
of the original object when it was created but any subsequent changes
to the original object's appearance will not effect the copy in the other
scene. Copies are created independent of any position, orientation or
scale transforms applied to the original object. So, even if you create
a copy of an object that's 2 meters about the origin, the copy will appear
at the origin. Clones (<node3d>.clone())
share the appearance of each other such that changing the appearance to
any one clone will change the appearance of all the clones (although all
their position, orientation, and scale transforms will be independent).
#Add a model to scene 1 (default)
soccerball = viz.addChild('soccerball.ive')
#Add a copy to scene 2
soccerballCopy = soccerball.copy(scene=viz.Scene2)
#Duplicate to scene 3
soccerball.addParent(viz.WORLD, scene=viz.Scene3)
#Add a clone to scene 4
soccerballClone = soccerball.clone(scene=viz.Scene4)
#Change the appearance of the original
soccerball.color(viz.RED)
#Apply a transform to the original
soccerball.addAction( vizact.spin(0, 1, 0, 90, viz.FOREVER) )
#Use number keys to switch scenes
for i in range(1,5):
vizact.onkeydown( str(i), viz.MainWindow.setScene, i )
Windows on different scenes
You can also use different subwindows to render different scenes.
#Set the main window's scene to 2
viz.MainWindow.setScene(viz.Scene2)
#Add a subwindow set on scene 1
duckWindow = viz.addWindow()
duckView = viz.addView()
duckWindow.setScene(viz.Scene1)
duckWindow.setView(duckView)
See also
In this section:
Adding fog
Scene Command Table
Other sections:
Viewpoints & windows basics
Window basics
Tutorial: 360 panoramas