def _addVRayObjectPropertiesParmTemplates(ptg, vrayFolder):
    ptg.appendToFolder(
        vrayFolder,
        hou.FolderParmTemplate(
            "vray_object_properties_folder_main", "Main", **{
                'parm_templates':
                (vfh_ptg_utils.getParmTemplatesFromDS("vfh_object_properties")
                 ),
                'folder_type':
                hou.folderType.Simple,
                'tags': {
                    'spare_category': 'vray'
                }
            }))

    ptg.appendToFolder(
        vrayFolder,
        hou.FolderParmTemplate(
            "vray_object_properties_folder_wrapper", "Wrapper", **{
                'parm_templates':
                (vfh_ptg_utils.getParmTemplatesFromDS("MtlWrapper",
                                                      prefix="MtlWrapper")),
                'folder_type':
                hou.folderType.Simple,
                'tags': {
                    'spare_category': 'vray'
                }
            }))
    def add_shaders_folder(self, node):
        """
        Add Shaders Tab to Mantra node.
        """

        # parm_template_group
        parm_template_group = node.parmTemplateGroup()

        # check if folder already exists
        if (parm_template_group.findFolder('Shaders')):
            print('Shaders tab already exists. Not recreating.')
            return

        # folder_shaders
        folder_shaders = hou.FolderParmTemplate(
            "main5",
            "Shaders",
            folder_type=hou.folderType.Tabs,
            default_value=0,
            ends_tab_group=False)

        # add folder to template group
        parm_template_group.append(folder_shaders)

        #set in node
        node.setParmTemplateGroup(parm_template_group)
Example #3
0
def addNoiseToSnippet(n,type,v = 1):
	if n.parm('snippet') is not None:
		includeAddSafe(n,'lzn')
		ptg = n.parmTemplateGroup()    
		parm = ptg.findFolder('Noises')
		if parm is None:
			parm = hou.FolderParmTemplate('noises','Noises',folder_type = hou.folderType.Simple)
			ptg.addParmTemplate(parm)
			
		noise_id = len(parm.parmTemplates()) + 1
				
		if type=="curl":
			noise_folder =  createCurlNoiseFolderParmTemplate(str(noise_id))
			new_code = "vector4 pos{id} = set(@P,ch('o{id}'));\nvector n{id} = ch('a{id}')*curl(pos{id},ch('f{id}'),chi('t{id}'),ch('r{id}'),ch('at{id}'),chs('type{id}'),chs('sdf{id}'),chf('ef{id}'));\nv@vel = n1;".format(id = noise_id)
		if type=="turb":
			noise_folder =  createTurbNoiseFolderParmTemplate(str(noise_id))
			new_code = "vector n{id} = ch('a{id}')*turbv(v@P*chf('f{id}'),chi('t{id}'),ch('r{id}'),ch('at{id}'),chs('type{id}'));".format(id = noise_id)
			if v==0:
				new_code = "float n{id} = ch('a{id}')*turb(v@P*chf('f{id}'),chi('t{id}'),ch('r{id}'),ch('at{id}'),chs('type{id}'));".format(id = noise_id)
		if type=="flow":
			noise_folder =  createFlowNoiseFolderParmTemplate(str(noise_id))
			new_code = "vector4 pos{id} = set(@P*chf('f{id}'),ch('o{id}'));\nvector n{id} = ch('a{id}')*flowv(pos{id},chi('t{id}'),ch('r{id}'),ch('flow{id}'),ch('flowrate{id}'),ch('selfAdvect{id}'));".format(id = noise_id)
			if v==0:
				new_code = "vector4 pos{id} = set(@P*chf('f{id}'),ch('o{id}'));\nfloat n{id} = ch('a{id}')*flow(pos{id},chi('t{id}'),ch('r{id}'),ch('flow{id}'),ch('flowrate{id}'),ch('selfAdvect{id}'));".format(id = noise_id)
		if type=="aa":
			noise_folder =  createAaNoiseFolderParmTemplate(str(noise_id))
			new_code = "vector4 pos{id} = set(@P*chf('f{id}'),ch('o{id}'));\nvector n{id} = ch('a{id}')*aav(pos{id},chi('t{id}'),ch('r{id}'),chi('type{id}'));".format(id = noise_id)
			if v==0:
				new_code = "vector4 pos{id} = set(@P*chf('f{id}'),ch('o{id}'));\nfloat n{id} = ch('a{id}')*aa(pos{id},chi('t{id}'),ch('r{id}'),chi('type{id}'));".format(id = noise_id)
		
		
		
		snippetAddCode(n,new_code)   
		ptg.appendToFolder(parm,noise_folder)    
		n.setParmTemplateGroup(ptg)		
