From 99f3110b15e01091354b56266f70708e39be6b45 Mon Sep 17 00:00:00 2001 From: sercero Date: Tue, 21 Mar 2023 23:11:55 -0300 Subject: [PATCH] Progress update for mesh import --- Options.md | 2 +- io_ogre/ogre/ogre_import.py | 28 ++++++++++++++++++++++++++-- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/Options.md b/Options.md index 29e0916..6a83e8d 100644 --- a/Options.md +++ b/Options.md @@ -198,7 +198,7 @@ filepath="D:\\tmp\\NormalsExport\\Suzanne.mesh", # General IM_SWAP_AXIS='xz-y', # Axis swapping mode -IM_V2_MESH_TOOL_VERSION='', # Specify Ogre version format to read +IM_V2_MESH_TOOL_VERSION='v2', # Specify Ogre version format to read IM_XML_DELETE=True, # Remove the generated xml files after binary conversion. # Mesh diff --git a/io_ogre/ogre/ogre_import.py b/io_ogre/ogre/ogre_import.py index 535cbdd..aac3c62 100644 --- a/io_ogre/ogre/ogre_import.py +++ b/io_ogre/ogre/ogre_import.py @@ -164,6 +164,9 @@ def GetValidBlenderName(name): return newname def xOpenFile(filename): + logger.info("* Parsing file: %s ..." % filename) + start = time.time() + xml_file = open(filename) try: xml_doc = minidom.parse(xml_file) @@ -173,6 +176,9 @@ def xOpenFile(filename): Report.errors.append("File %s is not valid XML!" % filename) output = 'None' xml_file.close() + + logger.info('- Done at %s seconds' % util.timer_diff_str(start)) + return output @@ -197,7 +203,23 @@ def xCollectVertexData(data): for vb in data.childNodes: if vb.localName == 'vertexbuffer': if vb.hasAttribute('positions'): + + progressScale = 1.0 / len(vb.getElementsByTagName('vertex')) + bpy.context.window_manager.progress_begin(0, 100) + index = 0 + for vertex in vb.getElementsByTagName('vertex'): + + # Update progress in console + percent = (index + 1) * progressScale + sys.stdout.write( "\r + Vertices [" + '=' * int(percent * 50) + '>' + '.' * int(50 - percent * 50) + "] " + str(int(percent * 10000) / 100.0) + "% ") + sys.stdout.flush() + + # Update progress through Blender cursor + bpy.context.window_manager.progress_update(percent) + + index = index + 1 + for vp in vertex.childNodes: if vp.localName == 'position': x = float(vp.getAttributeNode('x').value) @@ -206,6 +228,8 @@ def xCollectVertexData(data): vertices.append([x, y, z]) vertexdata['positions'] = vertices + sys.stdout.write("\n") + if vb.hasAttribute('normals') and config.get('IMPORT_NORMALS'): for vertex in vb.getElementsByTagName('vertex'): for vn in vertex.childNodes: @@ -237,7 +261,7 @@ def xCollectVertexData(data): for vt in vertex.childNodes: if vt.localName == 'texcoord': u = float(vt.getAttributeNode('u').value) - v = -float(vt.getAttributeNode('v').value)+1.0 + v = -float(vt.getAttributeNode('v').value) + 1.0 uvcoords.append([u, v]) if len(uvcoords) > 0: @@ -1323,7 +1347,7 @@ def load(filepath): fps = xAnalyseFPS(xDocSkeletonData) if(fps and config.get('ROUND_FRAMES')): logger.info(" * Setting FPS to %s" % fps) - bpy.context.scene.render.fps = fps + bpy.context.scene.render.fps = int(fps) xCollectAnimations(meshData, xDocSkeletonData) else: