Пример #1
0
    def __init__(self, category):
        super(ProfilingTaskView, self).__init__(category, 'Profile')
        self.profile = None

        self.sortKey = 'prim'
        self.sortDir = 0

        self.table = self.addTopWidget(gui.TableView())

        self.sortKeyBox = self.addLeftWidget(gui.GroupBox('Sort'))
        group = []
        for name, key in Stat._fields:
            radio = self.sortKeyBox.addWidget(KeyRadioButton(group, name, key))

        self.sortDirBox = self.addLeftWidget(gui.GroupBox('Sort'))
        group = []
        for name, dir in [('Descending', 0), ('Ascending', 1)]:
            radio = self.sortDirBox.addWidget(DirRadioButton(group, name, dir))

        self.saveBox = self.addLeftWidget(gui.GroupBox('Save'))
        self.save = gui.BrowseButton('save')
        self.saveBox.addWidget(self.save)
        self.save.setEnabled(False)

        self.table.setColumnCount(len(self._columns))
        self.table.setHorizontalHeaderLabels(self._columns)
        self.table.setColumnWidth(len(self._columns) - 1, 300)

        @self.save.mhEvent
        def onClicked(path):
            if path:
                self.saveStats(path)
Пример #2
0
    def __init__(self, category):
        gui3d.TaskView.__init__(self, category, 'Expression mixer')

        self.human = gui3d.app.selectedHuman

        self.base_bvh = None
        self.base_anim = None

        self.sliders = []
        self.modifiers = {}

        savebox = self.addRightWidget(gui.GroupBox("Save"))
        loadbox = self.addRightWidget(gui.GroupBox('Load'))
        resetbox = self.addRightWidget(gui.GroupBox('Reset'))

        self.nameField = savebox.addWidget(TextEdit("Name"))
        self.descrField = savebox.addWidget(TextEdit("Description"))
        self.tagsField = savebox.addWidget(TextEdit("Tags (separate with ;)"))
        self.authorField = savebox.addWidget(TextEdit("Author"))
        self.copyrightField = savebox.addWidget(TextEdit("Copyright"))
        self.licenseField = savebox.addWidget(TextEdit("License"))
        self.websiteField = savebox.addWidget(TextEdit("Website"))

        lic = mh.getAssetLicense()
        self.authorField.setValue(lic.author)
        self.copyrightField.setValue(lic.copyright)
        self.licenseField.setValue(lic.license)
        self.websiteField.setValue(lic.homepage)
        self.descrField.setValue("No description set")
        self.tagsField.setValue("")

        self.saveBtn = savebox.addWidget(
            gui.BrowseButton(mode='save', label="Save pose"))
        self.saveBtn.setFilter("MakeHuman blend pose file (*.mhpose)")
        savepath = getpath.getDataPath('expressions')
        if not os.path.exists(savepath):
            os.makedirs(savepath)
        self.saveBtn.setDirectory(getpath.getDataPath('expressions'))

        self.loadBtn = loadbox.addWidget(
            gui.BrowseButton(mode='open', label='Load pose'))
        self.loadBtn.setFilter('MakeHuman Poses (*.mhpose)')

        self.resetBtn = resetbox.addWidget(gui.Button('Reset'))

        @self.saveBtn.mhEvent
        def onClicked(path):
            if path:
                if not os.path.splitext(path)[1]:
                    path = path + ".mhpose"
                self.saveCurrentPose(path)

        @self.loadBtn.mhEvent
        def onClicked(path):
            if os.path.isfile(path):
                self.loadPose(path)

        @self.resetBtn.mhEvent
        def onClicked(event):
            self.resetExpression()
Пример #3
0
    def __init__(self, category):
        gui3d.TaskView.__init__(self, category, 'Skeleton Debug')
        self.human = gui3d.app.selectedHuman

        self.displayBox = self.addRightWidget(gui.GroupBox('Display'))

        self.selectedBone = None
        self.boneBox = self.addRightWidget(gui.GroupBox('Bones'))
        self.boneSelector = []

        self.xray_mat = None

        self.skelMesh = None
        self.skelObj = None

        self.showWeightsTggl = self.displayBox.addWidget(
            gui.CheckBox("Show bone weights"))

        @self.showWeightsTggl.mhEvent
        def onClicked(event):
            if self.showWeightsTggl.selected:
                # Highlight bone selected in bone explorer again
                for rdio in self.boneSelector:
                    if rdio.selected:
                        self.highlightBone(str(rdio.text()))
            else:
                self.clearBoneWeights()

        self.showWeightsTggl.setSelected(True)
Пример #4
0
    def __init__(self, category, app):
        self.app = app
        gui3d.TaskView.__init__(self, category, 'Custom')
        self.targetsPath = getpath.getPath('data/custom')
        if not os.path.exists(self.targetsPath):
            os.makedirs(self.targetsPath)

        self.optionsBox = self.addRightWidget(gui.GroupBox('Options'))
        rescanButton = self.optionsBox.addWidget(
            gui.Button("Rescan targets' folder"))

        self.folderBox = self.addRightWidget(gui.GroupBox('Folders'))
        self.targetsBox = self.addLeftWidget(gui.StackedBox())

        self.human = app.selectedHuman

        @rescanButton.mhEvent
        def onClicked(event):
            self.searchTargets()

        self.folders = []
        self.sliders = []
        self.modifiers = {}

        self.searchTargets()
Пример #5
0
    def build(self, options, taskview):
        import gui
        Exporter.build(self, options, taskview)

        self.hiddenGeom = options.addWidget(
            gui.CheckBox("Helper geometry", False))
        self.facePoseUnits = options.addWidget(
            gui.CheckBox("Facial pose-units", False))

        orients = []
        box = options.addWidget(gui.GroupBox("Orientation"))
        self.yUpFaceZ = box.addWidget(
            gui.RadioButton(orients, "Y up, face Z", True))
        self.yUpFaceX = box.addWidget(
            gui.RadioButton(orients, "Y up, face X", False))
        self.zUpFaceNegY = box.addWidget(
            gui.RadioButton(orients, "Z up, face -Y", False))
        self.zUpFaceX = box.addWidget(
            gui.RadioButton(orients, "Z up, face X", False))

        csyses = []
        box = options.addWidget(gui.GroupBox("Bone orientation"))
        self.localY = box.addWidget(
            gui.RadioButton(csyses, "Along local Y", True))
        self.localX = box.addWidget(
            gui.RadioButton(csyses, "Along local X", False))
        self.localG = box.addWidget(
            gui.RadioButton(csyses, "Local = Global", False))
