def __init__(self): tex1 = loader.loadTexture('textures/clouds.jpg') tex1.setMagfilter(Texture.FTLinearMipmapLinear) tex1.setMinfilter(Texture.FTLinearMipmapLinear) tex1.setAnisotropicDegree(2) tex1.setWrapU(Texture.WMRepeat) tex1.setWrapV(Texture.WMRepeat) tex1.setFormat(Texture.FAlpha) self.ts1 = TextureStage('clouds') #self.ts1.setMode(TextureStage.MBlend) self.ts1.setColor(Vec4(1,1,1,1)) #self.plane(-2000, -2000, 2000, 2000, 100) self.sphere(10000, -9600) self.clouds.setTransparency(TransparencyAttrib.MDual) self.clouds.setTexture(self.ts1, tex1) self.clouds.setBin('background', 3) self.clouds.setDepthWrite(False) self.clouds.setDepthTest(False) self.clouds.setTwoSided(True) self.clouds.setLightOff(1) self.clouds.setShaderOff(1) self.clouds.setFogOff(1) self.clouds.hide(BitMask32.bit(2)) # Hide from the volumetric lighting camera self.speed = 0.003 self.time = 0 self.dayColor = Vec4(0.98, 0.98, 0.95, 1.0) self.nightColor = Vec4(-0.5, -0.3, .0, 1.0) self.sunsetColor = Vec4(0.75, .60, .65, 1.0) ColoredByTime.__init__(self) self.setColor = self.clouds.setColor
class CloudLayer(ColoredByTime): def __init__(self): tex1 = loader.loadTexture('textures/clouds.jpg') tex1.setMagfilter(Texture.FTLinearMipmapLinear) tex1.setMinfilter(Texture.FTLinearMipmapLinear) tex1.setAnisotropicDegree(2) tex1.setWrapU(Texture.WMRepeat) tex1.setWrapV(Texture.WMRepeat) tex1.setFormat(Texture.FAlpha) self.ts1 = TextureStage('clouds') #self.ts1.setMode(TextureStage.MBlend) self.ts1.setColor(Vec4(1,1,1,1)) #self.plane(-2000, -2000, 2000, 2000, 100) self.sphere(10000, -9600) self.clouds.setTransparency(TransparencyAttrib.MDual) self.clouds.setTexture(self.ts1, tex1) self.clouds.setBin('background', 3) self.clouds.setDepthWrite(False) self.clouds.setDepthTest(False) self.clouds.setTwoSided(True) self.clouds.setLightOff(1) self.clouds.setShaderOff(1) self.clouds.setFogOff(1) self.clouds.hide(BitMask32.bit(2)) # Hide from the volumetric lighting camera self.speed = 0.003 self.time = 0 self.dayColor = Vec4(0.98, 0.98, 0.95, 1.0) self.nightColor = Vec4(-0.5, -0.3, .0, 1.0) self.sunsetColor = Vec4(0.75, .60, .65, 1.0) ColoredByTime.__init__(self) self.setColor = self.clouds.setColor def plane(self, x1, y1, x2, y2, z): self.z = z maker = CardMaker('clouds') maker.setFrame(x1, x2, y1, y2) self.clouds = render.attachNewNode(maker.generate()) self.clouds.setHpr(0, 90, 0) self.clouds.setTexOffset(self.ts1, 0, 1) self.clouds.setTexscale(self.ts1, 10, 10) def sphere(self, scale, z): self.z = z self.clouds = loader.loadModel("models/sphere") self.clouds.reparentTo(render) self.clouds.setHpr(0, 90, 0) self.clouds.setScale(scale) self.clouds.setTexOffset(self.ts1, 0, 1) self.clouds.setTexScale(self.ts1, 30, 12) def setTime(self, time): self.colorize(time) self.clouds.setTexOffset(self.ts1, self.time * self.speed, self.time * self.speed); def update(self, elapsed): self.time += elapsed self.clouds.setPos(base.cam.getPos(render) + Vec3(0, 0, self.z))