Example #4
0
def createNoiseFolderParmTemplate(id):
    a_parm = hou.FloatParmTemplate('a'+id,'a'+id,1,default_value = (1,))
    f_parm = hou.FloatParmTemplate('f'+id,'f'+id,1,default_value = (1,))   
    t_parm = hou.IntParmTemplate('t'+id,'t'+id,1,default_value = (3,))   
    r_parm = hou.FloatParmTemplate('r'+id,'r'+id,1,default_value = (0.5,))   
    noise_folder = hou.FolderParmTemplate('noise'+id,'Noise'+id,parm_templates = (a_parm,f_parm),folder_type = hou.folderType.Simple)
    return noise_folder
Example #5
0
def add_physical_camera_attributes():
    if UI is None:
        return

    physCamDS = os.path.join(UI, "plugins", "CameraPhysical.ds")
    if not os.path.exists(physCamDS):
        sys.stderr.write("CameraPhysical.ds is not found!\n")
        return

    for node in hou.selectedNodes():
        if node.type().name() not in {"cam"}:
            continue

        folderName = "V-Ray Physical Camera"

        group = node.parmTemplateGroup()
        if group.findFolder(folderName):
            continue

        sys.stdout.write("Adding \"Physical Camera\" attributes to \"%s\"...\n" % node.name())

        folder = hou.FolderParmTemplate("VRayPhysicalCamera", folderName)
        physCamGroup = hou.ParmTemplateGroup()
        physCamGroup.setToDialogScript(open(physCamDS, 'r').read())
        for parmTmpl in physCamGroup.parmTemplates():
            folder.addParmTemplate(parmTmpl)

        group.append(folder)
        node.setParmTemplateGroup(group)
Example #6
0
    def parameters_ui(self):
        # opening the template group
        tg_parms = self.rig_subnet.parmTemplateGroup()
        ch_p_folder_parms = hou.FolderParmTemplate(self.node.name()+"character_placer", "character_placer")
        # creating the parms
        for i in self.limb_subnet.children():
            hou_parm_template = hou.FloatParmTemplate(i.name()+"_t", "Translate", 3, default_value=([0, 0, 0]),
                                                    min=0, max=10, min_is_strict=False, max_is_strict=False,
                                                    look=hou.parmLook.Regular,
                                                    naming_scheme=hou.parmNamingScheme.XYZW)
            ch_p_folder_parms.addParmTemplate(hou_parm_template)

            hou_parm_template = hou.FloatParmTemplate(i.name()+"_r", "Rotate", 3, default_value=([0, 0, 0]), min=0,
                                                    max=360, min_is_strict=False, max_is_strict=False,
                                                    look=hou.parmLook.Regular, naming_scheme=hou.parmNamingScheme.XYZW)
            ch_p_folder_parms.addParmTemplate(hou_parm_template)

            hou_parm_template = hou.FloatParmTemplate(i.name()+"_s", "Scale", 3, default_value=([1, 1, 1]), min=0,
                                                    max=10, min_is_strict=False, max_is_strict=False,
                                                    look=hou.parmLook.Regular, naming_scheme=hou.parmNamingScheme.XYZW)
            ch_p_folder_parms.addParmTemplate(hou_parm_template)

            hou_parm_template = hou.FloatParmTemplate(i.name()+"_p", "Pivot", 3, default_value=([0, 0, 0]), min=0,
                                                    max=10, min_is_strict=False, max_is_strict=False,
                                                    look=hou.parmLook.Regular, naming_scheme=hou.parmNamingScheme.XYZW)
            ch_p_folder_parms.addParmTemplate(hou_parm_template)


            hou_parm_template = hou.SeparatorParmTemplate(i.name()+"_sep")
            ch_p_folder_parms.addParmTemplate(hou_parm_template)

        #finding the folder to put the parms and closing the template
        folder_node = tg_parms.findFolder(["Rig Parms"])
        tg_parms.appendToFolder(folder_node, ch_p_folder_parms)
        self.rig_subnet.setParmTemplateGroup(tg_parms)
