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);
OgreMeshSerializer.py 文件源码
python
阅读 33
收藏 0
点赞 0
评论 0
评论列表
文章目录