memo

memo

About Me

Connect

LOCATION
Not Specified
WEBSITE

Houdini Skills

Availability

Not Specified

Recent Forum Posts

Cannot get velocities blur to work in Karma, Houdini 20.0.59 Jan. 21, 2024, 9:55 p.m.

Thank you!! Yes both methods worked!

P.S. All the documentation I found said that there needed to be a velocities attributes. So seeing that I had no motionblur, out of desperation I tried that.

Cannot get velocities blur to work in Karma, Houdini 20.0.59 Jan. 21, 2024, 5:32 p.m.

I'm trying to get velocities blur (and motion vectors AOV) to work in Karma, Houdini 20.0.59, and just cannot.

Attached is a test case hipfile and screenshot.

I tried:

1. Particle system with @v attrib copied to @velocities. Velocity Blur enabled. Cache node after my render settings. No motion blur at all.

2. Animated mountain and transform SOP on sphere. Random huge @velocities attribute (also copied to @v to visualize, see screenshot below). Velocity Blur enabled. I'm getting motion blur, but it's the correct (i.e. deformation) blur, and ignoring my velocities attributes.

Even though I can see the velocities attribute in my scene graph! (and they are the random huge ones).

Why are the velocities being ignored?

P.S. I also want motion vectors AOV, but it keeps appearing black. See attached hip.

Workflow wrt hip, render and cache folders and filenames Sept. 5, 2023, 1:45 a.m.

I ended up writing a little HDA to manage this. It browses and lists all subfolders of a specified cache root folder, and constructs a path to be used by other nodes (such as FileCache, Render etc).

Details at https://github.com/memo/msa_pathversioner [github.com]



def listdir(path):
    '''list only directories in a path'''
    return [_ for _ in os.listdir(path) if os.path.isdir(os.path.join(path, _))]
    
    
def get_hipname():
    '''return current HIP name'''
    return hou.expandString('$HIPNAME')
    
    
def menu_from_list(l):
    '''
    return a list suitable for displaying as a dropdown menu
    i.e. each item is listed twice 
    '''
    return [x for x in l for _ in (0, 1)]

    
    
def get_path(node):
    '''construct the path to search'''
    root_folder = node.parm('root_folder').eval()
    name = node.parm('name').eval()
    path = os.path.join(root_folder, name)
    return path

    
def menu_from_dirlist(node):
    '''
    given a root directory path,
    return folder contents suitable for displaying as a dropdown menu,
    '''
    path = get_path(node)
    try:
        l = menu_from_list(listdir(path))
    except:
        l = []
        pass
        
    hipname = get_hipname()
    if hipname in l:    # if current hipname is in the list, add info that it's current
        # add to next index, because first occurence is value, second occurence is label
        l[l.index(hipname) + 1] += ' (Current HIP file)'
    else: # if not found, add it to the top as current
        l = ['$HIPNAME', f'{hipname} (Current HIP file, no folder available)'] + l
    update(node) # update UI
    return l
    
def update_env():
    hou.putenv('HIPBASENAME', get_hipname().split('.')[0])

    
def update(node):
    '''update UI'''
    update_env()
    path = get_path(node)
    msg = path + '\n'
    if not os.path.exists(path) or not os.path.isdir(path):
        msg += 'Directory not found\n'
    else:
        l = []
        try:
            l = listdir(path)
        except:
            pass
        msg += f'{len(l)} entries found:\n'
        msg += '\n'.join(l)
        msg += '\n'
    msg += '------\n'
    msg += f'Current HIP: {get_hipname()}\n'
    node.parm('info').set(msg)