def _addVRayFolder(ptg):
    vrayFolder = hou.FolderParmTemplate("vray_folder", VRAY_FOLDER)

    vfh_attrs.insertInFolderAfterLastTab(ptg, ptg, vrayFolder)

    vrayFolder = ptg.findFolder(VRAY_FOLDER)
    vrayFolder.setName("vray_folder")
Example #8
0
def Populate(kwargs, type='json'):
    '''
        type = 'xml', 'json'
    '''
    node = kwargs['node']
    targetFolder = 'authorinfo'

    # check for Author section
    parms = node.parmTemplateGroup()

    folder = parms.find(targetFolder)
    if folder != None:
        parms.remove(targetFolder)

    # create and populate folder
    folder = hou.FolderParmTemplate(targetFolder, 'Author', (),
                                    hou.folderType.Simple, False)

    if type == 'xml':
        PopulateFromXML(kwargs, folder, 'author.xml')
    elif type == 'json':
        PopulateFromJSON(kwargs, folder, 'author.json')

    parms.append(folder)

    # add folder
    node.setParmTemplateGroup(parms)
Example #9
0
def addVRayObjectIdParamTemplate(node):
    parm_group = node.parmTemplateGroup()
    parm_folder = hou.FolderParmTemplate('folder', 'V-Ray Object')
    parm_folder.addParmTemplate(
        hou.IntParmTemplate('vray_objectID', 'Object ID', 1))
    parm_group.append(parm_folder)
    node.setParmTemplateGroup(parm_group)
Example #10
0
def create_rop_parameters(script_args,
                          farm_name,
                          rop_node,
                          error_list_obj=None):
    """
    Creates parameters on a specific ROP and farm

    Args:
        script_args (dict): The Houdini "kwargs" dictionary
        farm_name (str): Name of the farm integration. Lowercase. Must match the name of the farm module. E.g. "deadline"
        rop_node (hou.Node): A ROP node (in any context)
        error_list_obj (RopErrorList): An instance of RopErrorList class to store any errors or warnings

    Returns:
        Bool: True if successful, False if the parameter configuration can't be found
    """
    with ErrorList(error_list_obj) as error_list_obj:

        param_list = get_config_parameter_list(farm_name, rop_node)
        if param_list is None:
            err_msg = "Could not load '{0}' ROP {1} parameters from config".format(
                rop_node.type().name(), farm_name)
            error_list_obj.add(ErrorMessage(err_msg))
            return False

        parm_list = create_parameters_from_list(param_list, farm_name)
        farm_folder = hou.FolderParmTemplate("hf_{0}_folder".format(farm_name),
                                             farm_name.title(), parm_list)

        rop_parm_template_group = rop_node.parmTemplateGroup()
        rop_parm_template_group.append(farm_folder)
        rop_node.setParmTemplateGroup(rop_parm_template_group)

        return True
Example #11
0
    def assign_preflight(self):
        print "assign preflight node", self.node.path(
        ), "on topnet", self.parent

        # get the template group for the parent top node.
        self.parm_group = self.parent.parmTemplateGroup()
        print "Create folder parm template"

        self.parm_folder = hou.FolderParmTemplate("folder", "Firehawk")
        self.parm_folder.addParmTemplate(
            hou.StringParmTemplate(
                "preflight_node",
                "Preflight Node",
                1, [""],
                string_type=hou.stringParmType.NodeReference))

        # Search for the template folder.  if it already exists it will be replaced in order to ensure parms are current.
        self.found_folder = self.parm_group.findFolder("Firehawk")

        print "self.found_folder", self.found_folder
        # If a folder already exists on the node, remove it and add it again.  This deals with any changes to the parm layout if they occur.
        if self.found_folder:
            self.parm_group.remove(self.found_folder)

        # re add the folder to the template group.
        self.parm_group.append(self.parm_folder)

        # update the parm template on the parent node.
        self.parent.setParmTemplateGroup(self.parm_group)

        # set values for path to preflight node.

        self.parent.parm("preflight_node").set(self.node.path())
