def init_ssos(self): """ Initialize the ssos.""" # load the actual sso objects from disk and do the default # Viewer initialization ssos = load_ssos(self.options['stimulus']) Viewer.init_ssos(self, ssos) # initialize the floor sso floor_path = os.path.join(CPO_PATH, "floors", "round-wooden-floor.cpo") self.floor = load_ssos([floor_path])[0] gso, = self.floor.descendants(type_=GSO) PSOStyler().apply(self.floor, "floor") GSOStyler(self.loader).apply(gso, "floor") self.floor.reparentTo(self.scene) self.floor.init_tree(tags=("model", "shape")) # give it a little extra ambient light alight = pm.AmbientLight('alight2') alight.setColor((0.6, 0.6, 0.6, 1.0)) alnp = self.lights.attachNewNode(alight) self.floor.setLight(alnp)
def __init__(self): """Initialise the test scene.""" # Show the framerate base.setFrameRateMeter(True) # Make 4 terrain nodepath objects with different hilliness values # and arrange them side-by-side in a 2x2 grid, giving a big terrain # with variable hilly and flat areas. color = (0.6, 0.8, 0.5, 1) # Bright green-ish scale = 12 t1 = Terrain(color=color, scale=scale, trees=0.7) t1.prime.reparentTo(render) t2 = Terrain(color=color, scale=scale, h=24, pos=P.Vec3(32 * scale, 0, 0), trees=0.5) t2.prime.reparentTo(render) t3 = Terrain(color=color, scale=scale, h=16, pos=P.Vec3(32 * scale, 32 * scale, 0), trees=0.3) t3.prime.reparentTo(render) t4 = Terrain(color=color, scale=scale, h=2, pos=P.Vec3(0, 32 * scale, 0), trees=0.9) t4.prime.reparentTo(render) # Setup a camera. base.disableMouse() self.camera = Camera(P.Vec3(0, 0, 100)) self.camera.lookAt(320, 320, 0) # Setup keyboard controls. # Accept some keys to move the camera. self.accept("a", self.camera.setControl, ["left", 1]) self.accept("a-up", self.camera.setControl, ["left", 0]) self.accept("d", self.camera.setControl, ["right", 1]) self.accept("d-up", self.camera.setControl, ["right", 0]) self.accept("w", self.camera.setControl, ["up", 1]) self.accept("w-up", self.camera.setControl, ["up", 0]) self.accept("s", self.camera.setControl, ["down", 1]) self.accept("s-up", self.camera.setControl, ["down", 0]) self.accept("arrow_up", self.camera.setControl, ["forward", 1]) self.accept("arrow_up-up", self.camera.setControl, ["forward", 0]) self.accept("arrow_down", self.camera.setControl, ["backward", 1]) self.accept("arrow_down-up", self.camera.setControl, ["backward", 0]) self.accept("arrow_left", self.camera.setControl, ["strafe-left", 1]) self.accept("arrow_left-up", self.camera.setControl, ["strafe-left", 0]) self.accept("arrow_right", self.camera.setControl, ["strafe-right", 1]) self.accept("arrow_right-up", self.camera.setControl, ["strafe-right", 0]) # Accept the Esc key to exit. self.accept("escape", sys.exit) # Setup lighting. self.alight = P.AmbientLight('alight') self.alight.setColor(P.VBase4(0.35, 0.35, 0.35, 1)) self.alnp = render.attachNewNode(self.alight) render.setLight(self.alnp) self.dlight = P.DirectionalLight('dlight') self.dlight.setColor(P.VBase4(0.4, 0.4, 0.4, 1)) self.dlnp = render.attachNewNode(self.dlight) self.dlnp.setHpr(45, -45, 0) render.setLight(self.dlnp) self.plight = P.PointLight('plight') self.plight.setColor(P.VBase4(0.8, 0.8, 0.5, 1)) self.plnp = render.attachNewNode(self.plight) self.plnp.setPos(160, 160, 50) self.slight = P.Spotlight('slight') self.slight.setColor(P.VBase4(1, 1, 1, 1)) lens = P.PerspectiveLens() self.slight.setLens(lens) self.slnp = render.attachNewNode(self.slight) self.slnp.setPos(-20, -20, 20) self.slnp.lookAt(50, 50, 0) # Setup some scene-wide exponential fog. colour = (0.5, 0.8, 0.8) self.expfog = P.Fog("Scene-wide exponential Fog object") self.expfog.setColor(*colour) self.expfog.setExpDensity(0.0005) render.setFog(self.expfog) base.setBackgroundColor(*colour)