Esempio n. 1
0
    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 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)
Esempio n. 3
0
    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()
Esempio n. 4
0
    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)
Esempio n. 5
0
    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)
Esempio n. 6
0
    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
Esempio n. 7
0
    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)
Esempio n. 8
0
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)
Esempio n. 9
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)
Esempio n. 10
0
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)
Esempio n. 11
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)
Esempio n. 12
0
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)