Пример #6
0
    def __init__(self, category):
        
        gui3d.TaskView.__init__(self, category, 'Help')

        aboutBox = self.addLeftWidget(gui.GroupBox('About MakeHuman'))
        self.aboutButton = aboutBox.addWidget(gui.Button('About / License'))
        self.websiteButton = aboutBox.addWidget(gui.Button('Website'))
        self.facebookButton = aboutBox.addWidget(gui.Button('FaceBook page'))

        optionsBox = self.addLeftWidget(gui.GroupBox('Support'))
        self.faqButton = optionsBox.addWidget(gui.Button('FAQ'))
        self.forumButton = optionsBox.addWidget(gui.Button('Forum'))
        self.manualButton = optionsBox.addWidget(gui.Button('Wiki'))
        self.patreonButton = optionsBox.addWidget(gui.Button('Patreon'))
        self.reportBugButton = optionsBox.addWidget(gui.Button('Report bug'))
        self.requestFeatureButton = optionsBox.addWidget(gui.Button('Request feature'))

        copyBox = self.addLeftWidget(gui.GroupBox('Copy to clipboard'))
        self.versionButton = copyBox.addWidget(gui.Button('Version String'))

        @self.aboutButton.mhEvent
        def onClicked(event):
            gui3d.app.about()

        @self.websiteButton.mhEvent
        def onClicked(event):
            webbrowser.open('http://www.makehumancommunity.org')

        @self.manualButton.mhEvent
        def onClicked(event):
            webbrowser.open('http://www.makehumancommunity.org/wiki/Main_Page')
        
        @self.reportBugButton.mhEvent
        def onClicked(event):
            webbrowser.open('http://bugtracker.makehumancommunity.org/issues/new?project_id=makehuman')
          
        @self.requestFeatureButton.mhEvent
        def onClicked(event):
            webbrowser.open('http://bugtracker.makehumancommunity.org/issues/new?project_id=makehuman&issue[tracker_id]=2')

        @self.faqButton.mhEvent
        def onClicked(event):
            webbrowser.open('http://www.makehumancommunity.org/wiki/FAQ:Index')

        @self.forumButton.mhEvent
        def onClicked(event):
            webbrowser.open('http://www.makehumancommunity.org/forum')

        @self.patreonButton.mhEvent
        def onClicked(event):
            webbrowser.open('https://www.patreon.com/makehuman/overview')

        @self.facebookButton.mhEvent
        def onClicked(event):
            webbrowser.open('https://www.facebook.com/makehuman/')

        @self.versionButton.mhEvent
        def onClicked(event):
            mhv = MHVersion()
            gui3d.app.clipboard().setText(mhv.getFullVersionStr())
Пример #7
0
    def __init__(self, category, mainLib):
        gui3d.TaskView.__init__(self, category, 'Skeleton Debug')
        self.mainLib = mainLib
        mainLib.debugLib = self

        '''
        displayBox = mainLib.displayBox
        mainLib.showWeightsTggl = displayBox.addWidget(gui.CheckBox("Show bone weights"))
        @mainLib.showWeightsTggl.mhEvent
        def onClicked(event):
            if mainLib.showWeightsTggl.selected:
                # Highlight bone selected in bone explorer again
                for rdio in self.boneSelector:
                    if rdio.selected:
                        mainLib.highlightBone(str(rdio.text()))
            else:
                mainLib.clearBoneWeights()
        mainLib.showWeightsTggl.setSelected(True)
        '''

        self.boneBox = self.addRightWidget(gui.GroupBox('Bones'))
        self.boneSelector = []

        # Add event listeners to skeleton mesh for bone highlighting
        @mainLib.mhEvent
        def onMouseEntered(event):
            """
            Event fired when mouse hovers over a skeleton mesh facegroup
            """
            gui3d.TaskView.onMouseEntered(self, event)
            mainLib.removeBoneHighlights()
            mainLib.highlightBone(event.group.name)

        @mainLib.mhEvent
        def onMouseExited(event):
            """
            Event fired when mouse hovers off of a skeleton mesh facegroup
            """
            gui3d.TaskView.onMouseExited(self, event)
            mainLib.removeBoneHighlights()

            # Highlight bone selected in bone explorer again
            for rdio in self.boneSelector:
                if rdio.selected:
                    mainLib.clearBoneWeights()
                    mainLib.highlightBone(str(rdio.text()))

        #
        #   Options. For fine-tuning
        #
        self.optionsBox = self.addLeftWidget(gui.GroupBox('Rig Options'))
        selector = mainLib.optionsSelector = armature.options.ArmatureSelector(self.optionsBox)
        selector.fromOptions(mainLib.amtOptions)

        self.amtUpdateBtn = self.optionsBox.addWidget(gui.Button("Update Bones"))
        @self.amtUpdateBtn.mhEvent
        def onClicked(event):
            mainLib.updateSkeleton()
            mainLib.descrLbl.setText("No description available")
Пример #8
0
    def __init__(self, category):
        gui3d.TaskView.__init__(self, category, 'Shortcuts')

        box = None
        self.widgets = []

        row = [0]

        def add(action):
            box.addWidget(gui.TextView(action.text), row[0], 0)
            w = box.addWidget(AppShortcutEdit(action), row[0], 1)
            self.widgets.append(w)
            row[0] += 1

        actions = gui3d.app.actions

        box = self.cameraBox = self.addLeftWidget(gui.GroupBox('Camera'))
        add(actions.rotateU)
        add(actions.rotateD)
        add(actions.rotateL)
        add(actions.rotateR)
        add(actions.panU)
        add(actions.panD)
        add(actions.panL)
        add(actions.panR)
        add(actions.zoomIn)
        add(actions.zoomOut)
        add(actions.front)
        add(actions.right)
        add(actions.top)
        add(actions.back)
        add(actions.left)
        add(actions.bottom)
        add(actions.resetCam)

        box = self.actionBox = self.addRightWidget(gui.GroupBox('Actions'))
        add(actions.undo)
        add(actions.redo)

        box = self.navigationBox = self.addRightWidget(
            gui.GroupBox('Navigation'))
        add(actions.modelling)
        add(actions.save)
        add(actions.load)
        add(actions.export)
        add(actions.rendering)
        add(actions.help)
        add(actions.exit)

        restorebox = gui.GroupBox('Restore Settings')
        self.addLeftWidget(restorebox)
        self.restoreBtn = gui.Button('Restore to defaults')
        restorebox.addWidget(self.restoreBtn)

        @self.restoreBtn.mhEvent
        def onClicked(event):
            gui3d.app.resetShortcuts()
            self.updateShortcuts()