def hda_parameter_setup(hda, geo, project):
    parmGroup = hda.parmTemplateGroup()
    projectName = project.get_name().lower().replace(' ', '_')
    projectFolder = hou.FolderParmTemplate(projectName, project.get_name(), folder_type=hou.folderType.Tabs, default_value=0, ends_tab_group=False)

    source_menu = hou.MenuParmTemplate('source', 'Source', ('set', 'animated', 'object_space'), menu_labels=('Set', 'Animated', 'Object Space'), default_value=2)
    source_menu_index = hou.IntParmTemplate('source_index', 'Source Index', 1, is_hidden=True, default_expression=('ch("source")',))

    projectFolder.addParmTemplate(source_menu)
    projectFolder.addParmTemplate(source_menu_index)
    cook_script='hou.node("./' + geo.name() + '").parm("cook").pressButton()\nprint "Asset Refreshed"'
    projectFolder.addParmTemplate(create_shot_menu(hideWhen='source_index != 1', callback_script=cook_script))
    projectFolder.addParmTemplate(create_set_menu(hideWhen='source_index != 0', callback_script=cook_script))
    hide_toggle = hou.ToggleParmTemplate('hide', 'Hide')
    projectFolder.addParmTemplate(hide_toggle)
    recook = hou.ButtonParmTemplate('re_cook_hda', 'Reload', script_callback=cook_script, script_callback_language=hou.scriptLanguage.Python)
    projectFolder.addParmTemplate(recook)
    version = hou.IntParmTemplate('abcversion', 'Alembic Version', 1)
    projectFolder.addParmTemplate(version)
    lightlink = hou.StringParmTemplate("lightmask", "Light Mask", 1, default_value=(["*"]), string_type=hou.stringParmType.NodeReferenceList) #, menu_items=([]), menu_labels=([]), icon_names=([]))
    lightlink.setTags({"opfilter": "!!OBJ/LIGHT!!", "oprelative": "/"})
    projectFolder.addParmTemplate(lightlink)
    auto_archive = hou.properties.parmTemplate(get_latest_prman(),"ri_auto_archive")
    auto_archive.setDefaultValue(("exist",))
    projectFolder.addParmTemplate(auto_archive)
    parmGroup.addParmTemplate(projectFolder)
    hda.type().definition().setParmTemplateGroup(parmGroup)
    hda.parm("ri_auto_archive").set("force")

    return hda
Example #13
0
def createTurbNoiseFolderParmTemplate(id):
    a_parm = hou.FloatParmTemplate('a' + id,
                                   'Amp' + id,
                                   1,
                                   default_value=(1, ))
    f_parm = hou.FloatParmTemplate('f' + id,
                                   'Freq' + id,
                                   1,
                                   default_value=(1, ))
    t_parm = hou.IntParmTemplate('t' + id, 'Turb' + id, 1, default_value=(5, ))
    r_parm = hou.FloatParmTemplate('r' + id,
                                   'Rough' + id,
                                   1,
                                   default_value=(0.5, ))
    at_parm = hou.FloatParmTemplate('at' + id,
                                    'Atten' + id,
                                    1,
                                    default_value=(1.0, ))

    type_parm = hou.StringParmTemplate('type'+id,'NoiseType'+id,1,default_value = ("a",),\
    menu_items =("p","o","s","a","x","c"),\
    menu_labels =("Perlin","OriginalPerlin","SparseConvultion","Alligator","Simplex","CorrectedPerlin"),\
    join_with_next=True)

    noise_folder = hou.FolderParmTemplate('noise'+id,'Noise'+id,\
    parm_templates = (a_parm,f_parm,t_parm,r_parm,at_parm,type_parm),\
    folder_type = hou.folderType.Simple)

    return noise_folder
def create_cook_button(geo):
    script='''
try:
    hou.node("./set_rig_alembic").cook(force=True)
except:
    print "Error while cooking set_rig_alembic"
try:
    hou.node("./set_model_alembic").cook(force=True)
except:
    print "Error while cooking set_model_alembic"
try:
    hou.node("./animated_rig").cook(force=True)
except:
    print "Error while cooking animated_rig"
try:
    hou.node("./animated_model").cook(force=True)
except:
    print "Error while cooking animated_model"
try:
    hou.node("./set_switch").cook(force=True)
except:
    print "Error while cooking set_switch"
try:
    hou.node("./shot_switch").cook(force=True)
except:
    print "Error while cooking shot_switch"
    '''
    hou_parm_template_group = geo.parmTemplateGroup()
    cook = hou.ButtonParmTemplate('cook', 'Refresh', script_callback=script, script_callback_language=hou.scriptLanguage.Python)
    trouble_shoot_folder = hou.FolderParmTemplate('trouble_shoot', 'Trouble Shooting', folder_type=hou.folderType.Tabs)
    trouble_shoot_folder.addParmTemplate(cook)
    hou_parm_template_group.append(trouble_shoot_folder)
    geo.setParmTemplateGroup(hou_parm_template_group)
    return geo
