Beispiel #1
0
def init(node):
    nodePath    = node.path()
    function    = inspect.stack()[0][3]
    try:        
        hou.hscript('setenv ASSET = '+path.asset(node))
        hou.hscript('setenv COMPONENT = '+path.component(node))
        hou.hscript('setenv JOB = '+path.hq_project_path(node).replace('\\','/'))
        #hou.putenv("ASSET",     path.asset(node))
        #hou.putenv("COMPONENT", path.component(node)) 
        #hou.putenv("JOB",       path.hq_project_path(node))         
               
    except (KeyboardInterrupt, SystemExit):
        log.node(node, 1, "Interrupt requested of "+function+" for "+nodePath+"...exiting")
        return          
Beispiel #2
0
def path_util(node, name, folder, ext, nameopt=None, component=None):
    path_var = "path_" + name
    path = node.evalParm(path_var)
    enable_var = "enable_" + name
    path_enable = node.evalParm(enable_var)

    if path_enable == 1 and path != "":
        path = path
    else:
        frame_tex = node.evalParm('frame_tex')
        method = node.evalParm('method')

        if nameopt:
            name_ext = nameopt
        else:
            name_ext = name

        if not component:
            component = pth.component(node)

        filelist = ['/', component, '_', name_ext, '_vat', ext]

        if ext is '.shader':
            filelist = ['/', component, '_vat', ext]

        if ext is 'texture':
            ext = node.evalParm("ext_texture")
            if ext == "":
                ext = '.exr'
            filelist = ['/', component, '_', name_ext, '_vat', ext]
            if frame_tex == 1 and method == 2:
                frame = '.' + str(hou.intFrame()).zfill(5)
                folder = "Resources/StreamingAssets/" + component
                filelist = ['/', name_ext, frame, ext]

        dirlist = [project(node), folder]

        path = pth.path_create(dirlist, filelist).replace("\\", '/')

    os.path.normpath(path)
    return path
Beispiel #3
0
def vat_attributes(node):
    component = pth.component(node)
    node_bounds = node.node("data/OUT_max_min")
    geo = node_bounds.geometry()
    data = {}
    data['_posTex'] = path_pos(node)
    data['_rotTex'] = path_rot(node)
    data['_scaleTex'] = path_scale(node)
    data['_colTex'] = path_col(node)
    data['_normTex'] = path_norm(node)
    data['_uvTex'] = path_uv(node)
    data['_matTex'] = path_mat(node)
    data['_shaderTex'] = path_shader(node)
    data['_dataTex'] = path_data(node)
    data['_numOfFrames'] = str(geo.attribValue("frange"))
    data['_speed'] = str(geo.attribValue("speed"))
    data['_posMax'] = str(geo.attribValue("bbx_max"))
    data['_posMin'] = str(geo.attribValue("bbx_min"))
    data['_scaleMax'] = str(geo.attribValue("scale_max"))
    data['_scaleMin'] = str(geo.attribValue("scale_min"))
    data['_pivMax'] = str(geo.attribValue("pivot_max"))
    data['_pivMin'] = str(geo.attribValue("pivot_min"))
    data['_textureSizeX'] = str(geo.attribValue("img_size1"))
    data['_textureSizeY'] = str(geo.attribValue("img_size2"))
    data['_paddedSizeX'] = str(geo.attribValue("pad_size1"))
    data['_paddedSizeY'] = str(geo.attribValue("pad_size2"))
    data['_packNorm'] = str(geo.attribValue("pack_norm"))
    data['_packPscale'] = str(geo.attribValue("pack_pscale"))
    data['_normData'] = str(geo.attribValue("normalize_data"))
    data['_doubleTex'] = str(geo.attribValue("bitDepthPack"))
    data['_padPowTwo'] = str(geo.attribValue("padpowtwo"))
    data['_width'] = str(geo.attribValue("width_height1"))
    data['_height'] = str(geo.attribValue("width_height2"))
    data['_method'] = str(geo.attribValue("method"))

    return data