Пример #9
0
    def __init__(self, category):

        gui3d.TaskView.__init__(self, category, u"Help")

        aboutBox = self.addLeftWidget(gui.GroupBox(u"About MakeHuman"))
        self.aboutButton = aboutBox.addWidget(gui.Button(u"About"))
        self.websiteButton = aboutBox.addWidget(gui.Button(u"Website"))
        self.facebookButton = aboutBox.addWidget(gui.Button(u"FaceBook page"))

        optionsBox = self.addLeftWidget(gui.GroupBox(u"Support"))
        self.forumButton = optionsBox.addWidget(gui.Button(u"Forum"))
        self.manualButton = optionsBox.addWidget(gui.Button(u"Wiki"))
        self.reportBugButton = optionsBox.addWidget(gui.Button(u"Report bug"))
        self.requestFeatureButton = optionsBox.addWidget(
            gui.Button(u"Request feature"))

        copyBox = self.addLeftWidget(gui.GroupBox(u"Copy to clipboard"))
        self.versionButton = copyBox.addWidget(gui.Button(u"Version String"))

        @self.aboutButton.mhEvent
        def onClicked(event):
            gui3d.app.about()

        @self.websiteButton.mhEvent
        def onClicked(event):
            webbrowser.open("http://www.makehumancommunity.org")

        @self.manualButton.mhEvent
        def onClicked(event):
            webbrowser.open("http://www.makehumancommunity.org/wiki/Main_Page")

        @self.reportBugButton.mhEvent
        def onClicked(event):
            webbrowser.open(
                "http://bugtracker.makehumancommunity.org/issues/new?project_id=makehuman"
            )

        @self.requestFeatureButton.mhEvent
        def onClicked(event):
            webbrowser.open(
                "http://bugtracker.makehumancommunity.org/issues/new?project_id=makehuman&issue[tracker_id]=2"
            )

        @self.forumButton.mhEvent
        def onClicked(event):
            webbrowser.open("http://www.makehumancommunity.org/forum")

        @self.facebookButton.mhEvent
        def onClicked(event):
            webbrowser.open("https://www.facebook.com/makehuman/")

        @self.versionButton.mhEvent
        def onClicked(event):
            version_string = u"v" + mh.getVersionDigitsStr() + u" " + os.getenv(u"HGBRANCH", u"") \
                             + u" (r" + os.getenv(u"HGREVISION", u"") + " " + os.getenv(u"HGNODEID", u"") + ")"
            gui3d.app.clipboard().setText(version_string)
Пример #10
0
    def __init__(self, category):

        gui3d.TaskView.__init__(self, category, 'Help')

        aboutBox = self.addLeftWidget(gui.GroupBox('About MakeHuman'))
        self.aboutButton = aboutBox.addWidget(gui.Button("About"))
        self.websiteButton = aboutBox.addWidget(gui.Button("Website"))
        self.facebookButton = aboutBox.addWidget(gui.Button("FaceBook page"))

        optionsBox = self.addLeftWidget(gui.GroupBox('Support'))
        self.forumButton = optionsBox.addWidget(gui.Button("Forum"))
        self.manualButton = optionsBox.addWidget(gui.Button("Wiki"))
        self.reportBugButton = optionsBox.addWidget(gui.Button("Report bug"))
        self.requestFeatureButton = optionsBox.addWidget(
            gui.Button("Request feature"))

        copyBox = self.addLeftWidget(gui.GroupBox('Copy to clipboard'))
        self.versionButton = copyBox.addWidget(gui.Button('Version String'))

        @self.aboutButton.mhEvent
        def onClicked(event):
            gui3d.app.about()

        @self.websiteButton.mhEvent
        def onClicked(event):
            webbrowser.open('http://www.makehumancommunity.org')

        @self.manualButton.mhEvent
        def onClicked(event):
            webbrowser.open('http://www.makehumancommunity.org/wiki/Main_Page')

        @self.reportBugButton.mhEvent
        def onClicked(event):
            webbrowser.open(
                'http://bugtracker.makehumancommunity.org/issues/new?project_id=makehuman'
            )

        @self.requestFeatureButton.mhEvent
        def onClicked(event):
            webbrowser.open(
                'http://bugtracker.makehumancommunity.org/issues/new?project_id=makehuman&issue[tracker_id]=2'
            )

        @self.forumButton.mhEvent
        def onClicked(event):
            webbrowser.open('http://www.makehumancommunity.org/forum')

        @self.facebookButton.mhEvent
        def onClicked(event):
            webbrowser.open('https://www.facebook.com/makehuman/')

        @self.versionButton.mhEvent
        def onClicked(event):
            version_string ='v' + mh.getVersionDigitsStr()  + ' ' + os.getenv('HGBRANCH','') \
                            + ' (r' + os.getenv('HGREVISION','') + ' ' + os.getenv('HGNODEID','') + ')'
            gui3d.app.clipboard().setText(version_string)