def _addVRayHairFolder(ptg):
    vrayFolder = ptg.findFolder(VRAY_FOLDER)
    assert vrayFolder

    hairFolder = hou.FolderParmTemplate("vray_hair_folder_main", "Hair")

    vfh_ptg_utils.insertInFolderAfterLastTab(ptg, vrayFolder, hairFolder)
Example #16
0
def add_physical_camera_attributes():
    physCamPlugID = 'CameraPhysical'
    CameraPhysicalDesc = vfh_json.getPluginDesc(physCamPlugID)

    if not CameraPhysicalDesc:
        sys.stderr.write("CameraPhysical plugin description is not found!\n")

    else:
        physCamTabName = "V-Ray Physical Camera"

        for node in hou.selectedNodes():
            if node.type().name() == "cam":
                sys.stdout.write(
                    "Adding \"Physical Camera\" attributes to \"%s\"...\n" %
                    node.name())

                ptg = node.parmTemplateGroup()

                if not ptg.findFolder(physCamTabName):
                    vfh_attrs.insertInFolderAfterLastTab(
                        ptg, ptg,
                        hou.FolderParmTemplate("vray.%s" % physCamPlugID,
                                               physCamTabName))

                vfh_attrs.addPluginParms(ptg,
                                         CameraPhysicalDesc,
                                         parmPrefix=physCamPlugID,
                                         parmFolder=physCamTabName)
                node.setParmTemplateGroup(ptg)

                # Set "Use" by default.
                node.parm("CameraPhysical_use").set(True)
Example #17
0
def createAaNoiseFolderParmTemplate(id):
    a_parm = hou.FloatParmTemplate('a' + id,
                                   'Amp' + id,
                                   1,
                                   default_value=(1, ))
    f_parm = hou.FloatParmTemplate('f' + id,
                                   'Freq' + id,
                                   1,
                                   default_value=(1, ))
    t_parm = hou.IntParmTemplate('t' + id, 'Turb' + id, 1, default_value=(3, ))
    o_parm = hou.FloatParmTemplate('o' + id,
                                   'Offset' + id,
                                   1,
                                   default_value=(0, ))
    r_parm = hou.FloatParmTemplate('r' + id,
                                   'Rough' + id,
                                   1,
                                   default_value=(0.5, ))
    xnoise = hou.ToggleParmTemplate('type' + id, 'Xnoise' + id, 1)

    noise_folder = hou.FolderParmTemplate('noise'+id,'Noise'+id,\
    parm_templates = (a_parm,f_parm,t_parm,o_parm,r_parm,xnoise),\
    folder_type = hou.folderType.Simple)

    return noise_folder
Example #18
0
def pywy():
    """
    create a node to test code with python
    """

    help(pywy)

    import hou
    nodeSelect = hou.selectedNodes()
    pink = hou.Color((0.98, 0.275, 0.275))

    for node in nodeSelect:
        #create node from selected node
        pyNull = node.createOutputNode("null", "pythonRunCode")
        pyNull.setColor(pink)
        #prepa param
        parm_group = pyNull.parmTemplateGroup()
        parm_folder = hou.FolderParmTemplate("folder", "pywy")
        #button run code
        button = hou.ButtonParmTemplate("runcode", "Run_Code")
        button.setTags({
            "script_callback_language":
            "python",
            "script_callback":
            "exec(kwargs['node'].parm('pythonCode').eval())"
        })
        parm_folder.addParmTemplate(button)
        #multistring
        multistring = hou.StringParmTemplate("pythonCode", "PythonCode", 1)
        multistring.setTags({"editor": "1", "editorlang": "python"})
        parm_folder.addParmTemplate(multistring)
        #append param
        parm_group.append(parm_folder)
        pyNull.setParmTemplateGroup(parm_group)
