.BGEO Browser

File Browser for Houdini and other common 3D Formats. Makes it easy to Browse Custom Props, place them in the Viewport or Network Editor. Compatible with Geometry, Image and Text Files. With a fast batch thumbnailer for previews and lots of other easy to use Batch converters.

Features:

  • Browse Houdini Format Files and common geometry (.bgeo, .obj, limited support for .fbx) and texture formats (.png, .rat, .tif)
  • Batch Convert to .rat (Random Access Texture) Image Format
  • Batch Convert to .bgeo/.obj Geometry Format
  • Fast Thumbnail Batch Render for all supported Geometry Formats including .vdb etc.
  • Place selected Files in Viewport.
  • Drag and Drop to Viewport or Network Editor from .bgeo Browser or Native System Filebrowser.
  • Drag and Drop to Network Editor
  • Custom Right Click Context Menu per filetype.
  • Apply Texture Maps or Materials on Selected Primitives or Object.
  • Switch PBR Textures on Objects based on suffix (_basecolor, _normal, _height, _roughness) (Auto switch all Textures with one click.)
  • Support for Autogeneration of Megascan or Substance Texture Maps based on Albedo, Diffuse, or basecolor suffix.
  • ABC File Extractor, Batch Extract Frames from Alembic as .bgeo
  • Batch convert to .rat, .png, .jpg, .tga, .exr
  • Shift, Alt and Double Click Shortcuts.
  • Quickplace Material or Geometry with Alt Click
  • Opening and appending Image Files in mplay as Sequence.
  • Generate Thumbnails with hrender (limited to 200 files per batch)
  • Custom .hip for thumbnail Generation
  • Imlemented Execution of gplay, mplay, abcconvert
  • Open or Print to Console for Text Files.
  • Filter Options: Image, Geometry and Text Formats
  • View Options: List View or Thumbnails in Grid, Icon Scale: 32, 64, 128

Inspecting Files:

Double Click on .bgeo files will display ginfo in the console.

Right Click opens a custom context menu where operations can be performed like converting to other formats.

To open a bgeo in another window use the gplay command or click the Button Open with gplay.

Double clicking on .rat files will open them in mplay.

Mouse signals might change depending on Feature Requests.

Thumbnails Generation:

  • Generating thumbnails uses the opengl ROP render and has to launch a hython subprocess which needs a valid houdini license.
  • The Button Generate All Thumbs will run only one single hython process and loop thru all geometry in the folder. This is the fastest way of generating thumbnails. It takes only a few seconds for
  • All thumbnails will be stored with the same name as the geometry file name with the extension .jpg


Placing Files in Viewport:

By Default Placing in Viewport is Supported on all Platforms and works independent from the Drag and Drop functionality.

  • Quick Place: Hold alt-shift key and Click the File. For Quickly placing the selected File into the Viewport at location (0,0,0)
  • Place at User selected Location: Hold alt key and Click the File. A Null will show up in the viewport and the User can select where to place the geometry. (Use C-Plane to constrain to one axis.)
  • With multiple selected Files we can press the Button "Place in Viewport" to place multiple files in the Viewport. Holding down Shift when pressing the Button will place everything at (0,0,0)

In Addition drag and drop can be used too. See next Chapter.


Drag and Drop:

  • Drag and Drop functionality works not directly on the item but rather you have to select the files first and then drag from the title/houdini logo in the python panel. From there a small + icon will appear once we start dragging. We can then release the mouse somewhere in the Viewport.
  • Multiple Files can be selected and the user will be asked to place each of them after each other once dragged in the viewport.

In Addition multiple files can be selected and the button Place can be pressed to do the same thing. A small null will appear in the viewport where to place the Geometry File.

Double Clicks / Middle Clicks:

Double Clicking Image Files will open them with the command imdisplay which, if you keep mplay opened, will append the next opened image at the next frame. Once mplay is loaded it will be very fast displaying another image.

Double Clicking Geometry files will try to print information with ginfo command inside the Console.


Middle Click is not implemented atm.

