def __init__(self, id, surface, minfilter=None, magfilter=None, xmlnode=None): """Create a Sampler2D object. :param str id: A string identifier for the sampler within the local scope of the material :param collada.material.Surface surface: Surface instance that this object samples from :param str minfilter: Minification filter string id, see collada spec for details :param str magfilter: Maximization filter string id, see collada spec for details :param xmlnode: If loaded from xml, the xml node """ self.id = id """The string identifier for the sampler within the local scope of the material""" self.surface = surface """Surface instance that this object samples from""" self.minfilter = minfilter """Minification filter string id, see collada spec for details""" self.magfilter = magfilter """Maximization filter string id, see collada spec for details""" if xmlnode != None: self.xmlnode = xmlnode """ElementTree representation of the sampler.""" else: sampler_node = E.sampler2D(E.source(self.surface.id)) if minfilter: sampler_node.append(E.minfilter(self.minfilter)) if magfilter: sampler_node.append(E.magfilter(self.magfilter)) self.xmlnode = E.newparam(sampler_node, sid=self.id)
def __init__(self, id, data, components, xmlnode=None): """Create a name source instance. :param str id: A unique string identifier for the source :param numpy.array data: Numpy array (unshaped) with the source values :param tuple components: Tuple of strings describing the semantic of the data, e.g. ``('JOINT')`` would cause :attr:`data` to be reshaped as ``(-1, 1)`` :param xmlnode: When loaded, the xmlnode it comes from. """ self.id = id """The unique string identifier for the source""" self.data = data """Numpy array with the source values. This will be shaped as ``(-1,N)`` where ``N = len(self.components)``""" self.data.shape = (-1, len(components) ) self.components = components """Tuple of strings describing the semantic of the data, e.g. ``('JOINT')``""" if xmlnode != None: self.xmlnode = xmlnode """ElementTree representation of the source.""" else: self.data.shape = (-1,) txtdata = ' '.join(map(str, self.data.tolist() )) rawlen = len( self.data ) self.data.shape = (-1, len(self.components) ) acclen = len( self.data ) stridelen = len(self.components) sourcename = "%s-array"%self.id self.xmlnode = E.source( E.Name_array(txtdata, count=str(rawlen), id=sourcename), E.technique_common( E.accessor( *[E.param(type='Name', name=c) for c in self.components] , **{'count':str(acclen), 'stride':str(stridelen), 'source':sourcename}) ) , id=self.id )