def _addVRayObjectPropertiesFolder(ptg):
    vrayFolder = ptg.findFolder(VRAY_FOLDER)
    assert vrayFolder

    obPropFolder = hou.FolderParmTemplate("vray_object_properties_folder_main",
                                          "Object Properties")

    vfh_ptg_utils.insertInFolderAfterLastTab(ptg, vrayFolder, obPropFolder)
def _addVRayDisplacementFolder(ptg):
    vrayFolder = ptg.findFolder(VRAY_FOLDER)
    assert vrayFolder

    dispFolder = hou.FolderParmTemplate("vray_displ_folder_main",
                                        "Displacement")

    vfh_ptg_utils.insertInFolderAfterLastTab(ptg, vrayFolder, dispFolder)
    def save_tabs_to_hip(self):
        # collect data
        tabs = []
        for i in range(self.count()):
            c = self.widget(i)
            if c.is_backup:
                continue
            text = c.edit.text()
            if c.parm:
                type = 'parm'
                path = c.parm.path()
            elif c.file:
                type = 'file'
                path = c.file
            elif c.section:
                type = 'section'
                path = '/'.join([
                    c.section.definition().nodeType().name(),
                    c.section.name()
                ])
            else:
                type = 'empty'
                path = ''
            tabs.append(dict(text=text, type=type, path=path))
        if not tabs:
            return

        # create node
        self.clear_tabs_node()
        node = hou.node('/obj').createNode('vopnet')
        node.setName(tabsNodeName)

        # create template
        grp = node.parmTemplateGroup()

        for i, tab in enumerate(tabs):
            tp = hou.StringParmTemplate('type%s' % i, 'type%s' % i, 1,
                                        (tab['type'], ))
            path = hou.StringParmTemplate('path%s' % i, 'path%s' % i, 1,
                                          (tab['path'], ))
            text = hou.StringParmTemplate('text%s' % i, 'text%s' % i, 1,
                                          (tab['text'], ))
            text.setTags({"editor": "1"})
            name = os.path.basename(tab['path'])
            if not name:
                name = 'VEX Code%s' % i
            f = hou.FolderParmTemplate(name,
                                       name.replace('.', '_').lower(),
                                       (tp, path, text))
            grp.addParmTemplate(f)

        ind = hou.IntParmTemplate('tabs_active_index', 'tabs_active_index', 1,
                                  (self.currentIndex(), ))
        grp.addParmTemplate(ind)

        node.setParmTemplateGroup(grp)
        node.hide(True)
Example #22
0
def createFolder(ptg, address):
    """create a folder in the given parm template group at the address specified
    This function accepts either a tuple of folder labels or a string using '/' to separate the folder names:
    createFolder(ptg, 'Top/Middle/Bottom')
    This function returns both the modified parm template group and the newly created folder parm template"""
    if isinstance(address, str):
        address = address.split("/")

    _address = address

    if ptg.findFolder(_address):
        return ptg, ptg.findFolder(address)

    target = ptg

    i = 1

    while ptg.findFolder(_address[:i]):
        target = ptg.findFolder(_address[:i])
        i += 1

    temp = hou.FolderParmTemplate(_address[-1].lower(), _address[-1])
    _address = _address[i - 1:-1]

    target_clone = None

    if isinstance(target, hou.FolderParmTemplate):
        target_clone = target.clone()

    for f in _address[::-1]:
        n = hou.FolderParmTemplate(f.lower(), f)
        n.addParmTemplate(temp)

        temp = n

    if target_clone:
        target_clone.addParmTemplate(temp)
        ptg.replace(target, target_clone)
    else:
        ptg.addParmTemplate(temp)

    return ptg, ptg.findFolder(address)
def create_subnet(geoNode,boxNode):
    subnetGeo = geoNode.createNode('subnet', "cutterTool")
    subnetLocation = hou.node('/obj/fractured_geo/subnet/cutterTool/')
    parm_group = subnetGeo.parmTemplateGroup()
    parm_folder = hou.FolderParmTemplate("folder", "Cutter Tool")
    parm_folder.addParmTemplate(hou.IntParmTemplate("cutterNum", "Number of Cutters", 1, (10, 100, 100),(1), (24)))
    parm_folder.addParmTemplate(hou.IntParmTemplate("detailValue", "Detail Value", 1, (1, 100, 100),(1), (24)))
    parm_group.append(parm_folder)
    subnetGeo.setParmTemplateGroup(parm_group)
    subnetGeo.setInput(0, boxNode)
    subnetGeo.moveToGoodPosition()
    return subnetLocation