Supported Formats:

  • Geo: *.geo, *.bgeo, *.ply, *.obj, *.poly, *.bpoly, *.dxf, *.fbx, *.hclassic, *.bhclassic, *.geo.gz, *.geogz, *.bgeo.gz, *.bgeogz, *.hclassic.gz, *.hclassicgz, *.bhclassic.gz, *.bhclassicgz, *.geo.sc, *.geosc, *.bgeo.sc, *.bgeosc, *.hclassic.sc, *.hclassicsc, *.bhclassic.sc, *.bhclassicsc, *.rib, *.vdb, *.bhclassic.lzma, *.bgeo.lzma, *.hclassic.bz2, *.bgeo.bz2, *.pc, *.pmap, *.geo.lzma, *.iges, *.igs, *.pdb, *.lw, *.lwo, *.geo.bz2, (Note: Alembic format .abc will be implemented separately at later stage with more complex support.)
  • Images: *.rat", *.png, *.pic, *.tga, *.tif, *.pic.gz, *.jpg, *.picZ, *.pic.Z, *.picgz, *.tbf, *.picnc, *.piclc, *.rgb, *.rgba, *.sgi, *.tif3, *.tif16, *.tif32, *.tiff, *.pix, *.cin, *.jpeg, *.exr, *.tga, *.vst, *.vtg, *.rla, *.rla16, *.rlb, *.rlb16, *.bmp, *.hdr, *.ptx, *.ptex, *.ies, *.qtl

System Requirements:

Houdini >=16.5, Houdini Engine/Batch License for Thumbnail Generation, Microcity Toolset installed as $MCITY

Support for Windows and Linux. (Not tested on MacOS)

