예제 #1
0
파일: lwobimport.py 프로젝트: puzzlet/cgkit
    _protocols = ["Import"]

    # extension
    def extension():
        """Return the file extensions for this format."""
        return ["lwo"]

    extension = staticmethod(extension)

    # description
    def description(self):
        """Return a short description for the file dialog."""
        return "Lightwave object file"

    description = staticmethod(description)

    # importFile
    def importFile(self, filename, parent=None):
        """Import an LWOB file."""

        f = file(filename, "rb")
        reader = _LWOBReader(parent=parent)
        reader.read(f)
        f.close()


######################################################################

# Register the Importer class as a plugin class
pluginmanager.register(LWOBImporter)
예제 #2
0
파일: objimport.py 프로젝트: behnam/cgkit
# OBJImporter
class OBJImporter:

    _protocols = ["Import"]

    # extension
    def extension():
        """Return the file extensions for this format."""
        return ["obj"]
    extension = staticmethod(extension)

    # description
    def description(self):
        """Return a short description for the file dialog."""
        return "Wavefront object file"
    description = staticmethod(description)

    # importFile
    def importFile(self, filename, parent=None):
        """Import an OBJ file."""

        f = file(filename)

        reader = _OBJReader(root=parent)
        reader.read(f)

######################################################################

# Register the ObjImporter class as a plugin class
pluginmanager.register(OBJImporter)
예제 #3
0
            # Check for an ASF file with the same name than the AMC file
            asf, ext = os.path.splitext(filename)
            asf += ".asf"
            if not os.path.exists(asf):
                dir = os.path.dirname(filename)
                asflist = glob.glob(os.path.join(dir, "*.asf"))
                if len(asflist) == 1:
                    asf = asflist[0]
                elif len(asflist) == 0:
                    raise ValueError("No skeleton file found.")
                else:
                    raise ValueError(
                        "There are several skeleton files in the directory, please specify one or rename the ASF file so it is identical with the AMC file."
                    )

        asf = ASFReader(asf)
        asf.read()

        amc = AMCReader(filename)
        #        print 'Reading motion file "%s"...'%amcfile
        amc.read()
        #        print "Applying motion..."
        amc.applyMotion(asf, framerate=framerate)


######################################################################

# Register the Importer class as a plugin class
pluginmanager.register(ASFImporter)
pluginmanager.register(AMCImporter)
예제 #4
0
파일: maimport.py 프로젝트: behnam/cgkit
        AZ = mat4(cz,sz,0,0, -sz,cz,0,0, 0,0,1,0, 0,0,0,1)
        RA = AX*AY*AZ

        # Euler-angle rotation (todo: quat)
        sx = sin(radians(r.x))
        cx = cos(radians(r.x))
        sy = sin(radians(r.y))
        cy = cos(radians(r.y))
        sz = sin(radians(r.z))
        cz = cos(radians(r.z))
        RX = mat4(1,0,0,0, 0,cx,sx,0, 0,-sx,cx,0, 0,0,0,1)
        RY = mat4(cy,0,-sy,0, 0,1,0,0, sy,0,cy,0, 0,0,0,1)
        RZ = mat4(cz,sz,0,0, -sz,cz,0,0, 0,0,1,0, 0,0,0,1)
        a,b,c = ["XYZ", "YZX", "ZXY", "XZY", "YXZ", "ZYX"][ro]
        exec "R=R%s*R%s*R%s"%(a,b,c)

        WT = SP.inverse()*S*SH*SP*ST*RP.inverse()*RA*R*RP*RT*T
        WT = WT.transpose()
        args["transform"] = WT

        # Visibility
        args["visible"] = tnode.getAttrValue("visibility", "v", "bool", 1, True)
        
        return args


######################################################################

