Hi, trying ot learn lighting (seems perty easy). I look it up in the forum and found this code.
from direct.showbase.DirectObject import DirectObject
from pandac.PandaModules import *
import direct.directbase.DirectStart
import sys
class World(DirectObject):
def __init__(self):
render.setShaderAuto()
self.staticWorld = loader.loadModel("models/environment")
self.staticWorld.setScale(0.25,0.25,0.25)
self.staticWorld.setPos(-8,42,0)
self.staticWorld.reparentTo(render)
base.camera.setPos(0, -30, 30)
base.camera.setHpr(0, -45, 0)
self.spot = Spotlight("spot")
self.spot.setColor(Vec4(1, 1, 1, 1))
self.lens = PerspectiveLens()
self.lens.setFov(40)
self.spot.setLens(self.lens)
self.spotNP = render.attachNewNode(self.spot)
render.setLight(self.spotNP)
self.spotNP.setPos(0, 0, 150)
self.spotNP.setHpr(0, -130, 0)
self.accept("escape", sys.exit)
self.accept("p", self.perPixel)
self.accept("v", self.perVertex)
def perPixel(self):
render.setShaderAuto()
def perVertex(self):
render.setShaderOff()
# Now let's make everything.
world = World()
run()
It seem to work and light up the map. So I took the code and added it to my mine in my game. Making this code:
def camera(self):
if self.zone == self.zone:
base.camera.setPos(0,0,77)
base.camLens.setFar(50000)
#self.myFog = Fog("Fog Name")
#self.myFog.setColor(167,162,154)
#self.myFog.setExpDensity(.0001)
#render.setFog(self.myFog)
base.setBackgroundColor(167,162,154)
render.setShaderAuto()
self.spot = Spotlight("spot")
self.spot.setColor(Vec4(1, 1, 1, 1))
self.lens = PerspectiveLens()
self.lens.setFov(40)
self.spot.setLens(self.lens)
self.spotNP = render.attachNewNode(self.spot)
render.setLight(self.spotNP)
self.spotNP.setPos(0, 0, 150)
self.spotNP.setHpr(0, -130, 0)
But for some reason I get this error: self.spot = Spotlight(“spot”)
NameError: global name ‘Spotlight’ is not defined
Werid thing is, fog is the same way for setting the name up like that too and it works jsut fine.
Why this?