def getVersion(self): import makehuman if self.VERSION_SUB is not None: makehuman.versionSub = self.VERSION_SUB if self.IS_RELEASE is not None: makehuman.release = self.IS_RELEASE return makehuman.getVersionStr(verbose=False)
def save(self, filename, tags): f = open(filename, 'w') f.write('# Written by MakeHuman %s\n' % getVersionStr()) f.write('version %s\n' % getShortVersion()) f.write('tags %s\n' % tags) for handler in G.app.saveHandlers: handler(self, f) f.close()
def save(self, filename, tags): from codecs import open from progress import Progress progress = Progress(len(G.app.saveHandlers)) event = events3d.HumanEvent(self, 'save') event.path = filename self.callEvent('onChanging', event) f = open(filename, "w", encoding="utf-8") f.write('# Written by MakeHuman %s\n' % getVersionStr()) f.write('version %s\n' % getShortVersion()) f.write('tags %s\n' % tags) cam_rot = list(G.app.modelCamera.getRotation()[:2]) cam_trans = list(G.app.modelCamera.translation[:3]) cam_zoom = [G.app.modelCamera.zoomFactor] f.write('camera %s %s %s %s %s %s\n' % tuple(cam_rot + cam_trans + cam_zoom)) class SaveWriter(object): def __init__(self, file_obj): self.f = file_obj def write(self, text): # Ensure that handlers write lines ending with newline character if not text.endswith("\n"): text = text+"\n" self.f.write(text) def writelines(self, text): # Ensure that handlers write lines ending with newline character if not text.endswith("\n"): text = text+"\n" self.f.writelines(text) def __getattr__(self, attr): return self.f.__getattribute__(attr) f = SaveWriter(f) for handler in G.app.saveHandlers: handler(self, f) progress.step() f.write('subdivide %s' % self.isSubdivided()) f.close() progress(1) self.callEvent('onChanged', event)
def save(self, filename, tags): from codecs import open from progress import Progress progress = Progress(len(G.app.saveHandlers)) event = events3d.HumanEvent(self, 'save') event.path = filename self.callEvent('onChanging', event) f = open(filename, "w", encoding="utf-8") f.write('# Written by MakeHuman %s\n' % getVersionStr()) f.write('version %s\n' % getShortVersion()) f.write('tags %s\n' % tags) class SaveWriter(object): def __init__(self, file_obj): self.f = file_obj def write(self, text): # Ensure that handlers write lines ending with newline character if not text.endswith("\n"): text = text+"\n" self.f.write(text) def writelines(self, text): # Ensure that handlers write lines ending with newline character if not text.endswith("\n"): text = text+"\n" self.f.writelines(text) def __getattr__(self, attr): return self.f.__getattribute__(attr) f = SaveWriter(f) for handler in G.app.saveHandlers: handler(self, f) progress.step() f.write('subdivide %s' % self.isSubdivided()) f.close() progress(1) self.callEvent('onChanged', event)
def __init__(self, name, options): self.name = name self.options = options self.parser = None self.origin = None self.roots = [] self.bones = OrderedDict() self.hierarchy = [] self.locale = None self._tposes = None self.objectProps = [ ("MhVersion", '"%s"' % makehuman.getVersionStr().replace(" ","_")), ("MhBaseMesh", '"%s"' % makehuman.getBasemeshVersion().replace(" ","_")), ] self.armatureProps = [('MhxScale', options.scale)] self.done = False self.vertexWeights = OrderedDict([]) self.isNormalized = False
def save(self, filename, tags): from codecs import open from progress import Progress progress = Progress(len(G.app.saveHandlers)) event = events3d.HumanEvent(self, 'save') event.path = filename self.callEvent('onChanging', event) f = open(filename, "w", encoding="utf-8") f.write('# Written by MakeHuman %s\n' % getVersionStr()) f.write('version %s\n' % getShortVersion()) f.write('tags %s\n' % tags) for handler in G.app.saveHandlers: handler(self, f) progress.step() f.write('subdivide %s' % self.isSubdivided()) f.close() progress(1) self.callEvent('onChanged', event)
def fbx_header_elements(root, config, filepath, time=None): """ Write boiling code of FBX root. time is expected to be a datetime.datetime object, or None (using now() in this case). """ import makehuman app_vendor = "www.makehumancommunity.org" app_name = "MakeHuman" app_ver = makehuman.getVersionStr() # ##### Start of FBXHeaderExtension element. header_ext = elem_empty(root, b"FBXHeaderExtension") elem_data_single_int32(header_ext, b"FBXHeaderVersion", FBX_HEADER_VERSION) elem_data_single_int32(header_ext, b"FBXVersion", FBX_VERSION) # No encryption! elem_data_single_int32(header_ext, b"EncryptionType", 0) if time is None: time = datetime.datetime.now() elem = elem_empty(header_ext, b"CreationTimeStamp") elem_data_single_int32(elem, b"Version", 1000) elem_data_single_int32(elem, b"Year", time.year) elem_data_single_int32(elem, b"Month", time.month) elem_data_single_int32(elem, b"Day", time.day) elem_data_single_int32(elem, b"Hour", time.hour) elem_data_single_int32(elem, b"Minute", time.minute) elem_data_single_int32(elem, b"Second", time.second) elem_data_single_int32(elem, b"Millisecond", time.microsecond // 1000) # The FBX converter refuses to load the character unless this is the creator. elem_data_single_string_unicode(header_ext, b"Creator", "FBX SDK/FBX Plugins version 2013.3") #elem_data_single_string_unicode(header_ext, b"Creator", "%s - %s" % (app_name, app_ver)) # 'SceneInfo' seems mandatory to get a valid FBX file... # TODO use real values! # XXX Should we use scene.name.encode() here? scene_info = elem_data_single_string(header_ext, b"SceneInfo", fbx_name_class(b"GlobalInfo", b"SceneInfo")) scene_info.add_string(b"UserData") elem_data_single_string(scene_info, b"Type", b"UserData") elem_data_single_int32(scene_info, b"Version", FBX_SCENEINFO_VERSION) meta_data = elem_empty(scene_info, b"MetaData") elem_data_single_int32(meta_data, b"Version", FBX_SCENEINFO_VERSION) elem_data_single_string(meta_data, b"Title", b"") elem_data_single_string(meta_data, b"Subject", b"") elem_data_single_string(meta_data, b"Author", b"www.makehumancommunity.org") elem_data_single_string(meta_data, b"Keywords", b"") elem_data_single_string(meta_data, b"Revision", b"") elem_data_single_string(meta_data, b"Comment", b"") props = elem_properties(scene_info) elem_props_set(props, "p_string_url", b"DocumentUrl", filepath) # TODO set to current export filename? elem_props_set(props, "p_string_url", b"SrcDocumentUrl", filepath) original = elem_props_compound(props, b"Original") original("p_string", b"ApplicationVendor", app_vendor) original("p_string", b"ApplicationName", app_name) original("p_string", b"ApplicationVersion", app_ver) original("p_datetime", b"DateTime_GMT", "") original("p_string", b"FileName", "") lastsaved = elem_props_compound(props, b"LastSaved") lastsaved("p_string", b"ApplicationVendor", app_vendor) lastsaved("p_string", b"ApplicationName", app_name) lastsaved("p_string", b"ApplicationVersion", app_ver) lastsaved("p_datetime", b"DateTime_GMT", "") # ##### End of FBXHeaderExtension element. # FileID is replaced by dummy value currently... elem_data_single_bytes(root, b"FileId", b"FooBar") # CreationTime is replaced by dummy value currently, but anyway... elem_data_single_string_unicode(root, b"CreationTime", "{:04}-{:02}-{:02} {:02}:{:02}:{:02}:{:03}" "".format(time.year, time.month, time.day, time.hour, time.minute, time.second, time.microsecond * 1000)) #elem_data_single_string_unicode(root, b"Creator", "%s - %s" % (app_name, app_ver)) elem_data_single_string_unicode(root, b"Creator", "FBX SDK/FBX Plugins version 2013.3 build=20120911") # ##### Start of GlobalSettings element. global_settings = elem_empty(root, b"GlobalSettings") elem_data_single_int32(global_settings, b"Version", 1000) props = elem_properties(global_settings) mesh_orientation = getMeshOrientation(config) up_axis, front_axis, coord_axis = RIGHT_HAND_AXES[mesh_orientation] # Currently not sure about that, but looks like default unit of FBX is cm... #scale_factor = 10.0/config.scale # MH scales the mesh coordinates, the scale factor is a constant scale_factor = 10.0 elem_props_set(props, "p_integer", b"UpAxis", up_axis[0]) elem_props_set(props, "p_integer", b"UpAxisSign", up_axis[1]) elem_props_set(props, "p_integer", b"FrontAxis", front_axis[0]) elem_props_set(props, "p_integer", b"FrontAxisSign", front_axis[1]) elem_props_set(props, "p_integer", b"CoordAxis", coord_axis[0]) elem_props_set(props, "p_integer", b"CoordAxisSign", coord_axis[1]) elem_props_set(props, "p_integer", b"OriginalUpAxis", -1) elem_props_set(props, "p_integer", b"OriginalUpAxisSign", 1) elem_props_set(props, "p_double", b"UnitScaleFactor", scale_factor) elem_props_set(props, "p_double", b"OriginalUnitScaleFactor", scale_factor) elem_props_set(props, "p_color_rgb", b"AmbientColor", (0.0, 0.0, 0.0)) elem_props_set(props, "p_string", b"DefaultCamera", "Producer Perspective") # Global timing data. elem_props_set(props, "p_enum", b"TimeMode", 0) elem_props_set(props, "p_timestamp", b"TimeSpanStart", 0) elem_props_set(props, "p_timestamp", b"TimeSpanStop", 46186158000) elem_props_set(props, "p_double", b"CustomFrameRate", -1.0)
def getFullVersion(self): """Returns the full textual description of the current version, for example 'MakeHuman unstable 20141120' or 'MakeHuman 1.0.2'.""" self.trace() return makehuman.getVersionStr(True, True)
def fbx_header_elements(root, config, time=None): """ Write boiling code of FBX root. time is expected to be a datetime.datetime object, or None (using now() in this case). """ import makehuman app_vendor = "MakeHuman.org" app_name = "MakeHuman" app_ver = makehuman.getVersionStr() # ##### Start of FBXHeaderExtension element. header_ext = elem_empty(root, b"FBXHeaderExtension") elem_data_single_int32(header_ext, b"FBXHeaderVersion", FBX_HEADER_VERSION) elem_data_single_int32(header_ext, b"FBXVersion", FBX_VERSION) # No encryption! elem_data_single_int32(header_ext, b"EncryptionType", 0) if time is None: time = datetime.datetime.now() elem = elem_empty(header_ext, b"CreationTimeStamp") elem_data_single_int32(elem, b"Version", 1000) elem_data_single_int32(elem, b"Year", time.year) elem_data_single_int32(elem, b"Month", time.month) elem_data_single_int32(elem, b"Day", time.day) elem_data_single_int32(elem, b"Hour", time.hour) elem_data_single_int32(elem, b"Minute", time.minute) elem_data_single_int32(elem, b"Second", time.second) elem_data_single_int32(elem, b"Millisecond", time.microsecond // 1000) elem_data_single_string_unicode(header_ext, b"Creator", "%s - %s" % (app_name, app_ver)) # 'SceneInfo' seems mandatory to get a valid FBX file... # TODO use real values! # XXX Should we use scene.name.encode() here? scene_info = elem_data_single_string(header_ext, b"SceneInfo", fbx_name_class(b"GlobalInfo", b"SceneInfo")) scene_info.add_string(b"UserData") elem_data_single_string(scene_info, b"Type", b"UserData") elem_data_single_int32(scene_info, b"Version", FBX_SCENEINFO_VERSION) meta_data = elem_empty(scene_info, b"MetaData") elem_data_single_int32(meta_data, b"Version", FBX_SCENEINFO_VERSION) elem_data_single_string(meta_data, b"Title", b"") elem_data_single_string(meta_data, b"Subject", b"") elem_data_single_string(meta_data, b"Author", b"") elem_data_single_string(meta_data, b"Keywords", b"") elem_data_single_string(meta_data, b"Revision", b"") elem_data_single_string(meta_data, b"Comment", b"") props = elem_properties(scene_info) elem_props_set(props, "p_string_url", b"DocumentUrl", "/foobar.fbx") # TODO set to current export filename? elem_props_set(props, "p_string_url", b"SrcDocumentUrl", "/foobar.fbx") original = elem_props_compound(props, b"Original") original("p_string", b"ApplicationVendor", app_vendor) original("p_string", b"ApplicationName", app_name) original("p_string", b"ApplicationVersion", app_ver) original("p_datetime", b"DateTime_GMT", "01/01/1970 00:00:00.000") original("p_string", b"FileName", "/foobar.fbx") lastsaved = elem_props_compound(props, b"LastSaved") lastsaved("p_string", b"ApplicationVendor", app_vendor) lastsaved("p_string", b"ApplicationName", app_name) lastsaved("p_string", b"ApplicationVersion", app_ver) lastsaved("p_datetime", b"DateTime_GMT", "01/01/1970 00:00:00.000") # ##### End of FBXHeaderExtension element. # FileID is replaced by dummy value currently... elem_data_single_bytes(root, b"FileId", b"FooBar") # CreationTime is replaced by dummy value currently, but anyway... elem_data_single_string_unicode(root, b"CreationTime", "{:04}-{:02}-{:02} {:02}:{:02}:{:02}:{:03}" "".format(time.year, time.month, time.day, time.hour, time.minute, time.second, time.microsecond * 1000)) elem_data_single_string_unicode(root, b"Creator", "%s - %s" % (app_name, app_ver)) # ##### Start of GlobalSettings element. global_settings = elem_empty(root, b"GlobalSettings") elem_data_single_int32(global_settings, b"Version", 1000) props = elem_properties(global_settings) mesh_orientation = getMeshOrientation(config) up_axis, front_axis, coord_axis = RIGHT_HAND_AXES[mesh_orientation] # Currently not sure about that, but looks like default unit of FBX is cm... #scale_factor = 10.0/config.scale # MH scales the mesh coordinates, the scale factor is a constant scale_factor = 10 elem_props_set(props, "p_integer", b"UpAxis", up_axis[0]) elem_props_set(props, "p_integer", b"UpAxisSign", up_axis[1]) elem_props_set(props, "p_integer", b"FrontAxis", front_axis[0]) elem_props_set(props, "p_integer", b"FrontAxisSign", front_axis[1]) elem_props_set(props, "p_integer", b"CoordAxis", coord_axis[0]) elem_props_set(props, "p_integer", b"CoordAxisSign", coord_axis[1]) elem_props_set(props, "p_integer", b"OriginalUpAxis", -1) elem_props_set(props, "p_integer", b"OriginalUpAxisSign", 1) elem_props_set(props, "p_double", b"UnitScaleFactor", scale_factor) elem_props_set(props, "p_double", b"OriginalUnitScaleFactor", scale_factor) elem_props_set(props, "p_color_rgb", b"AmbientColor", (0.0, 0.0, 0.0)) elem_props_set(props, "p_string", b"DefaultCamera", "Producer Perspective") # Global timing data. elem_props_set(props, "p_enum", b"TimeMode", 0) elem_props_set(props, "p_timestamp", b"TimeSpanStart", 0) elem_props_set(props, "p_timestamp", b"TimeSpanStop", 46186158000) elem_props_set(props, "p_double", b"CustomFrameRate", -1)
def getFullVersion(self): """Returns the full textual description of the current version, for example 'MakeHuman unstable 20141120' or 'MakeHuman 1.0.2'.""" self.trace() return makehuman.getVersionStr(True,True)
os.chdir(controldir) os.system('find ' + controldir + ' -name "*.target" -exec "rm" "-f" {} ";"') f = open(svnrevfile,"r") svnrev = f.readline().rstrip() f.close() os.system("du -cks " + target + " | cut -f 1 | uniq > /tmp/makehumansize") f = open("/tmp/makehumansize","r") size = f.readline().rstrip() f.close() if makehuman.isRelease(): # Conform to: http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Version ver = "1:"+makehuman.getVersionStr().replace(' ', '.').lower() else: ver = svnrev os.system("sed -i -e 's/VERSION/" + ver + "/' control") os.system("sed -i -e 's/PKGNAME/" + package_name + "/' control") os.system("sed -i -e 's/REPLACES/" + package_replaces + "/' control") os.system("sed -i -e 's/SIZE/" + size + "/' control") if makehuman.isRelease(): ver = makehuman.getVersionStr() else: ver = svnrev os.system("sed -i -e 's/VERSION/" + ver + "/' MakeHuman.desktop") shortcut = os.path.join(applications,"MakeMuman.desktop") os.system("mv MakeHuman.desktop " + shortcut)