# Register the importer class as a plugin class
pluginmanager.register(MAImporter)
예제 #5
0
class STLImporter:

    _protocols = ["Import"]

    # extension
    def extension():
        """Return the file extensions for this format."""
        return ["stl"]

    extension = staticmethod(extension)

    # description
    def description(self):
        """Return a short description for the file dialog."""
        return "StereoLithography"

    description = staticmethod(description)

    # importFile
    def importFile(self, filename):
        """Import a STL file."""

        reader = STLImport(filename)
        reader.read()


######################################################################

# Register the Importer class as a plugin class
pluginmanager.register(STLImporter)
예제 #6
0
파일: x3dimport.py 프로젝트: puzzlet/cgkit
class X3DImporter:

    _protocols = ["Import"]

    # extension
    def extension():
        """Return the file extensions for this format."""
        return ["x3d"]
    extension = staticmethod(extension)

    # description
    def description(self):
        """Return a short description for the file dialog."""
        return "Extensible 3D (X3D)"
    description = staticmethod(description)

    # importFile
    def importFile(self, filename):
        """Import a X3D file."""

        imp = _core.X3DReader()
        imp.read(filename)

     
######################################################################

# Register the Importer class as a plugin class
if hasattr(_core, "cyber"):
    pluginmanager.register(VRMLImporter)
    pluginmanager.register(X3DImporter)
예제 #7
0
파일: stlimport.py 프로젝트: npinto/cgkit
class STLImporter:

    _protocols = ["Import"]

    # extension
    def extension():
        """Return the file extensions for this format."""
        return ["stl"]

    extension = staticmethod(extension)

    # description
    def description(self):
        """Return a short description for the file dialog."""
        return "StereoLithography"

    description = staticmethod(description)

    # importFile
    def importFile(self, filename):
        """Import a STL file."""

        reader = STLImport(filename)
        reader.read()


######################################################################

# Register the Importer class as a plugin class
pluginmanager.register(STLImporter)
예제 #8
0
        if not isinstance(geom, PolyhedronGeom):
            # Try to convert into a polyhedron...
            pg = PolyhedronGeom()
            try:
                geom.convert(pg)
                geom = pg
            except:
                pass

        # Is it a PolyhedronGeom that has no polys with holes? then return
        # the geom...
        if isinstance(geom, PolyhedronGeom) and not geom.hasPolysWithHoles():
            return geom

        # Try to convert into a triangle mesh...
        tm = TriMeshGeom()
        try:
            geom.convert(tm)
            return tm
        except:
            pass

        return None


######################################################################

# Register the exporter class as a plugin class
pluginmanager.register(OffExporter)
예제 #9
0
            # Check for an ASF file with the same name than the AMC file
            asf, ext = os.path.splitext(filename)
            asf += ".asf"
            if not os.path.exists(asf):
                dir = os.path.dirname(filename)
                asflist = glob.glob(os.path.join(dir, "*.asf"))
                if len(asflist)==1:
                    asf = asflist[0]
                elif len(asflist)==0:
                    raise ValueError("No skeleton file found.")
                else:
                    raise ValueError("There are several skeleton files in the directory, please specify one or rename the ASF file so it is identical with the AMC file.")

        asf = ASFReader(asf)
        asf.read()

        amc = AMCReader(filename)
#        print 'Reading motion file "%s"...'%amcfile
        amc.read()
#        print "Applying motion..."
        amc.applyMotion(asf, framerate=framerate)
        


######################################################################

# Register the Importer class as a plugin class
pluginmanager.register(ASFImporter)
pluginmanager.register(AMCImporter)

예제 #10
0
파일: offimport.py 프로젝트: puzzlet/cgkit
        if header[:1] == "n":
            self.ndim_flag = True
            header = header[1:]

        if header != "OFF":
            print >> sys.stderr, "Warning: Unknown prefixes in the header keyword"
        return True

    # readLine
    def readLine(self):
        """Read the next line.

        Returns the next line (without the trailing newline) that is not
        empty or a comment. If the end of the file was reached, an exception
        is thrown.
        """
        while 1:
            z = self.fhandle.readline()
            if z == "":
                raise SyntaxError("premature end of file")
            z = z.strip()
            if z == "" or z[0] == '#':
                continue
            return z