Пример #11
0
    def __init__(self, category):
        
        gui3d.TaskView.__init__(self, category, 'Help')

        aboutBox = self.addLeftWidget(gui.GroupBox('About MakeHuman'))
        self.aboutButton = aboutBox.addWidget(gui.Button('About'))
        self.websiteButton = aboutBox.addWidget(gui.Button('Website'))
        self.facebookButton = aboutBox.addWidget(gui.Button('FaceBook page'))

        optionsBox = self.addLeftWidget(gui.GroupBox('Support'))
        self.faqButton = optionsBox.addWidget(gui.Button('FAQ'))
        self.forumButton = optionsBox.addWidget(gui.Button('Forum'))
        self.manualButton = optionsBox.addWidget(gui.Button('Wiki'))
        self.reportBugButton = optionsBox.addWidget(gui.Button('Report bug'))
        self.requestFeatureButton = optionsBox.addWidget(gui.Button('Request feature'))

        copyBox = self.addLeftWidget(gui.GroupBox('Copy to clipboard'))
        self.versionButton = copyBox.addWidget(gui.Button('Version String'))

        @self.aboutButton.mhEvent
        def onClicked(event):
            gui3d.app.about()

        @self.websiteButton.mhEvent
        def onClicked(event):
            webbrowser.open('http://www.makehumancommunity.org')

        @self.manualButton.mhEvent
        def onClicked(event):
            webbrowser.open('http://www.makehumancommunity.org/wiki/Main_Page')
        
        @self.reportBugButton.mhEvent
        def onClicked(event):
            webbrowser.open('http://bugtracker.makehumancommunity.org/issues/new?project_id=makehuman')
          
        @self.requestFeatureButton.mhEvent
        def onClicked(event):
            webbrowser.open('http://bugtracker.makehumancommunity.org/issues/new?project_id=makehuman&issue[tracker_id]=2')

        @self.faqButton.mhEvent
        def onClicked(event):
            webbrowser.open('http://www.makehumancommunity.org/wiki/FAQ:Index')

        @self.forumButton.mhEvent
        def onClicked(event):
            webbrowser.open('http://www.makehumancommunity.org/forum')
            
        @self.facebookButton.mhEvent
        def onClicked(event):
            webbrowser.open('https://www.facebook.com/makehuman/')

        @self.versionButton.mhEvent
        def onClicked(event):
            version_string = mh.getVersionDigitsStr() + ' ' + gitutils.getCurrentBranch() \
                             + ':' + gitutils.getCurrentCommit(short=True)
            gui3d.app.clipboard().setText(version_string)
Пример #12
0
    def __init__(self, category):
        guirender.RenderTaskView.__init__(self, category, 'Mitsuba')

        # Buttons
        pathBox = self.addLeftWidget(gui.GroupBox('Mitsuba  bin  path'))
        mitsuba_bin = gui3d.app.settings.get('mitsuba_bin', '')
        self.path= pathBox.addWidget(gui.TextEdit(str(mitsuba_bin)), 0, 0, 1, 2)
        self.browse = pathBox.addWidget(gui.BrowseButton('dir'), 1, 0, 1, 1)
        self.browse.setPath(mitsuba_bin)
        if sys.platform == 'win32':
            self.browse.setFilter('Executable programs (*.exe);;All files (*.*)')
        #
        @self.path.mhEvent
        def onChange(value):
            gui3d.app.settings['mitsuba_bin'] = 'Enter your path' if not value else str(value)

        @self.browse.mhEvent
        def onClicked(path):
            if os.path.isfile(path):
                gui3d.app.settings['mitsuba_bin'] = path
                self.path.setText(path)

        # Type of lighting method
        lightingBox = self.addLeftWidget(gui.GroupBox('Integrators'))
        lighting = []
        self.dlButton = lightingBox.addWidget(gui.RadioButton(lighting, 'DirectLighting', selected = True))
        self.ptButton = lightingBox.addWidget(gui.RadioButton(lighting, 'Path Tracing'))
        self.pmButton = lightingBox.addWidget(gui.RadioButton(lighting, 'Photon Mapping'))

        #
        samplerBox = self.addLeftWidget(gui.GroupBox('Sampler Options'))
        sampler = []
        self.lowdButton = samplerBox.addWidget(gui.RadioButton(sampler, 'Low Discrepancy', selected = True))
        self.indepButton = samplerBox.addWidget(gui.RadioButton(sampler, 'Independent'))
        #
        renderBox = self.addLeftWidget(gui.GroupBox('Render Options'))
        source=[]
        self.consoleButton = renderBox.addWidget(gui.RadioButton(source, 'Render console'))
        self.guiButton = renderBox.addWidget(gui.RadioButton(source, 'Render GUI', selected = True))
        self.xmlButton = renderBox.addWidget(gui.RadioButton(source, 'Write XML'))
        self.renderButton = renderBox.addWidget(gui.Button('Render'))


        @self.renderButton.mhEvent
        def onClicked(event):

            reload(mh2mitsuba)  # Avoid having to close and reopen MH for every coding change (can be removed once testing is complete)
            mh2mitsuba.MitsubaExport(gui3d.app.selectedHuman.mesh, gui3d.app,
                {'source':'console' if self.consoleButton.selected else 'gui' if self.guiButton.selected else 'xml',
                 'lighting':'dl' if self.dlButton.selected else 'pt' if self.ptButton.selected else 'pm',
                 'sampler':'low' if self.lowdButton.selected else 'ind'})
Пример #13
0
    def __init__(self, category, backgroundChooserView):
        self.human = gui3d.app.selectedHuman

        self.backgroundImage = backgroundChooserView.backgroundImage
        self.texture = backgroundChooserView.texture

        self.backgroundChooserView = backgroundChooserView

        gui3d.TaskView.__init__(self, category, 'Projection')

        self.projectionBox = self.addLeftWidget(gui.GroupBox('Projection'))

        self.backgroundBox = self.addLeftWidget(
            gui.GroupBox('Background settings'))
        self.chooseBGButton = self.backgroundBox.addWidget(
            gui.Button('Choose background'))

        @self.chooseBGButton.mhEvent
        def onClicked(event):
            mh.changeTask('Settings', 'Background')

        self.projectBackgroundButton = self.projectionBox.addWidget(
            gui.Button('Project background'))

        @self.projectBackgroundButton.mhEvent
        def onClicked(event):
            self.projectBackground()

        self.projectLightingButton = self.projectionBox.addWidget(
            gui.Button('Project lighting'))

        @self.projectLightingButton.mhEvent
        def onClicked(event):
            self.projectLighting()

        self.projectUVButton = self.projectionBox.addWidget(
            gui.Button('Project UV topology'))

        @self.projectUVButton.mhEvent
        def onClicked(event):
            self.projectUV()

        displayBox = self.addRightWidget(gui.GroupBox('Display settings'))
        self.shadelessButton = displayBox.addWidget(gui.CheckBox('Shadeless'))

        @self.shadelessButton.mhEvent
        def onClicked(event):
            gui3d.app.selectedHuman.setShadeless(
                1 if self.shadelessButton.selected else 0)
