Exemple #1
0
def add_to_selection(nodes, kwargs):
    """Extends the current node selection with 'nodes', according to
    the modifier keys in kwargs.

    no modifier:    replace selection
    shift:          add to selection
    ctrl:           remove from selection
    ctrl+shift:     intersect with selection
    """
    haz_shift = kwargs["shiftclick"] or kwargs['altclick']
    haz_ctrl = kwargs["ctrlclick"]

    current = set(hou.selectedNodes())
    sel = set(nodes)

    if haz_shift or haz_ctrl:
        # we got some modifier pressed
        if haz_shift:
            if haz_ctrl:
                # shift+ctrl: intersection
                sel = sel.intersection(current)
            else:
                # shift: union
                sel = sel.union(current)
        else:
            # ctrl: remove from selection
            sel = current.difference(sel)

    if sel is not None:
        hou.clearAllSelected()
        for n in sel:
            n.setSelected(True)
Exemple #2
0
def add_to_selection(nodes, kwargs):
    """Extends the current node selection with 'nodes', according to
    the modifier keys in kwargs.

    no modifier:    replace selection
    shift:          add to selection
    ctrl:           remove from selection
    ctrl+shift:     intersect with selection
    """
    haz_shift = kwargs["shiftclick"] or kwargs['altclick']
    haz_ctrl = kwargs["ctrlclick"]

    current = set(hou.selectedNodes())
    sel = set(nodes)

    if haz_shift or haz_ctrl:
        # we got some modifier pressed
        if haz_shift:
            if haz_ctrl:
                # shift+ctrl: intersection
                sel = sel.intersection(current)
            else:
                # shift: union
                sel = sel.union(current)
        else:
            # ctrl: remove from selection
            sel = current.difference(sel)

    if sel is not None:
        hou.clearAllSelected()
        for n in sel:
            n.setSelected(True)
Exemple #3
0
def add_to_selection(nodes, kwargs, selectMode=None, statMsg=None):
    """Extends the current node selection with 'nodes', according to
    the modifier keys in kwargs.

    no modifier:    replace selection
    shift, alt:     add to selection
    ctrl:           remove from selection
    ctrl+shift:     intersect with selection
    """
    assert selectMode is None or type(selectMode) is str

    haz_shift = kwargs["shiftclick"] or kwargs['altclick']
    haz_ctrl = kwargs["ctrlclick"]

    if selectMode is None:
        # determine select mode based on kwargs
        if haz_shift or haz_ctrl:
            # we got some modifier pressed
            if haz_shift:
                # shift: add (union), shift+ctrl: intersect
                selectMode = "intersect" if haz_ctrl else "add"
            else:
                # ctrl: remove from selection
                selectMode = "remove"
    else:
        selectMode = selectMode.lower()

    current = set(hou.selectedItems())
    sel = set(nodes)
    sel_length_old = len(sel)

    if selectMode == "intersect":
        sel = sel.intersection(current)
    elif selectMode == "add":
        sel = sel.union(current)
    elif selectMode == "remove":
        sel = current.difference(sel)
    else:
        selectMode = "replace"

    if sel is not None:
        hou.clearAllSelected()
        for n in sel:
            n.setSelected(True)

    # report back

    msg0 = "Select (%s) %d matches: Now %d selected (was %d)" \
        % ( selectMode.lower(), sel_length_old, len(sel), len(current), )

    if statMsg:
        msg0 = msg0 + " " + str(statMsg)

    if "editor" in kwargs:
        kwargs["editor"].flashMessage("BUTTONS_reselect", msg0, FLASH_SECONDS)

    statmsg("%s    (ALT: add to selection"
            ", CTRL:remove from selecton"
            ", CTRL+ALT:intersect with selection)" % msg0)
 def doOnAccept(self, item):
     if (item is None): return
     try:
         hou.clearAllSelected()
         hpaste.stringToNodes(item.content(), ne=self.__nepane)
     except Exception as e:
         hou.ui.displayMessage("could not paste: %s" % e.message,
                               severity=hou.severityType.Warning)
		def doOnAccept(self,item):
			if(item is None):return
			try:
				try: #>h16
					hou.clearAllSelected()
				except: #<=h15.5
					hou.node("/obj").setSelected(False,clear_all_selected=True)
				hpaste.stringToNodes(item.content(), ne=self.__nepane, override_network_position=self.__savedNetworkViewPos)
			except Exception as e:
				hou.ui.displayMessage("could not paste: %s"%e.message,severity=hou.severityType.Warning)