Todo and Feature Requests (Priority from top = high / down = lower) / crossed-out parts will be implemented in next updates crossedoutfat are on server

  • Rewrite thumbnails to add prefix thumb_ and add thumbnails for jpg formats + other supported formats with PIP
  • Drag And Drop fix for Houdini 17
  • Drag and Drop Texture to Mat network removes "rat" instead of .rat causing names to be wrong for example for decoration.png
  • Fix Roughness Value and set to 1 if roughness map is available, -> when drag and drop Shader Map Sets into network editor
  • Debug and test drag and drop. Fix error outputs with try:/except:
  • If there is more than 200 Files in a one Folder the Thumbnail generation on windows fails since of the limit of how many arguments can be passed within a batch command. TODO: Rewrite Generate Thumbnail to use Generate All Thumbnails with Selected Items only. This way at least we can select a bunch of files and generate thumbnails.
  • Drag and Drop to subnets fails.
  • Right Click Context does not work with New Class Widget. Correct with Use Direct Drag Mode (When Set enabled in Settings)
  • Textures for Thumbnails (look for _diffuse _albedo or _basecolor) (might be too slow with several 4k maps. Add as options in settings?)
  • Add standard megasacan suffix (_albedo, _Normal _Roughness )to Material Loader Function.
  • Optimitze Material and Texture Loading to standards for megascan library and others.. mainly substance.
  • Look at options for optimize the code when there are a lot of files in one folder. (multithread?)
  • Use a Custom sort option that groups by similar name somehow... (for LOD1 LOD2 etc.)
  • Add Support for Drag and Drop for all Image Formats.
  • Added mat context support for Megascan Materials. Dragging Albedo in mat context now sets up a Material.
  • Implement New Class Widget for detailed list view in refresh()
  • Implement clamp icon size option in setting window ()
  • implement other image formats for texture dragdrop
  • Implement py, vex, vfl etc. into text files supported formats
  • .rat thumbnails (iconvert to jpg) (causes problem atm.)
  • IMPLEMENT ALEMBIC Supports:
  • Implement in dragdrop.py when file is abc load it with alembic sop.
  • Widget ABC Converter functions -l is not implemented.
  • Widget ABC Converter load in gplay is not appending files.
  • When file is abc use abcinfo instead of ginfo to display infos. (Add as option abcinfo in context menu since ginfo gives already some good info on the abc file content)
  • implement png and exr for thumbnails. tga too and maybe tif depending on PIP module support
  • Add Compressing Widget for .bgeo to .bgeo.sc hsc [-f] [-d] [-l compression_level] [-b block_size] [input [output]]
  • Disable right click itemMenu "Convert to .rat" when clicking on a file that is already a .rat file.
  • Refresh has ext detection for files without the logic for detecting a dot in fileextension such as pic.gz resulting in a sidefx.pic.rat file when converting sidefx.pic.gz
  • Need to implement a logic for fileformats with a a dot: pic.gz bgeo.gz files etc. probably breaking files that use dots... ?
  • Base Support for thumbnails on image formats.
  • Base Function for thumbnail generation for image files (note: only jpg works atm)
  • Add Option to disable Thumbnails.
  • Support for Generating Thumbnails for: jpg, tif, png and tga
  • Fix DragDrop when already in placement mode but draging another object again Houdini wants to open the file as a hip file. added try:
  • Search Function (Seems to be too slow atm, making houdinis ui hang for a while therefor not implemented.)
  • Add Option to place within the current context.
  • implement a small settings windows
  • fix border style in python panel window (setProperty())

  • Store Settings on disk (with bgeoviewer_config.py and config.ini)
  • Add Convert Option to bgeo.sz note: best option would be to let user decide what format to convert to. (Might implement this only after we implemented a settings window. so a default convertto can be defined there. We want to keep the main window simple and not add more buttons etc. Better to keep most function in right click menu)
  • Load last saved path (Might need to check if the directory really exist otherwise if user copies config.ini to other computer.)
  • store all settings on disk, store last path in settings on disk and reload it so it starts at the last path the user left.
  • Write Function to generate jpg thumbnails for images. Implement Thumbnails

  • Rename thumb_name and add postfix _thumb or suffix .thumb_ to avoid conflicts (Look at options to make files invisible on windows?)
  • add option to not show thumbnails since having 1000 obj with thumbnails might get really slow especially on images when we use the image directly? probably not a good idea to implement thumbnails for images currently ..
  • Implement CHOP and Channel Files such as .chan .macclaim
  • Add support to drag and drop image files in the viewport and apply as Textures. If the texture ends with _diffuse.png or _basecolor.png the script will look for _normal _roughness and _height with the same base filename and setup a material.
  • Debug functionality to skip txt and other files not supported in viewport, when dragged inside viewport. (Note text files could be turned into a font sop)
  • Add Support for detecting current houdini viewport context if inside a node SOP context or at /obj level. Implemented in dropInNetwork()
  • When gconvert check if geometry is fbx or obj and then perform different task. Seems there is no command line option for converting to fbx. Note: using gwavefront now to convert obj files.
  • Add Drag directly to item in QListWidget... at the moment we have to select files and then drag and drop from the title image. Other drag options are too buggy. (This is too buggy atm..)
  • Fix Right Click Menu on empty space.
  • implement chop data files such as acclaim motion capture
  • Convert FBX to BGEO (does not work with gconvert, must run in hython, therefor no implementation planned atm.) (abandoned)
  • Add prim count to thumbnail preview generation (abandoned)
  • Add window setting for batch converters with options. (iconvert -g off, save as different name, add postfix, add prefix, )
  • fix thumbnail generation for pictures with alpha channel. (abandoned)


  • !!!Fix Go one folder up button when at root!!! note: setFolder and dirup was called. removed in setfolder.
  • !!!Generate All Thumbs: if the thumbnail jpg file already exists skip the file!!!
  • Fix .rat files not implemented in refresh()
  • Fix Errors when Icons not available to make the interface load with some internal icons.
  • Turn all converters into loops so multiple files can be converted at once. Should be fairly straight forward workflow and easy to implement.
  • Make open in mplay into loop so multiple images can be stacked into frames in an mplay display (use imdisplay ?)
  • Basic Fixes for Linux
  • Change all paths so they !!!Use os.path.join() to make Paths !!! to avoid having \ and / mixed...
  • Add Parsing of paths for unix commands back to "/" instad of "\" -> Function self.parseunix(string)
  • Sort Options (type, ext, date/asis)
  • implement rnd init sorting in refresh()
  • fix width scale of icons in thumbnail view when img or txt files around
  • Fix Linux Python Converter Code. Check Compatibility in Windows... Might need to check OS and call shell script hbatch, hscript etc. different :/ See comment in code.
  • !!!Make absolute paths that point to $HIP, $JOB or $MCITY use the actual $ Variable instead of an absolute path when drag or placing geo in viewport!!!
  • Give correct names to Nodes when dragged or placed into Viewport.
  • Implement .fbx, .abc File Format
  • Basic Support for pic.gz
  • !!!Add Support to convert geo file formats to .bgeo!!!
  • Alt Click now places a geo into viewport.
  • Add Shift click option to place directly in the viewport without user input where to place
  • Add Shift, Ctrl, Alt click actions... (removed ctrl as its used to deselect files and confilcts with widgetlist multi selection)
  • read out HEADER of .bgeo file and look for nprims info (might be faster than ginfo) note: caused all sorts of problems atm. might need to filter .bgeo only first?
  • Right Click Menu: Copy Relative Path (Copies Relative Path to File to clipboard) useful for copy pasting paths
  • Implement .jpg find geo with same name in initial load.
  • Move ui loader to new dotBGEOBrowser
  • Add Support for .jpg Files. (Needs rewriting of thumbnail generators) note: fixed by checking if the filename.jpg exist as filename.bgeo, filename.obj etc.
  • Add Support for .vdb Voxel Files
  • Clean up and comment code
  • Add Support for files with dots (like: iam.frame.4.001.png) note: rewritten how we determine extension. changing a few functions, might have missed one or another.
  • Rethink Shift, Alt Keys since they will be used for selecting multiple files. Note alt and alt+shift are enabled. rest is off.
  • Remove N/A Right Click items
  • Implement Sort for Folders.
  • add base hdri support
  • Add base exr base support
  • Add options for showing img/txt/geo files only?
  • Add Filter Options for only show (geo files, img files etc.)
  • Implement formats .sgi .poly .pix .cin
  • Add .jpg support and add thumbnail suffix / prefix to "._tn" note: not changed thumbnail prefix atm as its not necassary so far.
  • Remove or replace Open with gplay Button, replace with Open Button acting like Double Click or mplay, gplay actions as double click uses ginfo atm.
  • Implement Test Button to call mb SOP Tools (Place On Quads)
  • Sort Option (by real date)
  • Add Modifier Key option to Buttons such as Alt Click a button note Alt click on button will place at center for example
  • Add Support for .png .exr and other common texture files
  • Add Default test files to $MCITY/geo for .bgeo , .obj .fbx .txt .rat
  • Fix Error Reports when click on Cancel to return default $HIP Path.
  • Fix/Better option with hsize QSize after first load of interface..
  • Fix when Click on Button Open and cancel the operation to report default path back.
  • Implement iconvert right click menu option for .rat and .pic files etc.
  • Fix hintSize() QScale
  • implement options for Icon size, view as list/thumbnails as radio buttons?
  • Use hou.alignTobestPos (or similar) so pasted nodes dont overlap each other. (also needs modification in externaldragdrop.py)
  • Add option to use iconvert without converting the gamma to 1
  • Detect Shift, Alt, Ctrl Signals on double click or buttons. note: only works good on buttons as we use shift and ctrl to select multiple files. Therefor we only use the Alt Key modifier.
  • Clean up Code and define extensions as self globals in class() (ext = [".bgeo", ".obj", ".fbx"])
  • Clean up Code first init to use refresh() function instead of loop in generateInterface()
  • Look at Options for Performance Optimization for Thumbnails (new function genAllThumbs() with generate_thumbnail_new.py)
  • Add support for bgeo.gz and other gz compressed files.

General microcity:

  • SOP Tools: Add Category All -> for storing all tools in one

Current Issues:

  • Thumbnails for Images that have a alpha channel will fail.
  • Generally thumbnails with alpha are not supported.
  • Thumbnail generation with PIL Image should be turned multithreaded otherwise its too slow.

Notes:

  • Drag and Drop Texture in viewport will add the texture to the current selected node! In future we would like to implement that it automatically selects the node of the object we are hovering over in the viewport. (note: not able to implement this without setSelection() otherwise dont know how to get the current viewport position. setSelection() needs another click in the viewport, therefor this feature is not implemented. Hopefully Houdini17 will have some better functionality for this.)