Example #24
0
def add_physical_camera_attributes():
    if UI is None:
        return

    physCamDS = os.path.join(UI, "plugins", "CameraPhysical.ds")
    if not os.path.exists(physCamDS):
        sys.stderr.write("CameraPhysical.ds is not found!\n")
        return

    for node in hou.selectedNodes():
        if node.type().name() not in {"cam"}:
            continue

        folderName = "VfhCameraPhysical"
        folderLabel = "V-Ray Physical Camera"

        currentSettings = _getCurrectSettings(node)

        _removeCameraPhysicalAttributes(node, folderLabel)

        group = node.parmTemplateGroup()
        folder = hou.FolderParmTemplate(folderName, folderLabel)

        physCamGroup = hou.ParmTemplateGroup()
        physCamGroup.setToDialogScript(open(physCamDS, 'r').read())
        for parmTmpl in physCamGroup.parmTemplates():
            folder.addParmTemplate(parmTmpl)

        group.append(folder)
        node.setParmTemplateGroup(group)

        for parm in node.parms():
            try:
                attrName = parm.name()

                parmValue = currentSettings.get(attrName, None)
                if parmValue is not None:
                    parm.set(parmValue)
                elif attrName in {"CameraPhysical_f_number"}:
                    parm.setExpression("ch(\"./fstop\")")
                elif attrName in {"CameraPhysical_focus_distance"}:
                    parm.setExpression("ch(\"./focus\")")
                elif attrName in {"CameraPhysical_horizontal_offset"}:
                    parm.setExpression("-ch(\"./winx\")")
                elif attrName in {"CameraPhysical_vertical_offset"}:
                    parm.setExpression("-ch(\"./winy\")")
                elif attrName in {"CameraPhysical_focal_length"}:
                    parm.setExpression("ch(\"./focal\")")
                elif attrName in {"CameraPhysical_film_width"}:
                    parm.setExpression("ch(\"./aperture\")")
            except:
                pass
Example #25
0
    def ghostShaderCreate(self, ghost_mat_folder, ghost_name):
        """Create a shader for a new ghost.
        
        INPUTS:
        ghost_mat_folder -- ghost shader network folder
        ghost_name -- object name from which a new ghost is created

        OUTPUTS:
        ghost_shader -- new ghost shader node
        """
        with hou.undos.group("Create Ghost Shader"):
            current_frame = hou.frame()
            ghost_shader = ghost_mat_folder.createNode(
                'vopmaterial',
                node_name=ghost_name + "_ghost_mat" + '_frame_' +
                str(current_frame))
            parm_group = ghost_shader.parmTemplateGroup()
            parm_folder = hou.FolderParmTemplate("folder", "OpenGL")
            parm_folder.addParmTemplate(
                hou.FloatParmTemplate("ogl_spec", "Specular", 3))
            parm_folder.addParmTemplate(
                hou.FloatParmTemplate("ogl_transparency", "Transparency", 1))
            parm_folder.addParmTemplate(
                hou.FloatParmTemplate("ogl_ior", "IOR", 1))
            parm_folder.addParmTemplate(
                hou.FloatParmTemplate("ogl_spec_intensity", "Intensity", 1))
            parm_folder.addParmTemplate(
                hou.FloatParmTemplate("ogl_rough", "Roughness", 1))
            parm_group.append(parm_folder)
            ghost_shader.setParmTemplateGroup(parm_group)
            ghost_shader.setParms({
                "ogl_specx":
                self.ghostColorLabel.palette().color(
                    QtGui.QPalette.Base).redF(),
                "ogl_specy":
                self.ghostColorLabel.palette().color(
                    QtGui.QPalette.Base).greenF(),
                "ogl_specz":
                self.ghostColorLabel.palette().color(
                    QtGui.QPalette.Base).blueF(),
                "ogl_transparency":
                1,
                "ogl_ior":
                1.06,
                "ogl_spec_intensity":
                5,
                "ogl_rough":
                0
            })
            ghost_shader.moveToGoodPosition()
            return ghost_shader