Exemple #6
0
def _select( items=None ):
    """
    Author: Sean
    """
    if items is None:
        return

    hou.clearAllSelected()

    for i in items:
        i.Selected = True
Exemple #7
0
 def load_asset_in_houdini(self, file_path):
     try:
         hou.clearAllSelected()
         self.pwd_for_load_nodes.loadItemsFromFile(file_path, True)
         with hou.undos.disabler():
             self.move_nodes_to_clicked_position(hou.selectedItems(),
                                                 self.pos_for_load_nodes)
     except hou.PermissionError as e:
         HaocUtils.show_message_box(self, e.instanceMessage())
     except hou.OperationFailed as e:
         HaocUtils.show_message_box(self, e.description())
         # If load failed it can be the asset damaged, so make it size 0 for nex time download
         open(file_path, 'w').close()
     except hou.LoadWarning as e:
         print e.description()
Exemple #8
0
def add_to_selection(nodes, kwargs, selectMode=None):
    """Extends the current node selection with 'nodes', according to
    the modifier keys in kwargs.

    no modifier:    replace selection
    shift, alt:     add to selection
    ctrl:           remove from selection
    ctrl+shift:     intersect with selection
    """
    assert selectMode is None or type(selectMode) is str

    haz_shift = kwargs["shiftclick"] or kwargs['altclick']
    haz_ctrl = kwargs["ctrlclick"]

    if selectMode is None:
        # determine select mode based on kwargs
        if haz_shift or haz_ctrl:
            # we got some modifier pressed
            if haz_shift:
                # shift: add (union), shift+ctrl: intersect
                selectMode = "intersect" if haz_ctrl else "add"
            else:
                # ctrl: remove from selection
                selectMode = "remove"
    else:
        selectMode = selectMode.lower()

    current = set(hou.selectedItems())
    sel = set(nodes)
    sel_length_old = len(sel)

    if selectMode == "intersect":
        sel = sel.intersection(current)
    elif selectMode == "add":
        sel = sel.union(current)
    elif selectMode == "remove":
        sel = current.difference(sel)
    else:
        selectMode = "replace"

    if sel is not None:
        hou.clearAllSelected()
        for n in sel:
            n.setSelected(True)

    # report back
    statmsg("Select (%s) %d nodes: Now %d selected (was %d)" % \
        (selectMode.capitalize(), sel_length_old, len(sel), len(current), ) )
    def createPreview(self, *args, **kwargs):
        """Creates a Playblast preview from currently open scene"""
        logger.debug("Func: createPreview")



        #
        pbSettings = self.loadPBSettings()
        # validFormats = cmds.playblast(format=True, q=True)
        # validCodecs = cmds.playblast(c=True, q=True)
        #
        # if not pbSettings["Format"] in validFormats:
        #     msg = ("Format specified in project settings is not supported. Install {0}".format(pbSettings["Format"]))
        #     cmds.warning(msg)
        #     return -1, msg
        #
        # if not pbSettings["Codec"] in validCodecs:
        #     msg = ("Codec specified in project settings is not supported. Install {0}".format(pbSettings["Codec"]))
        #     cmds.warning(msg)
        #     return -1, msg
        #
        extension = "jpg"

        openSceneInfo = self.getOpenSceneInfo()
        if not openSceneInfo:
            msg = "This is not a base scene. Scene must be saved as a base scene before playblasting."
            self._exception(360, msg)
            return

        selection = hou.selectedItems()
        hou.clearAllSelected()
        jsonInfo = self._loadJson(openSceneInfo["jsonFile"])
        #

        scene_view = toolutils.sceneViewer()
        viewport = scene_view.curViewport()
        cam = viewport.camera()
        if cam:
            currentCam = cam.name()
        else:
            currentCam = 'persp'

        flip_options = scene_view.flipbookSettings().stash()

        # flip_options.output("E:\\test\\{0}_$F4.{1}".format(camName, "tga"))
        # flip_options.useResolution(True)
        # flip_options.resolution((221, 124))
        # scene_view.flipbook(viewport, flip_options)


        versionName = self.getSceneFile()
        relVersionName = os.path.relpath(versionName, start=openSceneInfo["projectPath"])
        playBlastDir = os.path.join(openSceneInfo["previewPath"], openSceneInfo["version"])
        self._folderCheck(playBlastDir)
        playBlastFile = os.path.join(playBlastDir, "{0}_{1}_PB_$F4.{2}".format(self.niceName(versionName), currentCam, extension))
        relPlayBlastFile = os.path.relpath(playBlastFile, start=openSceneInfo["projectPath"])
        #
        if os.path.isfile(playBlastFile):
            try:
                os.remove(playBlastFile)
            except WindowsError:
                msg = "The file is open somewhere else"
                self._exception(202, msg)
                return

        flip_options.output(playBlastFile)
        #
        # ## CREATE A CUSTOM PANEL WITH DESIRED SETTINGS
        #
        # tempWindow = cmds.window(title="SM_Playblast",
        #                        widthHeight=(pbSettings["Resolution"][0] * 1.1, pbSettings["Resolution"][1] * 1.1),
        #                        tlc=(0, 0))
        # # panel = pm.getPanel(wf=True)
        #
        # cmds.paneLayout()
        #
        # pbPanel = cmds.modelPanel(camera=currentCam)
        # cmds.showWindow(tempWindow)
        # cmds.setFocus(pbPanel)
        #
        # cmds.modelEditor(pbPanel, e=1,
        #                allObjects=not pbSettings["PolygonOnly"],
        #                da="smoothShaded",
        #                displayTextures=pbSettings["DisplayTextures"],
        #                wireframeOnShaded=pbSettings["WireOnShaded"],
        #                grid=pbSettings["ShowGrid"],
        #                useDefaultMaterial=pbSettings["UseDefaultMaterial"],
        #                polymeshes=True,
        #                imagePlane=True,
        #                hud=True
        #                )
        #
        # cmds.camera(currentCam, e=True, overscan=True, displayFilmGate=False, displayResolution=False)
        #
        # ## get previous HUD States and turn them all off
        # hudPreStates = {}
        # HUDS = cmds.headsUpDisplay(lh=True)
        # for hud in HUDS:
        #     hudPreStates[hud] = cmds.headsUpDisplay(hud, q=True, vis=True)
        #     cmds.headsUpDisplay(hud, e=True, vis=False)
        #
        # ## clear the custom HUDS
        # customHuds = ['SMFrame', 'SMScene', 'SMCategory', 'SMFPS', 'SMCameraName', 'SMFrange']
        # for hud in customHuds:
        #     if cmds.headsUpDisplay(hud, ex=True):
        #         cmds.headsUpDisplay(hud, rem=True)
        #
        # if pbSettings["ShowFrameNumber"]:
        #     freeBl = cmds.headsUpDisplay(nfb=5)  ## this is the next free block on section 5
        #     cmds.headsUpDisplay('SMFrame', s=5, b=freeBl, label="Frame", preset="currentFrame", dfs="large",
        #                       lfs="large")
        # if pbSettings["ShowSceneName"]:
        #     freeBl = cmds.headsUpDisplay(nfb=5)  ## this is the next free block on section 5
        #     cmds.headsUpDisplay('SMScene', s=5, b=freeBl, label="Scene: %s" % (self.niceName(versionName)),
        #                       lfs="large")
        # if pbSettings["ShowCategory"]:
        #     freeBl = cmds.headsUpDisplay(nfb=5)  ## this is the next free block on section 5
        #     cmds.headsUpDisplay('SMCategory', s=5, b=freeBl, label="Category: %s" % (jsonInfo["Category"]),
        #                       lfs="large")
        # if pbSettings["ShowFPS"]:
        #     freeBl = cmds.headsUpDisplay(nfb=5)  ## this is the next free block on section 5
        #     cmds.headsUpDisplay('SMFPS', s=5, b=freeBl, label="Time Unit: %s" % (cmds.currentUnit(q=True, time=True)),
        #                       lfs="large")
        #
        # # v1.1 SPECIFIC
        # try:
        #     if pbSettings["ShowFrameRange"]:
        #         freeBl = cmds.headsUpDisplay(nfb=5)  ## this is the next free block on section 5
        #         cmds.headsUpDisplay('SMFrange', s=5, b=freeBl,
        #                           label="Frame Range: {} - {}".format(int(cmds.playbackOptions(q=True, minTime=True)),
        #                                                               int(cmds.playbackOptions(q=True,
        #                                                                                      maxTime=True))),
        #                           lfs="large")
        # except KeyError:
        #     pass
        #
        # freeBl = cmds.headsUpDisplay(nfb=2)
        # cmds.headsUpDisplay('SMCameraName', s=2, b=freeBl, ba='center', dw=50, pre='cameraNames')
        #
        # ## Get the active sound
        #
        # aPlayBackSliderPython = mel.eval('$tmpVar=$gPlayBackSlider')
        # activeSound = cmds.timeControl(aPlayBackSliderPython, q=True, sound=True)
        #
        # ## Check here: http://download.autodesk.com/us/maya/2011help/pymel/generated/functions/pymel.core.windows/pymel.core.windows.headsUpDisplay.html
        # # print "playBlastFile", playBlastFile
        # normPB = os.path.normpath(playBlastFile)
        # # print "normPath", normPB
        ranges = self._getTimelineRanges()
        flip_options.frameRange((ranges[1], ranges[2]))
        flip_options.outputToMPlay(True)
        flip_options.useResolution(True)
        flip_options.resolution((pbSettings["Resolution"][0], pbSettings["Resolution"][1]))
        scene_view.flipbook(viewport, flip_options)


        # cmds.playblast(format=pbSettings["Format"],
        #              filename=playBlastFile,
        #              widthHeight=pbSettings["Resolution"],
        #              percent=pbSettings["Percent"],
        #              quality=pbSettings["Quality"],
        #              compression=pbSettings["Codec"],
        #              sound=activeSound,
        #              uts=True)
        # ## remove window when pb is donw
        # cmds.deleteUI(tempWindow)
        #
        # # Get back to the original frame range if the codec is Quick Time
        # if pbSettings["Format"] == 'qt':
        #     cmds.playbackOptions(maxTime=maxTime)
        #     cmds.playbackOptions(animationEndTime=endTime)
        #
        # ## remove the custom HUdS
        # if pbSettings["ShowFrameNumber"]:
        #     cmds.headsUpDisplay('SMFrame', rem=True)
        # if pbSettings["ShowSceneName"]:
        #     cmds.headsUpDisplay('SMScene', rem=True)
        # if pbSettings["ShowCategory"]:
        #     cmds.headsUpDisplay('SMCategory', rem=True)
        # if pbSettings["ShowFPS"]:
        #     cmds.headsUpDisplay('SMFPS', rem=True)
        # try:
        #     if pbSettings["ShowFrameRange"]:
        #         cmds.headsUpDisplay('SMFrange', rem=True)
        # except KeyError:
        #     pass
        #
        #     cmds.headsUpDisplay('SMCameraName', rem=True)
        #
        # ## get back the previous state of HUDS
        # for hud in hudPreStates.keys():
        #     cmds.headsUpDisplay(hud, e=True, vis=hudPreStates[hud])
        # pm.select(selection)

        ## find this version in the json data
        for version in jsonInfo["Versions"]:
            if relVersionName == version["RelativePath"]:
                # replace the houdini variable with first frame
                nonVarPBfile = relPlayBlastFile.replace("_$F4", "_0001")
                # version["Preview"][currentCam] = nonVarPBfile
                version["Preview"][currentCam] = relPlayBlastFile

        self._dumpJson(jsonInfo, openSceneInfo["jsonFile"])