######################################################################

# Register the OffImporter class as a plugin class
pluginmanager.register(OffImporter)
예제 #11
0
        # Euler-angle rotation (todo: quat)
        sx = sin(radians(r.x))
        cx = cos(radians(r.x))
        sy = sin(radians(r.y))
        cy = cos(radians(r.y))
        sz = sin(radians(r.z))
        cz = cos(radians(r.z))
        RX = mat4(1, 0, 0, 0, 0, cx, sx, 0, 0, -sx, cx, 0, 0, 0, 0, 1)
        RY = mat4(cy, 0, -sy, 0, 0, 1, 0, 0, sy, 0, cy, 0, 0, 0, 0, 1)
        RZ = mat4(cz, sz, 0, 0, -sz, cz, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)
        a, b, c = ["XYZ", "YZX", "ZXY", "XZY", "YXZ", "ZYX"][ro]
        exec "R=R%s*R%s*R%s" % (a, b, c)

        WT = SP.inverse() * S * SH * SP * ST * RP.inverse(
        ) * RA * R * RP * RT * T
        WT = WT.transpose()
        args["transform"] = WT

        # Visibility
        args["visible"] = tnode.getAttrValue("visibility", "v", "bool", 1,
                                             True)

        return args


######################################################################

# Register the importer class as a plugin class
pluginmanager.register(MAImporter)
예제 #12
0
        """Create a TextureMap3DS object (or None).

        \param texmap (\c Lib3dsTextureMap) Texture map
        """
        if texmap.name == "":
            return None

        dir = os.path.dirname(self.filename)
        dir = os.path.abspath(dir)
        return TextureMap3DS(
            name=os.path.join(dir, texmap.name),
            flags=texmap.flags,
            percent=texmap.percent,
            blur=texmap.blur,
            scale=texmap.scale,
            offset=texmap.offset,
            rotation=texmap.rotation,
            tint1=texmap.tint_1,
            tint2=texmap.tint_2,
            tintr=texmap.tint_r,
            tintg=texmap.tint_g,
            tintb=texmap.tint_b,
        )


######################################################################

# Register the Importer class as a plugin class
if hasattr(_core, "File3ds"):
    pluginmanager.register(DDDSImporter)
예제 #13
0
        
        if not isinstance(geom, PolyhedronGeom):
            # Try to convert into a polyhedron...
            pg = PolyhedronGeom()
            try:
                geom.convert(pg)
                geom = pg
            except:
                pass

        # Is it a PolyhedronGeom that has no polys with holes? then return
        # the geom...
        if isinstance(geom, PolyhedronGeom) and not geom.hasPolysWithHoles():
            return geom

        # Try to convert into a triangle mesh...
        tm = TriMeshGeom()
        try:
            geom.convert(tm)
            return tm
        except:
            pass

        return None
        

######################################################################

# Register the exporter class as a plugin class
pluginmanager.register(OBJExporter)
예제 #14
0
파일: bvhimport.py 프로젝트: behnam/cgkit
# BVHImporter
class BVHImporter:

    _protocols = ["Import"]

    # extension
    def extension():
        """Return the file extensions for this format."""
        return ["bvh"]
    extension = staticmethod(extension)

    # description
    def description(self):
        """Return a short description for the file dialog."""
        return "Biovision Hierarchical"
    description = staticmethod(description)

    # importFile
    def importFile(self, filename):
        """Import a BVH file."""
        
        bvh = BVHReader(filename)
        bvh.read()


######################################################################

# Register the Importer class as a plugin class
pluginmanager.register(BVHImporter)