Example #26
0
def imprint(node, data):
    """Store attributes with value on a node

    Depending on the type of attribute it creates the correct parameter
    template. Houdini uses a template per type, see the docs for more
    information.

    http://www.sidefx.com/docs/houdini/hom/hou/ParmTemplate.html

    Args:
        node(hou.Node): node object from Houdini
        data(dict): collection of attributes and their value

    Returns:
        None

    """

    parm_group = node.parmTemplateGroup()

    parm_folder = hou.FolderParmTemplate("folder", "Extra")
    for key, value in data.items():
        if value is None:
            continue

        if isinstance(value, float):
            parm = hou.FloatParmTemplate(name=key,
                                         label=key,
                                         num_components=1,
                                         default_value=(value, ))
        elif isinstance(value, bool):
            parm = hou.ToggleParmTemplate(name=key,
                                          label=key,
                                          default_value=value)
        elif isinstance(value, int):
            parm = hou.IntParmTemplate(name=key,
                                       label=key,
                                       num_components=1,
                                       default_value=(value, ))
        elif isinstance(value, six.string_types):
            parm = hou.StringParmTemplate(name=key,
                                          label=key,
                                          num_components=1,
                                          default_value=(value, ))
        else:
            raise TypeError("Unsupported type: %r" % type(value))

        parm_folder.addParmTemplate(parm)

    parm_group.append(parm_folder)
    node.setParmTemplateGroup(parm_group)
    def _addVRayCameraPhysical(ptg):
        vrayFolder = ptg.findFolder(VRAY_FOLDER)
        assert vrayFolder

        vfh_ptg_utils.insertInFolderAfterLastTab(
            ptg, vrayFolder,
            hou.FolderParmTemplate(
                "VfhCameraPhysicalTab", "Physical Camera", **{
                    'parm_templates': (vfh_ptg_utils.getParmTemplatesFromDS(
                        "CameraPhysical", prefix="CameraPhysical")),
                    'tags': {
                        'spare_category': 'vray'
                    }
                }))
    def process(self, context, plugin):

        # Get the errored instances
        failed = []
        for result in context.data["results"]:
            if (result["error"] is not None and result["instance"] is not None
                    and result["instance"] not in failed):
                failed.append(result["instance"])

        # Apply pyblish.logic to get the instances for the plug-in.
        instances = pyblish.api.instances_by_plugin(failed, plugin)

        plugin = plugin()
        for instance in instances:

            node = instance[0]
            templates = []

            templates.append(
                hou.IntParmTemplate("deadlineChunkSize",
                                    "Chunk Size",
                                    1,
                                    default_value=(1, )))
            templates.append(
                hou.IntParmTemplate("deadlinePriority",
                                    "Priority",
                                    1,
                                    default_value=(50, )))
            templates.append(
                hou.StringParmTemplate("deadlinePool",
                                       "Pool",
                                       1,
                                       default_value=("", )))
            templates.append(
                hou.IntParmTemplate("deadlineConcurrentTasks",
                                    "Concurrent Tasks",
                                    1,
                                    default_value=(1, )))

            parm_group = node.parmTemplateGroup()
            parm_folder = hou.FolderParmTemplate("folder", "Deadline")

            for template in templates:
                try:
                    parm_folder.addParmTemplate(template)
                except:
                    self.log.debug("Could not add \"{0}\"".format(template))

            parm_group.append(parm_folder)
            node.setParmTemplateGroup(parm_group)
Example #29
0
def add_parm(node):
    ptg = node.parmTemplateGroup()

    if ptg.parmTemplates()[-1].name() == 'wedge_list':
        for i in ptg.parmTemplates()[-1].parmTemplates():
            node.parm(i.name()).set(10)
    else:
        parm_folder = hou.FolderParmTemplate('wedge_list', 'Wedge List')
        parm_folder.setFolderType(hou.folderType.Simple)
        parm_folder.addParmTemplate(hou.FloatParmTemplate('first', 'First', 1))
        parm_folder.addParmTemplate(hou.FloatParmTemplate('last', 'Last', 1))
        ptg.append(parm_folder)

    node.setParmTemplateGroup(ptg)
def _addVRayHairParmTemplates(ptg, vrayFolder):
    ptg.appendToFolder(
        vrayFolder,
        hou.FolderParmTemplate(
            "vray_hair_folder_main", "Hair", **{
                'parm_templates':
                (vfh_ptg_utils.getParmTemplatesFromDS("GeomMayaHair",
                                                      prefix="GeomMayaHair")),
                'folder_type':
                hou.folderType.Simple,
                'tags': {
                    'spare_category': 'vray'
                }
            }))