Exemple #10
0
 def deselect(self):
     import hou
     hou.clearAllSelected()
Exemple #11
0
    def createPreview(self, *args, **kwargs):
        """Creates a Playblast preview from currently open scene"""
        logger.debug("Func: createPreview")

        #
        pbSettings = self.loadPBSettings()
        #
        extension = "jpg"

        openSceneInfo = self.getOpenSceneInfo()
        if not openSceneInfo:
            msg = "This is not a base scene. Scene must be saved as a base scene before playblasting."
            self._exception(360, msg)
            return

        selection = self._getSelection()
        hou.clearAllSelected()
        jsonInfo = self._loadJson(openSceneInfo["jsonFile"])
        #

        scene_view = toolutils.sceneViewer()
        viewport = scene_view.curViewport()
        cam = viewport.camera()
        if cam:
            currentCam = cam.name()
        else:
            currentCam = 'persp'

        flip_options = scene_view.flipbookSettings().stash()

        versionName = self.getSceneFile()
        relVersionName = os.path.relpath(versionName,
                                         start=openSceneInfo["projectPath"])
        playBlastDir = os.path.join(openSceneInfo["previewPath"],
                                    openSceneInfo["version"])
        self._folderCheck(playBlastDir)
        playBlastFile = os.path.join(
            playBlastDir,
            "{0}_{1}_PB_$F4.{2}".format(self.niceName(versionName), currentCam,
                                        extension))
        # relPlayBlastFile = os.path.relpath(playBlastFile, start=openSceneInfo["projectPath"])
        #
        if os.path.isfile(playBlastFile):
            try:
                os.remove(playBlastFile)
            except WindowsError:
                msg = "The file is open somewhere else"
                self._exception(202, msg)
                return

        flip_options.output(playBlastFile)

        ranges = self._getTimelineRanges()
        flip_options.frameRange((ranges[1], ranges[2]))
        flip_options.outputToMPlay(not pbSettings["ConvertMP4"])
        flip_options.useResolution(True)
        flip_options.resolution(
            (pbSettings["Resolution"][0], pbSettings["Resolution"][1]))
        scene_view.flipbook(viewport, flip_options)

        if pbSettings["ConvertMP4"]:
            nonVarPBfile = playBlastFile.replace("_$F4", "_0001")
            convertedFile = self._convertPreview(nonVarPBfile,
                                                 overwrite=True,
                                                 deleteAfter=True,
                                                 crf=pbSettings["CrfValue"])
            relPlayBlastFile = os.path.relpath(
                convertedFile, start=openSceneInfo["projectPath"])
            os.startfile(convertedFile)
        else:
            relPlayBlastFile = os.path.relpath(
                playBlastFile, start=openSceneInfo["projectPath"])

        ## find this version in the json data
        for version in jsonInfo["Versions"]:
            if relVersionName == version["RelativePath"]:
                # replace the houdini variable with first frame
                nonVarPBfile = relPlayBlastFile.replace("_$F4", "_0001")
                # version["Preview"][currentCam] = nonVarPBfile
                version["Preview"][currentCam] = relPlayBlastFile

        self._dumpJson(jsonInfo, openSceneInfo["jsonFile"])
