Yunus Balcioglu

animatrix_

About Me

Senior FX Technical Director @ Industrial Light & Magic | Feature film credits include The Lord of the Rings: The Rings of Power, Marvel's Eternals, Star Wars: The Rise of Skywalker, X-Men: Dark Phoenix, X-Men: Apocalypse, Aquaman, Alien: Covenant, Pirates of the Caribbean, Justice League and many m...  more
専門知識
Technical Director
業界:
Film/TV

Connect

LOCATION
Singapore, Singapore
ウェブサイト

Houdini Engine

ADVANCED
プロシージャルワークフロー  | Digital Assets  | Mantra  | Pyro FX  | Fluids  | 説明  | VEX  | Python
INTERMEDIATE
Realtime FX

Availability

Not Specified

チュートリアル

obj-image Advanced
Pragmatic VEX: Volume 1
obj-image Advanced
Pragmatic VEX: Volume 1

My Talks

obj-image HUG
Retiming Ocean Spectra & The Pragmatic Approach to Solving Technical Problems in VFX
obj-image HIVE
Face Peeling Using KineFX

Recent Forum Posts

The value of point attribute when running over primitives? 2025年5月5日4:57

Yeah, @N is special in its own way, but in a different way. It gives you the geometric normal of the primitive, not the average of any point normals. So even if there's no N attribute, Houdini still provides it based on the primitive's shape.

That's what I meant by @Cd, @N and other attributes won't give you the same result, i.e. the average of the same attribute for all the points of the primitive.

The value of point attribute when running over primitives? 2025年5月5日3:44

@P is normally a point attribute, but in a Primitive Wrangle, Houdini binds it to the centroid of the primitive — the average of its points’ positions. It's a special case. Other attributes like @Cd or @N won’t behave this way.

Python: How to get the active Network Editor pane? 2025年5月4日6:22

Yes, that’s one way to do it — incrementing the index until it returns None.

In my code, I usually try to get the pane under the cursor first, and if it’s not the type I’m looking for, I fall back to getting the first instance like this:

def getPaneTabUnderCursorOrFirstInstance(paneType):
    """
    Utility function to retrieve a pane tab of a specific type.

    Tries to get the pane tab under the cursor first. If none is found,
    falls back to the first instance of the specified pane type in the current desktop.

    Args:
        pane_type (hou.paneTabType): The type of pane tab to search for.

    Returns:
        hou.PaneTab or None: The found pane tab of the specified type or None if not available.
    """
    desktop = hou.ui.curDesktop()
    paneTab = None

    # Try to get the pane tab under the cursor
    pane = hou.ui.paneTabUnderCursor()
    if pane and pane.type() == paneType:
        paneTab = pane
    else:
        # Fallback to the first instance of the specified type in the desktop
        paneTab = desktop.paneTabOfType(paneType)
    
    return paneTab