OgreMeshSerializer.py 文件源码

python
阅读 33 收藏 0 点赞 0 评论 0

项目:ogre_blender_importer 作者: lamogui 项目源码 文件源码
def importMesh(self, stream, filename=None):
        assert(issubclass(type(stream),IOBase));

        #Check mesh name validity
        if (filename is None):
            if (hasattr(stream,'name')):
                filename = stream.name;
            elif (hasattr(stream, 'filename')):
                filename = stream.filename;
            else:
                raise ValueError("Cannot determine the filename of the stream please add filename parameter")

        filename = os.path.basename(filename);
        mesh_name = os.path.splitext(filename)[0];
        if mesh_name in bpy.data.meshes.keys():
            raise ValueError("Mesh with name " + mesh_name + " already exists in blender");

        #Check header and select impl
        self._determineEndianness(stream);
        headerID = self._readUShorts(stream,1)[0];
        if (headerID != OgreMeshSerializer.HEADER_CHUNK_ID):
            raise ValueError("File header not found");
        ver = OgreSerializer.readString(stream);
        stream.seek(0,SEEK_SET);
        impl = None;
        for i in self._versionData:
            if (i.versionString == ver):
                impl = i.impl;
                break;
        if (impl is None):
            print(ver);
            raise ValueError("Cannot find serializer implementation for "
                             "mesh version " + ver);

        #Create the blender mesh and import the mesh
        mesh = OgreMesh(mesh_name);
        impl.importMesh(stream,mesh,self.listener);

        #Check if newer version
        if (ver != self._versionData[0].versionString):
            print("Warning: "
                  " older format (" + ver + "); you should upgrade it as soon as possible" +
                  " using the OgreMeshUpgrade tool.");

        #Probably useless
        if (self.listener is not None):
            listener.processMeshCompleted(mesh);
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号