def addDemoLight(self): """ Spawns a new light at a random position with a random color """ light = PointLight() spot = self.cam.getPos(self.render) light.setPos(spot) light.setRadius(45) light.setColor(Vec3(1.3,1.05,0.9) * 2.0) light.setShadowMapResolution(512) light.setCastsShadows(True) self.renderPipeline.addLight(light) self.demoLights.append(light)
def addDemoLight(self): """ Spawns a new light at a random position with a random color """ light = PointLight() spot = self.cam.getPos(self.render) light.setPos(spot) light.setRadius(45) light.setColor(Vec3(1.3, 1.05, 0.9) * 2.0) light.setShadowMapResolution(512) light.setCastsShadows(True) self.renderPipeline.addLight(light) self.demoLights.append(light)
def addDemoLight(self): """ Spawns a new light at a random position with a random color """ light = PointLight() light.setPos(Vec3( random() * 50.0 - 25, random() * 50.0 - 25, 12)) light.setColor(Vec3( random(), random(), random()) * 5.0) light.setRadius(50) light.setShadowMapResolution(1024) # light.attachDebugNode(render) light.setCastsShadows(True) self.renderPipeline.addLight(light) self.demoLights.append(light)
def loadLights(self, scene): """ Loads lights from a .egg. Lights should be empty objects (blender) """ model = self.loader.loadModel(scene) lights = model.findAllMatches("**/PointLight*") for prefab in lights: light = PointLight() light.setRadius(prefab.getScale().x) light.setColor(Vec3(2)) light.setPos(prefab.getPos()) light.setShadowMapResolution(2048) light.setCastsShadows(False) self.renderPipeline.addLight(light) print "Adding Light:", prefab.getPos(), prefab.getScale() self.lights.append(light) self.initialLightPos.append(prefab.getPos()) self.test = light
def __init__(self): DebugObject.__init__(self, "Main") self.debug("Bit System =", 8 * struct.calcsize("P")) # Load engine configuration self.debug("Loading panda3d configuration from configuration.prc ..") loadPrcFile("Config/configuration.prc") # Init the showbase ShowBase.__init__(self) # Show loading screen self.loadingScreen = PipelineLoadingScreen(self) self.loadingScreen.render() self.loadingScreen.setStatus("Creating pipeline", 10) # Create the render pipeline self.debug("Creating pipeline") self.renderPipeline = RenderingPipeline(self) # Uncomment to use temp directory # writeDirectory = tempfile.mkdtemp(prefix='Shader-tmp') writeDirectory = "Temp/" # Set the pipeline base path self.renderPipeline.getMountManager().setBasePath(".") # Load pipeline settings self.renderPipeline.loadSettings("Config/pipeline.ini") self.loadingScreen.setStatus("Compiling shaders", 20) # Create the pipeline, and enable scattering self.renderPipeline.create() ####### END OF RENDER PIPELINE SETUP ####### # Select demo scene here: # This sources are not included in the repo, for size reasons # self.sceneSource = "Demoscene.ignore/MasterSword/Scene.egg" # self.sceneSource = "Demoscene.ignore/MasterSword/Scene2.egg.bam" # self.sceneSource = "Demoscene.ignore/Couch2/Scene.egg" # self.sceneSource = "Demoscene.ignore/Couch/couch.egg.bam" # self.sceneSource = "Demoscene.ignore/LivingRoom/LivingRoom.egg" # self.sceneSource = "Demoscene.ignore/LivingRoom2/LivingRoom.egg" # self.sceneSource = "Demoscene.ignore/LostEmpire/Model.egg" # self.sceneSource = "Demoscene.ignore/SSLRTest/scene.egg" # self.sceneSource = "Demoscene.ignore/BMW/Bmw.egg" # self.sceneSource = "Demoscene.ignore/Tuscany/Tuscany.egg" # self.sceneSource = "Demoscene.ignore/EiffelTower/Scene.bam" # self.sceneSource = "Demoscene.ignore/HarvesterModel/Model.egg" # self.sceneSource = "Demoscene.ignore/OldHouse/Scene.egg" # self.sceneSource = "Demoscene.ignore/DemoTerrain/Scene.egg" # self.sceneSource = "Demoscene.ignore/TransparencyTest/Scene.egg" # self.sceneSource = "Demoscene.ignore/SanMiguel/Scene.bam" # self.sceneSource = "Demoscene.ignore/DabrovicSponza/Scene.egg" # self.sceneSource = "Demoscene.ignore/Avolition/level5.bam" # self.sceneSource = "Demoscene.ignore/Sphere/Scene.bam" # self.sceneSource = "Demoscene.ignore/Alphatest/alphatest.egg" # self.sceneSource = "Demoscene.ignore/TestScene/Test.bam" # This sources are included in the repo # self.sceneSource = "Models/CornelBox/Model.egg" # self.sceneSource = "Models/HouseSet/Model.egg" # self.sceneSource = "Models/PSSMTest/Model.egg.bam" # self.sceneSource = "Models/PBSTest/Scene.egg.bam" # self.sceneSource = "Models/HDRTest/Scene.egg" # self.sceneSource = "Models/GITestScene/Scene.egg" # self.sceneSource = "Models/VertexPerformanceTest/Scene.egg" # self.sceneSource = "Toolkit/Blender Material Library/MaterialLibrary.egg" self.sceneSource = "panda" # Select surrounding scene here self.sceneSourceSurround = None # self.sceneSourceSurround = "Demoscene.ignore/Couch/Surrounding.egg" # self.sceneSourceSurround = "Demoscene.ignore/LivingRoom/LivingRoom.egg" # self.sceneSourceSurround = "Models/LittleHouse/couch.bam" # Store a list of transparent objects self.transparentObjects = [] # Create a sun light dPos = Vec3(60, 30, 100) if True: dirLight = DirectionalLight() dirLight.setPos(dPos * 100000.0) dirLight.setShadowMapResolution(2048) dirLight.setColor(Vec3(1.1, 1.05, 0.9) * 3.0) dirLight.setCastsShadows(True) dirLight.setPssmDistance(140) self.renderPipeline.addLight(dirLight) self.dirLight = dirLight # Tell the GI which light casts the GI self.renderPipeline.setScatteringSource(dirLight) # Slider to move the sun if self.renderPipeline.settings.displayOnscreenDebugger: self.renderPipeline.guiManager.demoSlider.node[ "command"] = self.setSunPos self.renderPipeline.guiManager.demoSlider.node[ "value"] = 50 self.lastSliderValue = 0.5 self.movingLights = [] self.demoLights = [] # Create some lights for i in xrange(0): pointLight = PointLight() radius = float(i) / 3.0 * 6.28 + 1.52 xoffs = i * 3.0 yoffs = math.cos(radius) * 0.0 pointLight.setPos(0, 0, 15) pointLight.setColor(Vec3(0.2,0.6,1.0)*6) pointLight.setShadowMapResolution(512) pointLight.setRadius(18) pointLight.setCastsShadows(True) self.renderPipeline.addLight(pointLight) # pointLight.attachDebugNode(render) # self.movingLights.append(pointLight) # Create more lights for i in xrange(0): pointLight = PointLight() radius = float(i) / 12.0 * 6.28 + 5.22 xoffs = math.sin(radius) * 50.0 yoffs = math.cos(radius) * 50.0 pointLight.setPos(Vec3( xoffs, yoffs, 12)) # pointLight.setColor(Vec3(0.2,0.6,1.0) * 0.05) pointLight.setColor(random(), random(), random()) pointLight.setRadius(90) self.renderPipeline.addLight(pointLight) # pointLight.attachDebugNode(render) for x in xrange(0): spotLight = SpotLight() spotLight.setColor(Vec3(0.5, 0.8, 1.0) * 0.3) lightPos = Vec3(math.sin(x/10.0 * 6.28) * 16.0, math.cos(x/10.0 * 6.28) * 16.0, 29.0) spotLight.setPos(lightPos) spotLight.lookAt(lightPos - Vec3(0, 0, 1)) spotLight.setFov(90) spotLight.setShadowMapResolution(1024) spotLight.setCastsShadows(True) spotLight.setNearFar(2.0, 60.0) spotLight.setIESProfile("AreaLight") self.renderPipeline.addLight(spotLight) # spotLight.attachDebugNode(render) # self.movingLights.append(spotLight) # Attach update task self.addTask(self.update, "update") # Update loading screen status self.loadingScreen.setStatus("Loading scene", 55) # Show loading screen a bit if True: self.doMethodLater(0.5, self.loadScene, "Load Scene") else: self.loadScene()
def __init__(self): DebugObject.__init__(self, "Main") self.debug("Bit System =", 8 * struct.calcsize("P")) # Load engine configuration self.debug("Loading panda3d configuration from configuration.prc ..") loadPrcFile("Config/configuration.prc") # Init the showbase ShowBase.__init__(self) # Show loading screen self.loadingScreen = PipelineLoadingScreen(self) self.loadingScreen.render() self.loadingScreen.setStatus("Creating pipeline", 10) # Create the render pipeline self.debug("Creating pipeline") self.renderPipeline = RenderingPipeline(self) # Uncomment to use temp directory # writeDirectory = tempfile.mkdtemp(prefix='Shader-tmp') writeDirectory = "Temp/" # Set the pipeline base path self.renderPipeline.getMountManager().setBasePath(".") # Load pipeline settings self.renderPipeline.loadSettings("Config/pipeline.ini") self.loadingScreen.setStatus("Compiling shaders", 20) # Create the pipeline, and enable scattering self.renderPipeline.create() ####### END OF RENDER PIPELINE SETUP ####### # Select demo scene here: # This sources are not included in the repo, for size reasons # self.sceneSource = "Demoscene.ignore/MasterSword/Scene.egg" # self.sceneSource = "Demoscene.ignore/MasterSword/Scene2.egg.bam" # self.sceneSource = "Demoscene.ignore/Couch2/Scene.egg" # self.sceneSource = "Demoscene.ignore/Couch/couch.egg.bam" # self.sceneSource = "Demoscene.ignore/LittleHouse/Scene.bam" # self.sceneSource = "Demoscene.ignore/LivingRoom/LivingRoom.egg" # self.sceneSource = "Demoscene.ignore/LivingRoom2/LivingRoom.egg" # self.sceneSource = "Demoscene.ignore/LostEmpire/Model.egg" # self.sceneSource = "Demoscene.ignore/SSLRTest/scene.egg" # self.sceneSource = "Demoscene.ignore/BMW/Bmw.egg" # self.sceneSource = "Demoscene.ignore/Tuscany/Tuscany.egg" # self.sceneSource = "Demoscene.ignore/EiffelTower/Scene.bam" # self.sceneSource = "Demoscene.ignore/HarvesterModel/Model.egg" # self.sceneSource = "Demoscene.ignore/AudiR8/Scene.bam" # self.sceneSource = "Demoscene.ignore/OldHouse/Scene.egg" # self.sceneSource = "Demoscene.ignore/DemoTerrain/Scene.egg" # self.sceneSource = "Demoscene.ignore/TransparencyTest/Scene.egg" # self.sceneSource = "Demoscene.ignore/SanMiguel/Scene.bam" self.sceneSource = "Demoscene.ignore/DabrovicSponza/Scene.egg" # self.sceneSource = "Demoscene.ignore/Sponza/sponza.egg.bam" # self.sceneSource = "Demoscene.ignore/Avolition/level5.bam" # self.sceneSource = "Demoscene.ignore/Sphere/Scene.bam" # self.sceneSource = "Demoscene.ignore/Alphatest/Scene.bam" # self.sceneSource = "Demoscene.ignore/TestScene/Test.bam" # self.sceneSource = "Demoscene.ignore/BokehTest/Scene.egg" # This sources are included in the repo # self.sceneSource = "Models/CornelBox/Model.egg" # self.sceneSource = "Models/HouseSet/Model.egg" # self.sceneSource = "Models/PSSMTest/Model.egg.bam" # self.sceneSource = "Models/PBSTest/Scene.egg.bam" # self.sceneSource = "Models/HDRTest/Scene.egg" # self.sceneSource = "Models/GITestScene/Scene.egg" # self.sceneSource = "Toolkit/Blender Material Library/MaterialLibrary.bam" # self.sceneSource = "panda" # Select surrounding scene here self.sceneSourceSurround = None # self.sceneSourceSurround = "Demoscene.ignore/Couch/Surrounding.egg" # self.sceneSourceSurround = "Demoscene.ignore/LivingRoom/LivingRoom.egg" # Wheter to create the default ground plane self.usePlane = False # Store a list of transparent objects self.transparentObjects = [] # Create a sun light dPos = Vec3(60, 30, 100) if True: dirLight = DirectionalLight() dirLight.setPos(dPos * 100000.0) dirLight.setShadowMapResolution(2048) dirLight.setColor(Vec3(1.0, 1.0, 1.0) * 5.0) dirLight.setCastsShadows(True) dirLight.setPssmDistance(140) self.renderPipeline.addLight(dirLight) self.dirLight = dirLight # Tell the GI which light casts the GI self.renderPipeline.setScatteringSource(dirLight) # Slider to move the sun if self.renderPipeline.settings.displayOnscreenDebugger: self.renderPipeline.guiManager.demoSlider.node[ "command"] = self.setSunPos self.renderPipeline.guiManager.demoSlider.node["value"] = 89 self.lastSliderValue = 0.5 self.movingLights = [] self.demoLights = [] # Create some lights for i in xrange(5): continue pointLight = PointLight() radius = float(i) / 3.0 * 6.28 + 1.52 xoffs = (i - 3) * 10.0 yoffs = math.cos(radius) * 0.0 pointLight.setPos(xoffs, 0, 8) # pointLight.setColor(Vec3(0.2,0.6,1.0)*6) pointLight.setColor(Vec3(random(), random(), random()) * 3) pointLight.setShadowMapResolution(512) pointLight.setRadius(18) pointLight.setCastsShadows(True) self.renderPipeline.addLight(pointLight) pointLight.attachDebugNode() # self.movingLights.append(pointLight) # Create more lights for i in xrange(0): pointLight = PointLight() radius = float(i) / 12.0 * 6.28 + 5.22 xoffs = math.sin(radius) * 50.0 yoffs = math.cos(radius) * 50.0 pointLight.setPos(Vec3(xoffs, yoffs, 12)) # pointLight.setColor(Vec3(0.2,0.6,1.0) * 0.05) pointLight.setColor(random(), random(), random()) pointLight.setRadius(90) self.renderPipeline.addLight(pointLight) # pointLight.attachDebugNode(render) for x in xrange(0): spotLight = SpotLight() spotLight.setColor(Vec3(0.5, 0.8, 1.0) * 0.3) lightPos = Vec3( math.sin(x / 10.0 * 6.28) * 16.0, math.cos(x / 10.0 * 6.28) * 16.0, 29.0) spotLight.setPos(lightPos) spotLight.lookAt(lightPos - Vec3(0, 0, 1)) spotLight.setFov(90) spotLight.setShadowMapResolution(1024) spotLight.setCastsShadows(True) spotLight.setNearFar(2.0, 60.0) spotLight.setIESProfile("AreaLight") self.renderPipeline.addLight(spotLight) # spotLight.attachDebugNode(render) # self.movingLights.append(spotLight) # Attach update task self.addTask(self.update, "update") # Update loading screen status self.loadingScreen.setStatus("Loading scene", 55) # Show loading screen a bit if False: self.doMethodLater(0.5, self.loadScene, "Load Scene") else: self.loadScene()