def __init__(self, id, color, constant_att=None, linear_att=None, quad_att=None, zfar=None, xmlnode = None): """Create a new sun light. :param str id: A unique string identifier for the light :param tuple color: Either a tuple of size 3 containing the RGB color value of the light or a tuple of size 4 containing the RGBA color value of the light :param float constant_att: Constant attenuation factor :param float linear_att: Linear attenuation factor :param float quad_att: Quadratic attenuation factor :param float zfar: Distance to the far clipping plane :param xmlnode: If loaded from xml, the xml node """ self.id = id """The unique string identifier for the light""" self.position = numpy.array( [0, 0, 0], dtype=numpy.float32 ) #Not documenting this because it doesn't make sense to set the position # of an unbound light. The position isn't set until binding in a scene. self.color = color """Either a tuple of size 3 containing the RGB color value of the light or a tuple of size 4 containing the RGBA color value of the light""" self.constant_att = constant_att """Constant attenuation factor.""" self.linear_att = linear_att """Linear attenuation factor.""" self.quad_att = quad_att """Quadratic attenuation factor.""" self.zfar = zfar """Distance to the far clipping plane""" if xmlnode != None: self.xmlnode = xmlnode """ElementTree representation of the light.""" else: pnode = E.point( E.color(' '.join(map(str, self.color ) )) ) if self.constant_att is not None: pnode.append(E.constant_attenuation(str(self.constant_att))) if self.linear_att is not None: pnode.append(E.linear_attenuation(str(self.linear_att))) if self.quad_att is not None: pnode.append(E.quadratic_attenuation(str(self.quad_att))) if self.zfar is not None: pnode.append(E.zfar(str(self.zvar))) self.xmlnode = E.light( E.technique_common(pnode) , id=self.id, name=self.id)
def __init__(self, id, color, constant_att, linear_att, quad_att, xmlnode=None): """Create a new sun light. :Parameters: id Id for the object color Light color constant_att Constant attenuation factor linear_att Linear attenuation factor quad_att Quadratic attenuation factor xmlnode If load form xml, the xml node """ self.id = id """Id in the light library.""" self.position = numpy.array([0, 0, 0], dtype=numpy.float32) """Location of the light.""" self.color = color """Light color.""" self.constant_att = constant_att """Constant attenuation factor.""" self.linear_att = linear_att """Linear attenuation factor.""" self.quad_att = quad_att """Quadratic attenuation factor.""" if xmlnode != None: self.xmlnode = xmlnode else: self.xmlnode = E.light( E.technique_common( E.point( E.color(" ".join([str(v) for v in self.color])), E.constant_attenuation(str(self.constant_att)), E.linear_attenuation(str(self.linear_att)), E.quadratic_attenuation(str(self.quad_att)), ) ), id=self.id, name=self.id, )
def __init__( self, id, color, constant_att=None, linear_att=None, quad_att=None, falloff_ang=None, falloff_exp=None, xmlnode=None, ): """Create a new spot light. :param str id: A unique string identifier for the light :param tuple color: Either a tuple of size 3 containing the RGB color value of the light or a tuple of size 4 containing the RGBA color value of the light :param float constant_att: Constant attenuation factor :param float linear_att: Linear attenuation factor :param float quad_att: Quadratic attenuation factor :param float falloff_ang: Falloff angle :param float falloff_exp: Falloff exponent :param xmlnode: If loaded from xml, the xml node """ self.id = id """The unique string identifier for the light""" self.color = color """Either a tuple of size 3 containing the RGB color value of the light or a tuple of size 4 containing the RGBA color value of the light""" self.constant_att = constant_att """Constant attenuation factor.""" self.linear_att = linear_att """Linear attenuation factor.""" self.quad_att = quad_att """Quadratic attenuation factor.""" self.falloff_ang = falloff_ang """Falloff angle""" self.falloff_exp = falloff_exp """Falloff exponent""" if xmlnode != None: self.xmlnode = xmlnode """ElementTree representation of the light.""" else: pnode = E.spot(E.color(" ".join(map(str, self.color)))) if self.constant_att is not None: pnode.append(E.constant_attenuation(str(self.constant_att))) if self.linear_att is not None: pnode.append(E.linear_attenuation(str(self.linear_att))) if self.quad_att is not None: pnode.append(E.quadratic_attenuation(str(self.quad_att))) if self.falloff_ang is not None: pnode.append(E.falloff_angle(str(self.falloff_ang))) if self.falloff_exp is not None: pnode.append(E.falloff_exponent(str(self.falloff_exp))) self.xmlnode = E.light(E.technique_common(pnode), id=self.id, name=self.id)