Exemple #12
0
    def setShot(self):
        s = self.shots.selectedItems()[0]
        name = s.text(0)
        fr = map(int, re.findall(r'(\d+)', s.text(1)))
        combo_cam = s.text(2).rstrip()
        bundle = s.text(3).rstrip()
        take = s.text(4).rstrip()
        notes = s.text(5).rstrip()

        self.ln_name.setText(name)
        self.ln_begin.setText(str(fr[0]))
        self.ln_end.setText(str(fr[1]))
        self.combo_cam.setCurrentIndex(self.combo_cam.findText(combo_cam))
        self.ln_notes.setText(notes)
        self.combo_bundle.setCurrentIndex(self.combo_bundle.findText(bundle))
        self.combo_takes.setCurrentIndex(self.combo_takes.findText(take))
        hou.playbar.setPlaybackRange(min(fr), max(fr))
        hou.setFrame(min(fr))
        if self.ch_flipbook.isChecked():
            viewer = toolutils.sceneViewer()
            settings = viewer.flipbookSettings()
            settings.frameRange(fr)
        if combo_cam != 'Camera' and self.ch_cam.isChecked():
            camera_node = hou.node(combo_cam)
            if camera_node:
                hou.ui.paneTabOfType(hou.paneTabType.SceneViewer,
                                     0).curViewport().setCamera(camera_node)
                try:
                    camera_node.parm('vcomment').eval()
                except:
                    camera_node.addSpareParmTuple(
                        hou.StringParmTemplate('vcomment', 'Viewport Comment',
                                               1, ''))
                camera_node.parm('vcomment').set(
                    'Name: ' + name + '\n' + 'Camera: ' + combo_cam + ' ( ' +
                    str(min(fr)) + '-' + str(max(fr)) + 'f ) ' +
                    str(hou.fps()) + 'fps ' +
                    str(camera_node.parm('resx').eval()) + 'x' +
                    str(camera_node.parm('resy').eval()) + 'px\n' + 'Notes: ' +
                    notes)
                camera_node.setCurrent(True, True)
        else:
            hou.ui.paneTabOfType(hou.paneTabType.SceneViewer,
                                 0).curViewport().homeAll()
        if bundle != 'No Bundle':
            if self.ch_bundle.isChecked():
                displNodes = hou.nodeBundle(bundle).nodes()
                hideNodes = hou.node('/obj').children()
                for n in hideNodes:
                    try:
                        n.setDisplayFlag(False)
                    except:
                        pass
                hou.clearAllSelected()
                for n in displNodes:
                    try:
                        n.setDisplayFlag(True)
                    except:
                        pass
                    n.setSelected(1,
                                  clear_all_selected=0,
                                  show_asset_if_selected=0)

                if self.ch_hide.isChecked():
                    hou.clearAllSelected()
                    nds = hou.nodeBundle(bundle).nodes()
                    for n in nds:
                        n.setSelected(1,
                                      clear_all_selected=0,
                                      show_asset_if_selected=0)
                    self.hide(nds)
        if take != 'No Take':
            hou.takes.setCurrentTake(hou.takes.findTake(take))
        else:
            hou.takes.setCurrentTake(hou.takes.rootTake())