Beispiel #4
0
def oppath_geo_create(node):
    smethod = method_str(node)[1]
    oppath, name, temp_subnet = oppath_geo(node)
    data = vat_attributes(node)
    #path_list = ["_posTex","_rotTex","_scaleTex","_colTex","_normTex","_uvTex","_matTex","_shaderTex","_dataTex"]
    path_list = ["_uvTex", "_matTex", "_shaderTex", "_dataTex", "_method"]
    #for key in list(data):
    for key in data.copy().keys():
        if key in path_list:
            del data[key]

    # delete temporary export subnet if it exist
    export_node = hou.node('/obj/' + temp_subnet)
    if export_node != None:
        export_node.destroy()

    # Create parent subnet folder in a directory no one will ever name
    parent_node = hou.node('/obj').createNode('subnet', temp_subnet)
    parent_node.setColor(hou.Color((0.0, 0.6, 1.0)))
    parent_node.moveToGoodPosition()

    # Create geometry node we will export
    fbx_node = parent_node.createNode('geo', name)
    fbx_node.setColor(hou.Color((0.0, 0.6, 1.0)))
    fbx_node.moveToGoodPosition()

    scene_scale = node.evalParm('scale')
    scale_max_min = node.evalParm('scale_max_min')
    if scale_max_min == 0:
        scene_scale = 1

    fbx_node.parm('tx').set(node.evalParm("tx") * scene_scale)
    fbx_node.parm('ty').set(node.evalParm("ty") * scene_scale)
    fbx_node.parm('tz').set(node.evalParm("tz") * scene_scale)
    fbx_node.parm('sx').set(node.evalParm("sx"))
    fbx_node.parm('sy').set(node.evalParm("sy"))
    fbx_node.parm('sz').set(node.evalParm("sz"))
    fbx_node.parm('rx').set(node.evalParm("rx"))
    fbx_node.parm('ry').set(node.evalParm("ry"))
    fbx_node.parm('rz').set(node.evalParm("rz"))
    fbx_node.parm('px').set(node.evalParm("px") * scene_scale)
    fbx_node.parm('py').set(node.evalParm("py") * scene_scale)
    fbx_node.parm('pz').set(node.evalParm("pz") * scene_scale)

    for key, value in data.items():
        parm = "fbx_" + key
        fbx_node_Template = hou.StringParmTemplate(
            parm,
            parm,
            1,
            default_value=([value]),
            naming_scheme=hou.parmNamingScheme.Base1,
            string_type=hou.stringParmType.NodeReference,
            menu_items=([]),
            menu_labels=([]),
            icon_names=([]),
            item_generator_script="",
            item_generator_script_language=hou.scriptLanguage.Python,
            menu_type=hou.menuType.Normal)
        fbx_node.addSpareParmTuple(fbx_node_Template)

    # import the mesh data
    fbx_node_import = fbx_node.createNode('object_merge', 'Import')
    fbx_node_import.setColor(hou.Color((0.0, 0.6, 1.0)))
    fbx_node_import.moveToGoodPosition()

    fbx_node_import = fbx_node.node('Import')
    fbx_node_import.parm('xformtype').set('none')
    mesh_node = node.node('data/OUT_Mesh')
    fbx_node_import.parm('objpath1').set(mesh_node.path())

    matnet_node = parent_node.createNode('matnet', 'material')
    matnet_node.setColor(hou.Color((0.0, 0.6, 1.0)))
    matnet_node.moveToGoodPosition()

    mat_name = pth.component(node) + '_' + smethod + '_mat_vat'
    mat_node = matnet_node.createNode(
        'LaidlawFX::vertex_animation_textures::1.0', mat_name)
    mat_node.setColor(hou.Color((0.0, 0.6, 1.0)))
    mat_node.moveToGoodPosition()

    for key, value in data.items():
        mat_node.parm(key).set(value)

    mat_path = node.evalParm("shop_materialpath")
    if mat_path:
        mat_node = node.node(mat_path)

    fbx_node.parm('shop_materialpath').set(mat_node.path())