Пример #14
0
    def __init__(self, category):

        gui3d.TaskView.__init__(self, category, 'Help')

        optionsBox = self.addLeftWidget(gui.GroupBox('Support options'))
        self.manualButton = optionsBox.addWidget(gui.Button("Manual"))
        self.reportBugButton = optionsBox.addWidget(gui.Button("Report bug"))
        self.requestFeatureButton = optionsBox.addWidget(
            gui.Button("Request feature"))
        self.forumButton = optionsBox.addWidget(gui.Button("Forum"))
        self.facebookButton = optionsBox.addWidget(gui.Button("FaceBook page"))

        @self.manualButton.mhEvent
        def onClicked(event):
            webbrowser.open('http://www.makehuman.org/documentation')

        @self.reportBugButton.mhEvent
        def onClicked(event):
            webbrowser.open(
                'http://bugtracker.makehuman.org/issues/new?project_id=makehuman'
            )

        @self.requestFeatureButton.mhEvent
        def onClicked(event):
            webbrowser.open(
                'http://bugtracker.makehuman.org/issues/new?project_id=makehuman&issue[tracker_id]=2'
            )

        @self.forumButton.mhEvent
        def onClicked(event):
            webbrowser.open('http://www.makehuman.org/forum/')

        @self.facebookButton.mhEvent
        def onClicked(event):
            webbrowser.open('https://www.facebook.com/makehuman/')
    def __init__(self, category):
        gui3d.TaskView.__init__(self, category, 'Data generation')
        self.human = gui3d.app.selectedHuman

        box = self.addLeftWidget(gui.GroupBox('Data generation'))
        self.button = box.addWidget(gui.Button('Generate'))
        self.path_label = box.addWidget(gui.TextView('Path'))
        self.path = box.addWidget(gui.TextEdit())
        self.num_label = box.addWidget(gui.TextView('# Meshes'))
        self.num = box.addWidget(gui.TextEdit())

        @self.button.mhEvent
        def onClicked(event):
            num_gen = int(self.num.getText())
            t0 = time.time()

            for i in range(num_gen):
                randomize(self.human, 0.5, True, True, False, True)
                cfg = Mhx2Config()
                cfg.useTPose = False
                cfg.useBinary = True
                cfg.useExpressions = False
                cfg.usePoses = True
                cfg.feetOnGround = True
                cfg.scale, cfg.unit = 0.1, 'meter'
                cfg.setHuman(self.human)
                from . import mh2mhx2
                mh2mhx2.exportMhx2('%s/%s.mhx2' % (self.path.getText(), i),
                                   cfg)

                eta = int(
                    (num_gen - 1 - i) * ((time.time() - t0) / (i + 1)) / 60)
                gui3d.app.statusPersist('ETA: %s minutes' % eta)
    def __init__(self, category):
        gui3d.TaskView.__init__(self,
                                category,
                                'Detail modelling',
                                label='Micro')
        self.tool = None

        self.sliders = []

        self.modifiersBox = self.addLeftWidget(gui.GroupBox('Modifiers'))

        self.detailButtonGroup = []

        self.tool = Detail3dTool(gui3d.app, True, 'translation')

        self.translationButton = self.modifiersBox.addWidget(
            gui.RadioButton(self.detailButtonGroup, 'Move', True))
        self.scaleButton = self.modifiersBox.addWidget(
            gui.RadioButton(self.detailButtonGroup, label='Scale'))

        @self.translationButton.mhEvent
        def onClicked(event):
            self.tool = Detail3dTool(gui3d.app, True, 'translation')
            gui3d.app.tool = self.tool

        @self.scaleButton.mhEvent
        def onClicked(event):
            self.tool = Detail3dTool(gui3d.app, True, 'scale')
            gui3d.app.tool = self.tool

        #self.microButton = self.modifiersBox.addWidget(gui.ToggleButton('Micro'))
        """    
Пример #17
0
    def addSlider(self, sliderCategory, slider):
        # Get category groupbox
        categoryName = sliderCategory.capitalize()
        if categoryName not in [
                unicode(g.title()) for g in self.groupBoxes.values()
        ]:
            # Create box
            box = self.groupBox.addWidget(gui.GroupBox(categoryName))
            self.groupBoxes[categoryName] = box

            # Create radiobutton
            isFirstBox = len(self.radioButtons) == 0
            self.categoryBox.addWidget(
                GroupBoxRadioButton(self,
                                    self.radioButtons,
                                    categoryName,
                                    box,
                                    selected=isFirstBox))
            if isFirstBox:
                self.groupBox.showWidget(self.groupBoxes.values()[0])
        else:
            box = self.groupBoxes[categoryName]

        # Add slider to groupbox
        self.modifiers[slider.modifier.name.replace(
            '|', '-'
        )] = slider.modifier  # TODO this strange naming scheme is legacy for MHM compatibility
        box.addWidget(slider)
        self.sliders.append(slider)

        self.updateMacro()
Пример #18
0
    def __init__(self,
                 category,
                 name,
                 label=None,
                 saveName=None,
                 cameraView=None):
        if label is None:
            label = name.capitalize()
        if saveName is None:
            saveName = name
        # JH: Hack to get around issue #396 for 1.0.1 release. For 1.1 translation strings should be updated.
        if label == "Arms and legs":
            label = "Arms and Legs"

        super(ModifierTaskView, self).__init__(category, name, label=label)

        self.saveName = saveName
        self.cameraFunc = _getCamFunc(cameraView)

        self.groupBoxes = OrderedDict()
        self.radioButtons = []
        self.sliders = []
        self.modifiers = {}

        self.categoryBox = self.addRightWidget(gui.GroupBox('Category'))
        self.groupBox = self.addLeftWidget(gui.StackedBox())

        self.showMacroStats = False
Пример #19
0
    def __init__(self, category):

        gui3d.TaskView.__init__(self, category, 'Help')

        optionsBox = self.addLeftWidget(gui.GroupBox('Support options'))
        self.manualButton = optionsBox.addWidget(gui.Button("Manual"))
        self.reportBugButton = optionsBox.addWidget(gui.Button("Report bug"))
        self.requestFeatureButton = optionsBox.addWidget(
            gui.Button("Request feature"))
        self.donateButton = optionsBox.addWidget(gui.Button("Donate"))

        @self.manualButton.mhEvent
        def onClicked(event):
            webbrowser.open(
                'http://download.tuxfamily.org/makehuman/makehuman_a_manual.pdf'
            )

        @self.reportBugButton.mhEvent
        def onClicked(event):
            webbrowser.open('http://code.google.com/p/makehuman/issues/entry')

        @self.requestFeatureButton.mhEvent
        def onClicked(event):
            webbrowser.open(
                'http://code.google.com/p/makehuman/issues/entry?template=Request%20feature'
            )

        @self.donateButton.mhEvent
        def onClicked(event):
            webbrowser.open(
                'https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=34KYQRLBE2K3N'
            )
Пример #20
0
    def __init__(self, category):
        gui3d.TaskView.__init__(self, category, 'Mouse')

        row = [0]
        def add(widget, name, method):
            widget.addWidget(gui.TextView(name), row[0], 0)
            widget.addWidget(AppMouseActionEdit(method), row[0], 1)
            row[0] += 1

        speedBox = self.addLeftWidget(gui.SliderBox('3D Viewport Speed'))
        self.normal = speedBox.addWidget(gui.Slider(gui3d.app.settings.get('lowspeed', 1), 1, 10,
            ["Normal speed",": %d"]))

        self.mouseBox = self.addLeftWidget(gui.GroupBox('Camera'))

        add(self.mouseBox, "Move",   gui3d.app.mouseTranslate)
        add(self.mouseBox, "Rotate", gui3d.app.mouseRotate)
        add(self.mouseBox, "Zoom",   gui3d.app.mouseZoom)

        self.invertMouseWheel = self.mouseBox.addWidget(gui.CheckBox("Invert wheel", gui3d.app.settings.get('invertMouseWheel', False)))
        
        @self.invertMouseWheel.mhEvent
        def onClicked(event):
            gui3d.app.settings['invertMouseWheel'] = self.invertMouseWheel.selected

        @self.normal.mhEvent
        def onChange(value):
            gui3d.app.settings['lowspeed'] = value
Пример #21
0
    def __init__(self, category):

        gui3d.TaskView.__init__(self, category, 'Help')

        optionsBox = self.addLeftWidget(gui.GroupBox('Support options'))
        self.manualButton = optionsBox.addWidget(gui.Button("Manual"))
        self.reportBugButton = optionsBox.addWidget(gui.Button("Report bug"))
        self.requestFeatureButton = optionsBox.addWidget(
            gui.Button("Request feature"))
        self.forumButton = optionsBox.addWidget(gui.Button("Forum"))
        self.facebookButton = optionsBox.addWidget(gui.Button("FaceBook page"))

        @self.manualButton.mhEvent
        def onClicked(event):
            webbrowser.open('http://www.makehuman.org/documentation')

        @self.reportBugButton.mhEvent
        def onClicked(event):
            webbrowser.open('http://code.google.com/p/makehuman/issues/entry')

        @self.requestFeatureButton.mhEvent
        def onClicked(event):
            webbrowser.open(
                'http://code.google.com/p/makehuman/issues/entry?template=Request%20feature'
            )

        @self.forumButton.mhEvent
        def onClicked(event):
            webbrowser.open('http://www.makehuman.org/forum/')

        @self.facebookButton.mhEvent
        def onClicked(event):
            webbrowser.open('https://www.facebook.com/makehuman/')
Пример #22
0
    def __init__(self, category):
        super(ViewerTaskView, self).__init__(category, 'Viewer')
        self.image = self.addTopWidget(gui.ZoomableImageView())
        self.path = None

        tools = self.addLeftWidget(gui.GroupBox('Tools'))
        self.refrBtn = tools.addWidget(gui.Button('Refresh'))
        self.saveBtn = tools.addWidget(gui.Button('Save As...'))

        @self.saveBtn.mhEvent
        def onClicked(event):
            if not self.path:
                if not os.path.exists(mh.getPath('render')):
                    os.makedirs(mh.getPath('render'))
                self.path = mh.getPath('render')
            filename = mh.getSaveFileName(os.path.splitext(self.path)[0],
                                          'PNG Image (*.png);;JPEG Image (*.jpg);;All files (*.*)')
            if filename:
                self.path = os.path.dirname(filename)
                self.image.save(filename)

        @self.refrBtn.mhEvent
        def onClicked(event):
            if not self.path:
                return
            self.image.setImage(self.path)
    def addSlider(self, sliderCategory, slider, enabledCondition=None):
        # Get category groupbox
        categoryName = sliderCategory.capitalize()
        if categoryName not in self.groupBoxes:
            # Create box
            box = self.groupBox.addWidget(gui.GroupBox(categoryName))
            self.groupBoxes[categoryName] = box

            # Create radiobutton
            isFirstBox = len(self.radioButtons) == 0
            self.categoryBox.addWidget(
                GroupBoxRadioButton(self,
                                    self.radioButtons,
                                    categoryName,
                                    box,
                                    selected=isFirstBox))
            if isFirstBox:
                self.groupBox.showWidget(self.groupBoxes.values()[0])
        else:
            box = self.groupBoxes[categoryName]

        # Add slider to groupbox
        self.modifiers[slider.modifier.fullName] = slider.modifier
        box.addWidget(slider)
        slider.enabledCondition = enabledCondition
        self.sliders.append(slider)
Пример #24
0
    def __init__(self,
                 category,
                 name,
                 label=None,
                 saveName=None,
                 cameraView=None):
        if label is None:
            label = name.capitalize()
        if saveName is None:
            saveName = name

        super(ModifierTaskView, self).__init__(category, name, label=label)

        self.saveName = saveName
        self.cameraFunc = _getCamFunc(cameraView)

        self.groupBoxes = OrderedDict()
        self.radioButtons = []
        self.sliders = []
        self.modifiers = {}

        self.categoryBox = self.addRightWidget(gui.GroupBox('Category'))
        self.groupBox = self.addLeftWidget(gui.StackedBox())

        self.showMacroStats = False
        self.human = gui3d.app.selectedHuman
Пример #25
0
    def __init__(self, category):

        gui3d.TaskView.__init__(self, category, 'Help')

        aboutBox = self.addLeftWidget(gui.GroupBox('About MakeHuman'))
        self.aboutButton = aboutBox.addWidget(gui.Button("About"))
        self.websiteButton = aboutBox.addWidget(gui.Button("Website"))
        self.facebookButton = aboutBox.addWidget(gui.Button("FaceBook page"))

        optionsBox = self.addLeftWidget(gui.GroupBox('Support'))
        self.forumButton = optionsBox.addWidget(gui.Button("Forum"))
        self.manualButton = optionsBox.addWidget(gui.Button("Wiki"))
        self.reportBugButton = optionsBox.addWidget(gui.Button("Report bug"))
        self.requestFeatureButton = optionsBox.addWidget(
            gui.Button("Request feature"))

        @self.aboutButton.mhEvent
        def onClicked(event):
            gui3d.app.about()

        @self.websiteButton.mhEvent
        def onClicked(event):
            webbrowser.open('http://www.makehuman.org')

        @self.manualButton.mhEvent
        def onClicked(event):
            webbrowser.open('http://www.makehumancommunity.org/wiki/Main_Page')

        @self.reportBugButton.mhEvent
        def onClicked(event):
            webbrowser.open(
                'http://bugtracker.makehumancommunity.org/issues/new?project_id=makehuman'
            )

        @self.requestFeatureButton.mhEvent
        def onClicked(event):
            webbrowser.open(
                'http://bugtracker.makehumancommunity.org/issues/new?project_id=makehuman&issue[tracker_id]=2'
            )

        @self.forumButton.mhEvent
        def onClicked(event):
            webbrowser.open('http://www.makehumancommunity.org/forum')

        @self.facebookButton.mhEvent
        def onClicked(event):
            webbrowser.open('https://www.facebook.com/makehuman/')
Пример #26
0
    def __init__(self, category, appFacsAnim):
        gui3d.TaskView.__init__(self, category, 'FACSvatar')
        self.facs_human = appFacsAnim.selectedHuman
        self.app = appFacsAnim
        ##########################################################################
        # .json Au's list loading
        ##########################################################################

        self.facs_code_names_path = getpath.getDataPath('FACSHuman')
        self.facs_code_names_file = self.facs_code_names_path + '/au.json'
        self.facs_code_names = json.loads(
            open(self.facs_code_names_file).read())

        box_facsvatar = self.addLeftWidget(gui.GroupBox('FACSvatar listener'))
        #Box Midi
        self.facsvatar_start_stop = box_facsvatar.addWidget(
            gui.CheckBox('Start FACSvatar'))
        self.facsvatar_label = box_facsvatar.addWidget(
            gui.TextView('Listening STOPPED'))
        #self.facsvatar_render = box_facsvatar.addWidget(gui.CheckBox('Render video'))

        self.facs_modifiers = []
        self.facs_modifiers = G.app.selectedHuman.getModifiersByGroup(
            'Upper Face AUs')
        self.facs_modifiers.extend(
            G.app.selectedHuman.getModifiersByGroup('Lower Face AUs'))
        self.facs_modifiers.extend(
            G.app.selectedHuman.getModifiersByGroup('Head Positions'))
        self.facs_modifiers.extend(
            G.app.selectedHuman.getModifiersByGroup('Eye Positions'))
        self.facs_modifiers.extend(
            G.app.selectedHuman.getModifiersByGroup(
                'Lip Parting and Jaw Opening'))
        self.facs_modifiers.extend(
            G.app.selectedHuman.getModifiersByGroup('Miscellaneous AUs'))
        self.facs_modifiers.extend(
            G.app.selectedHuman.getModifiersByGroup('Emotions Blender'))

        self.modifiers_sliders = {}

        for mod in self.facs_modifiers:
            self.modifiers_sliders[mod.name] = modifierslider.ModifierSlider(
                modifier=mod, label=mod.name)
            #self.aus_list_items.addItem(self.facs_code_names[str(mod.name)], 'black', mod.name,  False)

# Midi Thread creation
        self.facsvatar_listener = FacsvatarThread(self.modifiers_sliders,
                                                  self.renderFacsPicture)

        @self.facsvatar_start_stop.mhEvent
        def onClicked(event):
            if self.facsvatar_start_stop.selected:
                self.facsvatar_label.setText('START')
                #self.facsvatar_listener.slider_assign(self.animation_test)
                #self.facsvatar_listener.text_box_assign(self.midi_msg_received)
                self.facsvatar_listener.start()
            else:
                self.facsvatar_label.setText('STOP')
                self.facsvatar_listener.stopListening()
Пример #27
0
    def createFileChooser(self):
        """
        Overwrite to do custom initialization of filechooser widget.
        """
        #self.filechooser = self.addTopWidget(fc.FileChooser(self.paths, 'mhclo', 'thumb', mh.getSysDataPath(proxyName+'/notfound.thumb')))
        notfoundIcon = self.getNotFoundIcon()
        if not os.path.isfile(notfoundIcon):
            notfoundIcon = getpath.getSysDataPath('notfound.thumb')

        if self.multiProxy:
            clearIcon = None
        else:
            clearIcon = self.getClearIcon()
            if not os.path.isfile(clearIcon):
                clearIcon = getpath.getSysDataPath('clear.thumb')

        self.filechooser = fc.IconListFileChooser(
            self.paths,
            self.getFileExtension(),
            'thumb',
            notfoundIcon,
            clearIcon,
            name=self.label,
            multiSelect=self.multiProxy,
            noneItem=not self.multiProxy,
            stickyTags=gui3d.app.getSetting('makehumanTags'))
        self.addRightWidget(self.filechooser)

        self.filechooser.setIconSize(50, 50)
        self.filechooser.enableAutoRefresh(False)
        if not isinstance(self.getFileExtension(), str) and \
           len(self.getFileExtension()) > 1:
            self.filechooser.mutexExtensions = True
        #self.addLeftWidget(self.filechooser.createSortBox())

        if self.tagFilter:
            self.filechooser.setFileLoadHandler(fc.TaggedFileLoader(self))
            self.addLeftWidget(self.filechooser.createTagFilter())

        if self.descriptionWidget:
            descBox = self.addLeftWidget(gui.GroupBox('Description'))
            self.descrLbl = descBox.addWidget(gui.TextView(''))
            self.descrLbl.setSizePolicy(gui.QtWidgets.QSizePolicy.Ignored,
                                        gui.QtWidgets.QSizePolicy.Preferred)
            self.descrLbl.setWordWrap(True)

        @self.filechooser.mhEvent
        def onFileSelected(filename):
            self.proxyFileSelected(filename)

        if self.multiProxy:

            @self.filechooser.mhEvent
            def onFileDeselected(filename):
                self.proxyFileDeselected(filename)

            @self.filechooser.mhEvent
            def onDeselectAll(value):
                self.deselectAllProxies()
    def __init__(self, category):
        gui3d.TaskView.__init__(self, category, 'Shaders')

        shaderBox = self.addLeftWidget(gui.GroupBox('Shader'))
        self.shaderList = shaderBox.addWidget(gui.ListView())
        self.shaderList.setSizePolicy(gui.SizePolicy.Ignored,
                                      gui.SizePolicy.Preferred)

        if not shader.Shader.supported():
            log.notice('Shaders not supported')
            self.shaderList.setEnabled(False)

        self.paramBox = self.addRightWidget(gui.GroupBox('Parameters'))

        @self.shaderList.mhEvent
        def onActivate(item):
            self.setShader(item.getUserData())
Пример #29
0
    def __init__(self, category):
        gui3d.TaskView.__init__(self, category, 'Standardize Models')


        buttonsBox = self.addLeftWidget(gui.GroupBox('Settings'))
        buttonsBox.addWidget(gui.TextView("Options"))
        self.geoBox = buttonsBox.addWidget(gui.CheckBox("Geometries"))
        self.shapeBox = buttonsBox.addWidget(gui.CheckBox("Shapes"))
        # self.AAbox.selected
        
        self.path_out = ""
        self.path_button_out = buttonsBox.addWidget(gui.BrowseButton('dir', "Select an output directory"))
        self.out_path_box = buttonsBox.addWidget(gui.TextEdit(self.path_out))
        
        self.path_in = ""
        self.path_button_in = buttonsBox.addWidget(gui.BrowseButton('dir', "Select an input directory"))
        self.in_path_box = buttonsBox.addWidget(gui.TextEdit(self.path_in))
        
        self.path_exemplar = ""
        self.path_button_exemplar = buttonsBox.addWidget(gui.BrowseButton('open', "Select the standard model"))
        self.exemplar_path_box = buttonsBox.addWidget(gui.TextEdit(self.path_exemplar))
        
        @self.path_button_out.mhEvent
        def onClicked(path):
            self.path_out = path
            self.out_path_box.setText(self.path_out)
        
        @self.path_button_in.mhEvent
        def onClicked(path):
            self.path_in = path
            self.in_path_box.setText(self.path_in)
            
        @self.path_button_exemplar.mhEvent
        def onClicked(path):
            self.path_exemplar = path
            self.exemplar_path_box.setText(self.path_exemplar)
        buttonsBox.addWidget(gui.TextView("Features to standardize (comma+space separated regular expressions)"))
        self.standardShapeFeatures = buttonsBox.addWidget(gui.TextEdit("^head, neck, ear, proportions"))
        
        self.goButton = buttonsBox.addWidget(gui.Button('Go'))
        
        @self.goButton.mhEvent
        def onClicked(event):
            settings = {}
            settings['geometries'] = self.geoBox.selected
            settings['shapes'] = self.shapeBox.selected
            settings['standard_shapes'] = self.standardShapeFeatures.getText().split(", ")
            standard = Standardizer(settings['standard_shapes'])
            specific_model = self.exemplar_path_box.getText()
            if specific_model == "":
                specific_model = None
            standard.load_models(self.in_path_box.getText(), specific_model)
            if settings['geometries'] and settings['standard_shapes']:
                standard.standardize_all(self.out_path_box.getText())
            elif settings['geometries']:
                standard.standardize_geometries(self.out_path_box.getText())  
            elif settings['standard_shapes']:
                standard.standardize_shape(self.out_path_box.getText())  
Пример #30
0
    def __init__(self, category, app):
        self.app = app
        gui3d.TaskView.__init__(self, category, 'Custom')
        self.targetsPath = getpath.getPath('data/custom')
        if not os.path.exists(self.targetsPath):
            os.makedirs(self.targetsPath)

        self.optionsBox = self.addRightWidget(gui.GroupBox('Options'))
        rescanButton = self.optionsBox.addWidget(
            gui.Button("Rescan targets' folder"))
        self.keepValues = self.optionsBox.addWidget(
            gui.CheckBox('Keep Values', app.getSetting('keepCustomValues')))

        self.folderBox = self.addRightWidget(gui.GroupBox('Folders'))
        self.targetsBox = self.addLeftWidget(gui.StackedBox())

        self.human = app.selectedHuman

        @rescanButton.mhEvent
        def onClicked(event):

            backUpModifiers = {}

            if self.keepValues.isChecked():
                for name, modifier in self.modifiers.items():
                    if modifier.getValue() != 0:
                        backUpModifiers[name] = modifier.getValue()

            self.searchTargets()

            if self.keepValues.isChecked():
                for name, value in backUpModifiers.items():
                    modifier = self.modifiers.get(name)
                    if modifier:
                        modifier.setValue(value)
                self.syncSliders()
                self.human.applyAllTargets()

            backUpModifiers.clear()

        self.folders = []
        self.sliders = []
        self.modifiers = {}

        self.searchTargets()