예제 #15
0
파일: ifsimport.py 프로젝트: behnam/cgkit
        numfaces = int(struct.unpack("<I", s)[0])
        tm.faces.resize(numfaces)

        for i in range(numfaces):
            s = f.read(12)
            a,b,c = struct.unpack("<III", s)
            tm.faces[i] = (int(a), int(b), int(c))

        # Create a world object
        obj = TriMesh(name=modelname)
        obj.geom = tm


    def readString(self, fhandle):
        """Read a string.

        \param fhandle Open file handle
        \return String
        """
        s = fhandle.read(4)
        w = int(struct.unpack("<I", s)[0])
        s = fhandle.read(w)
        # Return the string without the trailing \000
        return s[:-1]


######################################################################

# Register the IfsImporter class as a plugin class
pluginmanager.register(IfsImporter)
예제 #16
0
    _protocols = ["Import"]

    # extension
    def extension():
        """Return the file extensions for this format."""
        return ["lwo"]

    extension = staticmethod(extension)

    # description
    def description(self):
        """Return a short description for the file dialog."""
        return "Lightwave object file"

    description = staticmethod(description)

    # importFile
    def importFile(self, filename, parent=None):
        """Import an LWOB file."""

        f = file(filename, "rb")
        reader = _LWOBReader(parent=parent)
        reader.read(f)
        f.close()


######################################################################

# Register the Importer class as a plugin class
pluginmanager.register(LWOBImporter)
예제 #17
0
파일: objexport.py 프로젝트: behnam/cgkit
        
        if not isinstance(geom, PolyhedronGeom):
            # Try to convert into a polyhedron...
            pg = PolyhedronGeom()
            try:
                geom.convert(pg)
                geom = pg
            except:
                pass

        # Is it a PolyhedronGeom that has no polys with holes? then return
        # the geom...
        if isinstance(geom, PolyhedronGeom) and not geom.hasPolysWithHoles():
            return geom

        # Try to convert into a triangle mesh...
        tm = TriMeshGeom()
        try:
            geom.convert(tm)
            return tm
        except:
            pass

        return None
        

######################################################################

# Register the exporter class as a plugin class
pluginmanager.register(OBJExporter)
예제 #18
0
파일: offimport.py 프로젝트: behnam/cgkit
        if header[:1]=="n":
            self.ndim_flag = True
            header = header[1:]

        if header!="OFF":
            print >>sys.stderr, "Warning: Unknown prefixes in the header keyword"
        return True

    # readLine
    def readLine(self):
        """Read the next line.

        Returns the next line (without the trailing newline) that is not
        empty or a comment. If the end of the file was reached, an exception
        is thrown.
        """
        while 1:
            z = self.fhandle.readline()
            if z=="":
                raise SyntaxError("premature end of file")
            z = z.strip()
            if z=="" or z[0]=='#':
                continue
            return z
        

######################################################################

# Register the OffImporter class as a plugin class
pluginmanager.register(OffImporter)
예제 #19
0
파일: objimport.py 프로젝트: puzzlet/cgkit
    _protocols = ["Import"]

    # extension
    def extension():
        """Return the file extensions for this format."""
        return ["obj"]

    extension = staticmethod(extension)

    # description
    def description(self):
        """Return a short description for the file dialog."""
        return "Wavefront object file"

    description = staticmethod(description)

    # importFile
    def importFile(self, filename, parent=None):
        """Import an OBJ file."""

        f = file(filename)

        reader = _OBJReader(root=parent)
        reader.read(f)


######################################################################

# Register the ObjImporter class as a plugin class
pluginmanager.register(OBJImporter)
예제 #20
0
파일: bvhimport.py 프로젝트: Princu/Imagica
class BVHImporter:

    _protocols = ["Import"]

    # extension
    def extension():
        """Return the file extensions for this format."""
        return ["bvh"]

    extension = staticmethod(extension)

    # description
    def description(self):
        """Return a short description for the file dialog."""
        return "Biovision Hierarchical"

    description = staticmethod(description)

    # importFile
    def importFile(self, filename):
        """Import a BVH file."""

        bvh = BVHReader(filename)
        bvh.read()


######################################################################

