def _set_general_lights(self, train_np): """Set initial Sun lights. Args: train_np (panda3d.core.NodePath): Train node. Returns: panda3d.core.AmbientLight: Sun ambient light. panda3d.core.DirectionalLight: Sun directional light. panda3d.core.NodePath: NodePath of the Sun. """ amb_light = AmbientLight("sun_amb") amb_light.setColor(self._color["amb"]) render.setLight(render.attachNewNode(amb_light)) # noqa: F821 lens = PerspectiveLens() lens.setNearFar(1, 100) lens.setFov(20, 20) sun_light = Spotlight("sun_dir") sun_light.setColor(self._color["dir"]) sun_light.setShadowCaster(True, 8192, 8192, sort=-2000) sun_light.setLens(lens) sun_light.setExponent(0.5) sun_light.setCameraMask(0b0001) sun_np = train_np.attachNewNode(sun_light) render.setLight(sun_np) # noqa: F821 return amb_light, sun_light, sun_np
def generate(self, helperInfo): color = self.mapObject.getPropertyValue("_light", default=Vec4( 255, 255, 255, 255)) color = LEGlobals.colorFromRGBScalar255(color) color = LEGlobals.vec3GammaToLinear(color) intensity = self.mapObject.getPropertyValue("_intensity", default=1.0) innerRadius = self.mapObject.getPropertyValue("_inner_radius", default=1.0) outerRadius = self.mapObject.getPropertyValue("_outer_radius", default=2.0) color[0] = color[0] * intensity color[1] = color[1] * intensity color[2] = color[2] * intensity constant = self.mapObject.getPropertyValue("_constant_attn", default=0.0) linear = self.mapObject.getPropertyValue("_linear_attn", default=0.0) quadratic = self.mapObject.getPropertyValue("_quadratic_attn", default=1.0) innerConeDeg = self.mapObject.getPropertyValue("_inner_cone") innerConeRad = deg2Rad(innerConeDeg) outerConeDeg = self.mapObject.getPropertyValue("_cone") outerConeRad = deg2Rad(outerConeDeg) depthBias = self.mapObject.getPropertyValue("_depth_bias") shadowSize = self.mapObject.getPropertyValue("_shadow_map_size") shadowCaster = self.mapObject.getPropertyValue("_shadow_caster") softnessFactor = self.mapObject.getPropertyValue("_softness_factor") normalOffsetScale = self.mapObject.getPropertyValue( "_normal_offset_scale") normalOffsetUvSpace = self.mapObject.getPropertyValue( "_normal_offset_uv_space") pl = Spotlight("lightHelper-light_spot") pl.setColor(Vec4(color[0], color[1], color[2], 1.0)) pl.setFalloff(quadratic) pl.setInnerRadius(innerRadius) pl.setOuterRadius(outerRadius) pl.setExponent(self.mapObject.getPropertyValue("_exponent")) pl.setInnerCone(innerConeDeg) pl.setOuterCone(outerConeDeg) if shadowCaster: pl.setCameraMask(DirectRender.ShadowCameraBitmask) pl.setShadowCaster(True, shadowSize, shadowSize) pl.setDepthBias(depthBias) pl.setSoftnessFactor(softnessFactor) pl.setNormalOffsetScale(normalOffsetScale) pl.setNormalOffsetUvSpace(normalOffsetUvSpace) self.light = self.mapObject.helperRoot.attachNewNode(pl) if True: #self.mapObject.doc.numlights < 64: self.mapObject.doc.render.setLight(self.light) self.mapObject.doc.numlights += 1 self.hasLight = True self.spotlightMdl = base.loader.loadModel( "models/misc/spotlight-editor.bam") #self.spotlightMdl.setState("materials/spotlight-editor.mat") #state = self.spotlightMdl.getState() #params = state.getAttrib(ShaderParamAttrib) #params = params.setParam("selfillumtint", CKeyValues.toString(color.getXyz())) #print(params) #self.spotlightMdl.setState(state.setAttrib(params)) self.spotlightMdl.reparentTo(self.light) self.spotlightMdl.setScale(0.5) self.spotlightMdl.setH(180) self.spotlightMdl.setLightOff(1) self.spotlightMdl.setRenderModeWireframe(1) self.spotlightMdl.setTextureOff(1) self.spotlightMdl.setColor(Vec4(0, 0, 0, 1)) #self.spotlightMdl.setLightOff(self.light, 1) #self.spotlightMdl.ls() innerCone = getUnitCone().copyTo(self.light) innerCone.setSy(innerRadius) innerCone.setSx((innerConeRad / 2) * innerRadius) innerCone.setSz((innerConeRad / 2) * innerRadius) innerCone.setColorScale(InnerColor) self.innerCone = innerCone outerCone = getUnitCone().copyTo(self.light) outerCone.setSy(outerRadius) outerCone.setSx((outerConeRad / 2) * outerRadius) outerCone.setSz((outerConeRad / 2) * outerRadius) outerCone.setColorScale(OuterColor) self.outerCone = outerCone if not self.mapObject.selected: innerCone.stash() outerCone.stash()