Ahmed Hindy

AhmedHindy

About Me

Technical Artist @Trend VFX
EXPERTISE
VFX Artist
INDUSTRY
Film/TV

Connect

LOCATION
Cairo, Egypt
WEBSITE

Houdini Skills

Availability

I am available for Full Time Work

Recent Forum Posts

Mipmapped textures and Karma Feb. 6, 2026, 4:35 p.m.

I have a lot of .tx files generated from Arnold, due to storage constraints, I would like to use .tx files with Karma without having a second .rat file sitting next to the .rat file.

Can I expect the same performance and first class support in Karma XPU for both? I am houdini 20.5.445 btw.

How to export volumes that appear-disappear to a USD file? Sept. 20, 2025, 6:57 a.m.

nvm I wrote a python script that can be dropped in a python LOP node after the volume LOP:


from pxr import Usd, UsdGeom, UsdVol
import hou


node = hou.pwd()
stage = node.editableStage()


def hide_volumes_without_vdb(stage, root="/", verbose=True):
    """Hide Volume prims that don't contain any OpenVDBAsset children.

    Args:
        stage (Usd.Stage): Editable USD stage (e.g., from a Python LOP).
        root (str): Path under which to search; "/" scans the whole stage.
        verbose (bool): If True, print what was hidden.

    Returns:
        list[str]: Paths of Volume prims whose visibility was set to invisible.
    """
    if root == "/":
        start_prim = stage.GetPseudoRoot()
    else:
        start_prim = stage.GetPrimAtPath(root)
        if not start_prim:
            if verbose:
                print(f"[hide_volumes_without_vdb] Root '{root}' not found.")
            return []

    hidden_paths = []
    for prim in Usd.PrimRange(start_prim):
        # Check prims typed as Volume
        if not prim or not prim.IsValid():
            continue
        if not prim.IsA(UsdVol.Volume):
            continue

        # Look for active OpenVDBAsset children directly under the Volume
        has_openvdb_child = any(
            child.IsActive() and child.IsA(UsdVol.OpenVDBAsset)
            for child in prim.GetChildren()
        )

        if not has_openvdb_child:
            img = UsdGeom.Imageable(prim)
            img.GetVisibilityAttr().Set(UsdGeom.Tokens.invisible)
            hidden_paths.append(str(prim.GetPath()))

    if verbose and hidden_paths:
        print("[hide_volumes_without_vdb] Set invisible:", *hidden_paths, sep="\n  ")
    elif verbose:
        print("[hide_volumes_without_vdb] No empty Volume prims found.")

    return hidden_paths



node = hou.pwd()
stage = node.editableStage()
hide_volumes_without_vdb(stage, root="/", verbose=True)

I hope that helps.

How to export volumes that appear-disappear to a USD file? Sept. 20, 2025, 6:38 a.m.

Houdini 21.0.440 and that behavior still hasn't changed. Any tips on how this is solved?