本文整理汇总了Python中Code.RenderingPipeline.RenderingPipeline.setEffect方法的典型用法代码示例。如果您正苦于以下问题:Python RenderingPipeline.setEffect方法的具体用法?Python RenderingPipeline.setEffect怎么用?Python RenderingPipeline.setEffect使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Code.RenderingPipeline.RenderingPipeline
的用法示例。
在下文中一共展示了RenderingPipeline.setEffect方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: Main
# 需要导入模块: from Code.RenderingPipeline import RenderingPipeline [as 别名]
# 或者: from Code.RenderingPipeline.RenderingPipeline import setEffect [as 别名]
#.........这里部分代码省略.........
# Create a sun light
dPos = Vec3(60, 30, 100)
dirLight = DirectionalLight()
dirLight.setShadowMapResolution(1024)
dirLight.setPos(dPos)
dirLight.setColor(Vec3(1))
dirLight.setPssmTarget(base.cam, base.camLens)
dirLight.setPssmDistance(50.0)
dirLight.setCastsShadows(True)
self.renderPipeline.addLight(dirLight)
self.dirLight = dirLight
sunPos = Vec3(56.7587, -31.3601, 189.196)
self.dirLight.setPos(sunPos)
# Tell the GI which light casts the GI
self.renderPipeline.setGILightSource(dirLight)
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"] = 20
self.lastSliderValue = 0.0
# Load skyboxn
self.skybox = self.renderPipeline.getDefaultSkybox()
self.skybox.reparentTo(render)
self.renderPipeline.setEffect(self.model, "DynamicMaterial.effect")
self.renderPipeline.onSceneInitialized()
self.createGUI()
def createGUI(self):
self.slider_opts = {
"roughness": {
"name": "Roughness",
"min": 0.0001,
"max": 1.0,
"default": 0.4,
},
"metallic": {
"name": "Metallic",
"min": 0.0001,
"max": 1.0,
"default": 0.0,
},
"specular": {
"name": "Specular",
"min": 0.0001,
"max": 1.0,
"default": 0.5,
},
"basecolor_r": {
"name": "Base Color [Red]",
"min": 0.0001,
"max": 1.0,
"default": 1.0,
"color": Vec3(1,0.2,0.2)
示例2: App
# 需要导入模块: from Code.RenderingPipeline import RenderingPipeline [as 别名]
# 或者: from Code.RenderingPipeline.RenderingPipeline import setEffect [as 别名]
class App(ShowBase):
def __init__(self):
# Load the default configuration.prc. This is recommended, as it
# contains some important panda options
loadPrcFile("../../Config/configuration.prc")
# Init the showbase
ShowBase.__init__(self)
# Create a new pipeline instance
self.renderPipeline = RenderingPipeline(self)
# Set the base path for the pipeline. This is required as we are in
# a subdirectory
self.renderPipeline.getMountManager().setBasePath("../../")
# Also set the write path
self.renderPipeline.getMountManager().setWritePath("../../Temp/")
# Load the default settings
self.renderPipeline.loadSettings("../../Config/pipeline.ini")
# Disable scattering
self.renderPipeline.settings.enableScattering = False
# Now create the pipeline
self.renderPipeline.create()
# Load skybox
self.skybox = self.renderPipeline.getDefaultSkybox()
self.skybox.reparentTo(render)
base.disableMouse()
self.scene = loader.loadModel("models/level_a1.bam")
self.scene.reparentTo(render)
base.cam.setPos(0, 0, 15)
base.cam.lookAt(0,5,5)
self.actor = render.attachNewNode("actor")
self.actorModel = Actor('models/male.egg', {
'walk':'models/male2_walk.egg',
})
self.actorModel.setScale(0.03)
self.actorModel.setH(-90)
self.actorModel.reparentTo(self.actor)
self.actorModel.loop("walk")
self.actorModel.setBlend(frameBlend = True)
self.renderPipeline.setEffect(self.actorModel, "Effects/Default/Default.effect", {
"dynamic": True
})
self.accept("w", self.setMovementX, [1])
self.accept("w-repeat", self.setMovementX, [1])
self.accept("w-up", self.setMovementX, [0])
self.accept("a", self.setMovementY, [1])
self.accept("a-repeat", self.setMovementY, [1])
self.accept("a-up", self.setMovementY, [0])
self.accept("d", self.setMovementY, [-1])
self.accept("d-repeat", self.setMovementY, [-1])
self.accept("d-up", self.setMovementY, [0])
lightPositions = [
(Vec3(0, 0, 20), Vec3(1.0,0.5,0.3)),
(Vec3(50, 5, 20), Vec3(1.0,0.5,0.3)),
(Vec3(10, 70, 20), Vec3(1.0,0.5,0.3)),
]
for pos, col in lightPositions:
light = SpotLight()
light.setPos(pos)
light.lookAt(Vec3(0,0,0))
light.setColor(col * 0.2)
light.setNearFar(1.0, 50)
light.setFov(140)
light.setIESProfile("XSplit")
light.setShadowMapResolution(1024)
light.setCastsShadows(True)
self.renderPipeline.addLight(light)
self.movement = [0, 0]
self.addTask(self.update, "update")
# Call this to tell the pipeline that the scene is done loading
self.renderPipeline.onSceneInitialized()
self.accept("r", self.renderPipeline.reloadShaders)
def setMovementX(self, directionX):
self.movement[0] = directionX
#.........这里部分代码省略.........
示例3: Main
# 需要导入模块: from Code.RenderingPipeline import RenderingPipeline [as 别名]
# 或者: from Code.RenderingPipeline.RenderingPipeline import setEffect [as 别名]
#.........这里部分代码省略.........
# self.sceneSurround.setPos(0, -4.7, 0.73)
seed(1)
# Performance testing
if False:
highPolyObj = self.scene.find("**/HighPolyObj")
if highPolyObj is not None and not highPolyObj.isEmpty():
# highPolyObj.detachNode()
self.loadingScreen.setStatus("Preparing Performance Test", 75)
for x in xrange(0, 20):
# for y in xrange(0, 1):
if True:
y = 5
copiedObj = copy.deepcopy(highPolyObj)
copiedObj.setColorScale(random(), random(), random(), 1)
# if random() < 0.2:
# copiedObj.setColorScale(0.4, 1.2, 2.0, 1.0)
copiedObj.reparentTo(self.scene)
copiedObj.setPos(x*1.5 + random(), y*1.5 + random(), random()*5.0 + 0.4)
# Find transparent objects and mark them as transparent
if self.renderPipeline.settings.useTransparency:
self.transpObjRoot = render.attachNewNode("transparentObjects")
matches = self.scene.findAllMatches("**/T__*")
if matches:
for match in matches:
# match.hide()
# continue
self.transparentObjects.append(match)
self.renderPipeline.setEffect(match, "Effects/Default/Default.effect", {
"transparent": True
})
match.setAttrib(CullFaceAttrib.make(CullFaceAttrib.M_none))
for i in ["53", "54", "55", "56", "57"]:
matches = self.scene.findAllMatches("**/" + i)
for match in matches:
match.remove()
# Wheter to use a ground plane
self.usePlane = True
self.sceneWireframe = False
# Flatten scene?
self.loadingScreen.setStatus("Optimizing Scene", 90)
# self.scene.clearModelNodes()
# loader.asyncFlattenStrong(self.scene, inPlace=False, callback=self.onScenePrepared)
self.onScenePrepared()
def onScenePrepared(self, cb=None):
""" Callback which gets called after the scene got prepared """
self.scene.reparentTo(self.render)
# Prepare textures with SRGB format
self.prepareSRGB(self.scene)
# Prepare Materials
self.renderPipeline.fillTextureStages(render)
# Load ground plane if configured
示例4: World
# 需要导入模块: from Code.RenderingPipeline import RenderingPipeline [as 别名]
# 或者: from Code.RenderingPipeline.RenderingPipeline import setEffect [as 别名]
class World(ShowBase):
def __init__(self):
# Load the default configuration.prc. This is recommended, as it
# contains some important panda options
loadPrcFile("../../Config/configuration.prc")
ShowBase.__init__(self)
# Create a new pipeline instance
self.renderPipeline = RenderingPipeline(self)
# Set the base path for the pipeline. This is required as we are in
# a subdirectory
self.renderPipeline.getMountManager().setBasePath("../../")
# Also set the write path
self.renderPipeline.getMountManager().setWritePath("../../Temp/")
# Load the default settings
self.renderPipeline.loadSettings("../../Config/pipeline.ini")
# Now create the pipeline
self.renderPipeline.create()
# Add a directional light
dPos = Vec3(40, 40, 15)
dirLight = DirectionalLight()
dirLight.setPos(dPos * 1000000.0)
dirLight.setShadowMapResolution(1024)
dirLight.setCastsShadows(True)
dirLight.setColor(Vec3(8))
self.renderPipeline.addLight(dirLight)
self.renderPipeline.setScatteringSource(dirLight)
self.dirLight = dirLight
self.keyMap = {
"left": 0, "right": 0, "forward": 0, "cam-left": 0, "cam-right": 0}
base.win.setClearColor(Vec4(0, 0, 0, 1))
# Post the instructions
self.title = addTitle(
"Panda3D Tutorial: Roaming Ralph (Walking on Uneven Terrain)")
self.inst1 = addInstructions(0.95, "[ESC]: Quit")
self.inst2 = addInstructions(0.90, "[Left Arrow]: Rotate Ralph Left")
self.inst3 = addInstructions(0.85, "[Right Arrow]: Rotate Ralph Right")
self.inst4 = addInstructions(0.80, "[Up Arrow]: Run Ralph Forward")
self.inst6 = addInstructions(0.70, "[A]: Rotate Camera Left")
self.inst7 = addInstructions(0.65, "[S]: Rotate Camera Right")
# Set up the environment
# This environment model contains collision meshes. If you look
# in the egg file, you will see the following:
#
# <Collide> { Polyset keep descend }
#
# This tag causes the following mesh to be converted to a collision
# mesh -- a mesh which is optimized for collision, not rendering.
# It also keeps the original mesh, so there are now two copies ---
# one optimized for rendering, one for collisions.
self.environ = loader.loadModel("models/world")
self.environ.reparentTo(render)
self.environ.setPos(0, 0, 0)
self.environ.find("**/wall").removeNode()
# Create the main character, Ralph
ralphStartPos = self.environ.find("**/start_point").getPos()
self.ralph = Actor("models/ralph",
{"run": "models/ralph-run",
"walk": "models/ralph-walk"})
self.ralph.reparentTo(render)
self.ralph.setScale(.2)
self.ralph.setPos(ralphStartPos)
self.renderPipeline.setEffect(self.ralph, "Effects/Default/Default.effect", {
"dynamic": True
})
# Create a floater object. We use the "floater" as a temporary
# variable in a variety of calculations.
self.floater = NodePath(PandaNode("floater"))
self.floater.reparentTo(render)
# Accept the control keys for movement and rotation
self.accept("escape", sys.exit)
self.accept("arrow_left", self.setKey, ["left", 1])
self.accept("arrow_right", self.setKey, ["right", 1])
self.accept("arrow_up", self.setKey, ["forward", 1])
self.accept("a", self.setKey, ["cam-left", 1])
self.accept("s", self.setKey, ["cam-right", 1])
self.accept("arrow_left-up", self.setKey, ["left", 0])
self.accept("arrow_right-up", self.setKey, ["right", 0])
#.........这里部分代码省略.........
示例5: World
# 需要导入模块: from Code.RenderingPipeline import RenderingPipeline [as 别名]
# 或者: from Code.RenderingPipeline.RenderingPipeline import setEffect [as 别名]
class World(ShowBase):
def __init__(self):
# Load the default configuration.prc. This is recommended, as it
# contains some important panda options
loadPrcFile("../../Config/configuration.prc")
ShowBase.__init__(self)
# Create a new pipeline instance
self.renderPipeline = RenderingPipeline(self)
# Set the base path for the pipeline. This is required as we are in
# a subdirectory
self.renderPipeline.getMountManager().setBasePath("../../")
# Also set the write path
#self.renderPipeline.getMountManager().setWritePath("../../Temp/")
# Load the default settings
self.renderPipeline.loadSettings("../../Config/pipeline.ini")
# Now create the pipeline
self.renderPipeline.create()
self.addTask(self.moveTask, "move")
self.renderPipeline.onSceneInitialized()
#This creates the on screen title that is in every tutorial
self.title = OnscreenText(text="Panda3D: Tutorial 2 - Carousel",
style=1, fg=(1,1,1,1),
pos=(0.87,-0.95), scale = .07)
base.setBackgroundColor(.6, .6, 1) #Set the background color
base.disableMouse() #Allow manual positioning of the camera
camera.setPosHpr( 0, -8, 2.5, 0, -9, 0 ) #Set the cameras' position
#and orientation
self.loadModels() #Load and position our models
self.setupLights() #Add some basic lighting
self.startCarousel() #Create the needed intervals and put the
#carousel into motion
self.accept("r", self.reloadShader)
# As the model is moving, we have to register it as a dynamic object
for node in [self.carousel, self.lights1, self.lights2]:
self.renderPipeline.setEffect(node, "Effects/Default/Default.effect", {
"dynamic": True
})
def reloadShader(self):
self.renderPipeline.reloadShaders()
def moveTask(self, task):
counter = globalClock.getFrameTime() * 0.5
self.sun.setPos(Vec3(sin(counter) * 70, cos(counter) * 60, sin(counter*1.6323) * 20.0 + 60.0) * 1000000.0)
return task.cont
def loadModels(self):
#Load the carousel base
self.carousel = loader.loadModel("models/carousel_base")
self.carousel.reparentTo(render) #Attach it to render
#Load the modeled lights that are on the outer rim of the carousel
#(not Panda lights)
#There are 2 groups of lights. At any given time, one group will have the
#"on" texture and the other will have the "off" texture.
self.lights1 = loader.loadModel("models/carousel_lights")
self.lights1.reparentTo(self.carousel)
#Load the 2nd set of lights
self.lights2 = loader.loadModel("models/carousel_lights")
#We need to rotate the 2nd so it doesn't overlap with the 1st set.
self.lights2.setH(36)
self.lights2.reparentTo(self.carousel)
#Load the textures for the lights. One texture is for the "on" state,
#the other is for the "off" state.
self.lightOffTex = loader.loadTexture("models/carousel_lights_off.jpg")
self.lightOnTex = loader.loadTexture("models/carousel_lights_on.jpg")
#Create an list (self.pandas) with filled with 4 dummy nodes attached to
#the carousel.
#This uses a python concept called "Array Comprehensions." Check the Python
#manual for more information on how they work
self.pandas = [self.carousel.attachNewNode("panda"+str(i))
for i in range(4)]
self.models = [loader.loadModel("models/carousel_panda")
for i in range(4)]
self.moves = [0 for i in range(4)]
#.........这里部分代码省略.........