# Register the Importer class as a plugin class
pluginmanager.register(BVHImporter)
예제 #21
0
        
        if not isinstance(geom, PolyhedronGeom):
            # Try to convert into a polyhedron...
            pg = PolyhedronGeom()
            try:
                geom.convert(pg)
                geom = pg
            except:
                pass

        # Is it a PolyhedronGeom that has no polys with holes? then return
        # the geom...
        if isinstance(geom, PolyhedronGeom) and not geom.hasPolysWithHoles():
            return geom

        # Try to convert into a triangle mesh...
        tm = TriMeshGeom()
        try:
            geom.convert(tm)
            return tm
        except:
            pass

        return None
        

######################################################################

# Register the exporter class as a plugin class
pluginmanager.register(PLYExporter)
예제 #22
0
파일: plyimport.py 프로젝트: Princu/Imagica
            s[0] = comment
        if objinfo!="":
            p.geom.newVariable("obj_info", CONSTANT, STRING)
            s = p.geom.slot("obj_info")
            s[0] = objinfo

        # Read the model
        imp.read(p.geom, vardecl, invertfaces)

        imp.close()

    # isVarAccepted
    def isVarAccepted(self, name):
        """Return True if the variable should be imported.

        name is the name of the primitive variable (which is not necessarily
        the ply property!).
        """
        if self.includevar!=None:
            if name not in self.includevar:
                return False
        if self.excludevar!=None:
            if name in self.excludevar:
                return False
        return True

######################################################################

# Register the Importer class as a plugin class
pluginmanager.register(PLYImporter)
예제 #23
0
파일: offexport.py 프로젝트: behnam/cgkit
        
        if not isinstance(geom, PolyhedronGeom):
            # Try to convert into a polyhedron...
            pg = PolyhedronGeom()
            try:
                geom.convert(pg)
                geom = pg
            except:
                pass

        # Is it a PolyhedronGeom that has no polys with holes? then return
        # the geom...
        if isinstance(geom, PolyhedronGeom) and not geom.hasPolysWithHoles():
            return geom

        # Try to convert into a triangle mesh...
        tm = TriMeshGeom()
        try:
            geom.convert(tm)
            return tm
        except:
            pass

        return None
        

######################################################################

# Register the exporter class as a plugin class
pluginmanager.register(OffExporter)
예제 #24
0
파일: ifsimport.py 프로젝트: puzzlet/cgkit
        s = f.read(4)
        numfaces = int(struct.unpack("<I", s)[0])
        tm.faces.resize(numfaces)

        for i in range(numfaces):
            s = f.read(12)
            a, b, c = struct.unpack("<III", s)
            tm.faces[i] = (int(a), int(b), int(c))

        # Create a world object
        obj = TriMesh(name=modelname)
        obj.geom = tm

    def readString(self, fhandle):
        """Read a string.

        \param fhandle Open file handle
        \return String
        """
        s = fhandle.read(4)
        w = int(struct.unpack("<I", s)[0])
        s = fhandle.read(w)
        # Return the string without the trailing \000
        return s[:-1]


######################################################################

# Register the IfsImporter class as a plugin class
pluginmanager.register(IfsImporter)
예제 #25
0
        """Create a TextureMap3DS object (or None).

        \param texmap (\c Lib3dsTextureMap) Texture map
        """
        if texmap.name=="":
            return None

        dir = os.path.dirname(self.filename)
        dir = os.path.abspath(dir)
        return TextureMap3DS(name=os.path.join(dir, texmap.name),
                             flags = texmap.flags,
                             percent = texmap.percent,
                             blur = texmap.blur,
                             scale = texmap.scale,
                             offset = texmap.offset,
                             rotation = texmap.rotation,
                             tint1 = texmap.tint_1,
                             tint2 = texmap.tint_2,
                             tintr = texmap.tint_r,
                             tintg = texmap.tint_g,
                             tintb = texmap.tint_b)

        


######################################################################

# Register the Importer class as a plugin class
if hasattr(_core, "File3ds"):
    pluginmanager.register(DDDSImporter)