├── python2.7libs ├── pythonrc.py ├── batch_rscmdline.py ├── batch_gconvert.py ├── setupProject.py ├── batchTools.py └── kdbrautils.py ├── otls ├── vc.create_links.1.0.hda ├── kdbra.kdbra_cluster.1.0.hda ├── kdbra.kdbra_fg_plate.1.0.hda ├── kdbra.kdbra_N_to_orient.1.0.hda ├── kdbra.kdbra_RBD_source.1.0.hda ├── kdbra.kdbra_cache_crowd.1.0.hda ├── kdbra.kdbra_dailieser.1.0.hda ├── kdbra.kdbra_dailieser.2.0.otllc ├── kdbra.kdbra_hf_from_geo.1.0.hda ├── kdbra.kdbra_polyfolding.1.0.hda ├── kdbra.kdbra_polyfolding.1.1.hda ├── kdbra.kdbra_quad_sphere.1.0.hda ├── kdbra.kdbra_rand_orient.1.0.hda ├── kdbra.kdbra_attrib_bounds.1.0.hda ├── kdbra.kdbra_crowd_system.1.0.hda ├── kdbra.kdbra_crowd_system.1.1.hda ├── kdbra.kdbra_crowd_system.1.2.hda ├── kdbra.kdbra_crowd_system.1.3.hda ├── kdbra.kdbra_export_camera.1.0.hda ├── kdbra.kdbra_focus_puller.1.0.hda ├── kdbra.kdbra_focus_puller.1.1.hda ├── kdbra.kdbra_geo_to_lines.1.0.hda ├── kdbra.kdbra_geo_to_rects.1.0.hda ├── kdbra.kdbra_noise_falloff.1.0.hda ├── kdbra.kdbra_rig_copy_rot.1.0.hda ├── kdbra.kdbra_rig_copy_rot.1.1.hda ├── kdbra.kdbra_spiral_basic.1.0.hda ├── kdbra.kdbra_uv_triplanar.0.1.hda ├── kdbra.kdbra_animation_bounds.1.0.hda ├── kdbra.kdbra_attrib_falloff.1.0.hda ├── kdbra.kdbra_bbox_falloff.1.0.otllc ├── kdbra.kdbra_blast_inside_geo.1.0.hda ├── kdbra.kdbra_camera_frustrum.1.0.hda ├── kdbra.kdbra_crowd_agent_load.1.0.hda ├── kdbra.kdbra_crowd_clip_loop.1.0.hda ├── kdbra.kdbra_crowd_clip_loop.1.1.hda ├── kdbra.kdbra_crowd_clip_loop.1.2.hda ├── kdbra.kdbra_generate_rocks.1.0.hda ├── kdbra.kdbra_hf_mask_invert.1.0.hda ├── kdbra.kdbra_magnetic_field.1.0.hda ├── kdbra.kdbra_polyline_scatter.1.0.hda ├── kdbra.kdbra_random_falloff.1.0.hda ├── kdbra.kdbra_rbd_distribute.1.0.hda ├── kdbra.kdbra_rbd_pin_to_world.1.0.hda ├── kdbra.kdbra_spiral_from_poly.1.0.hda ├── kdbra.kdbra_spread_falloff.1.0.hda ├── kdbra.kdbra_voronoi_falloff.1.0.hda ├── kdbra.kdbra_add_instance_point.1.0.hda ├── kdbra.kdbra_agent_spreadsheet.1.0.hda ├── kdbra.kdbra_cam_fov_visualize.1.0.hda ├── kdbra.kdbra_setup_rs_instances.1.0.hda ├── kdbra.kdbra_stabilized_camera.1.0.hda ├── kdbra.kdbra_camera_frustrum_cut.1.0.hda ├── kdbra.kdbra_crowd_agent_fix_clip.1.0.hda ├── kdbra.kdbra_crowd_formation_march.1.0.hda ├── kdbra.kdbra_crowd_formation_march.1.2.hda ├── kdbra.kdbra_crowd_formation_march.1.3.hda ├── kdbra.kdbra_crowd_formation_march.1.4.hda ├── kdbra.kdbra_crowd_formation_march.1.5.hda ├── kdbra.kdbra_flip_suction_source.1.0.hda ├── kdbra.kdbra_remove_by_attribute.1.0.hda ├── kdbra.kdbra_rig_attach_to_joints.1.0.hda ├── kdbra.kdbra_convex_hulls_from_pieces.1.0.hda └── kdbra.kdbra_rbd_constraints_from_lines.1.0.hda ├── kdbra.json ├── toolbar ├── sobor.shelf ├── export_nodes.shelf ├── clear_rig_pose_translates.shelf ├── export_selected_nodes.shelf ├── kdbra.shelf ├── fix_crowd_cache.shelf ├── find_replace.shelf ├── create_merges.shelf ├── kdbr_import_json_camera.shelf ├── open_create.shelf ├── import_3de_2d_pts_as_nulls.shelf └── crowd_setup.shelf ├── readme.md ├── LICENSE ├── .gitignore └── desktop └── wide_sc.desk /python2.7libs/pythonrc.py: -------------------------------------------------------------------------------- 1 | import hou 2 | 3 | -------------------------------------------------------------------------------- /otls/vc.create_links.1.0.hda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdbra/kdbra-houdini-tools/HEAD/otls/vc.create_links.1.0.hda -------------------------------------------------------------------------------- /otls/kdbra.kdbra_cluster.1.0.hda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdbra/kdbra-houdini-tools/HEAD/otls/kdbra.kdbra_cluster.1.0.hda -------------------------------------------------------------------------------- /otls/kdbra.kdbra_fg_plate.1.0.hda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdbra/kdbra-houdini-tools/HEAD/otls/kdbra.kdbra_fg_plate.1.0.hda -------------------------------------------------------------------------------- /otls/kdbra.kdbra_N_to_orient.1.0.hda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdbra/kdbra-houdini-tools/HEAD/otls/kdbra.kdbra_N_to_orient.1.0.hda -------------------------------------------------------------------------------- /otls/kdbra.kdbra_RBD_source.1.0.hda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdbra/kdbra-houdini-tools/HEAD/otls/kdbra.kdbra_RBD_source.1.0.hda -------------------------------------------------------------------------------- /otls/kdbra.kdbra_cache_crowd.1.0.hda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdbra/kdbra-houdini-tools/HEAD/otls/kdbra.kdbra_cache_crowd.1.0.hda -------------------------------------------------------------------------------- /otls/kdbra.kdbra_dailieser.1.0.hda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdbra/kdbra-houdini-tools/HEAD/otls/kdbra.kdbra_dailieser.1.0.hda -------------------------------------------------------------------------------- /otls/kdbra.kdbra_dailieser.2.0.otllc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdbra/kdbra-houdini-tools/HEAD/otls/kdbra.kdbra_dailieser.2.0.otllc -------------------------------------------------------------------------------- /otls/kdbra.kdbra_hf_from_geo.1.0.hda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdbra/kdbra-houdini-tools/HEAD/otls/kdbra.kdbra_hf_from_geo.1.0.hda -------------------------------------------------------------------------------- /otls/kdbra.kdbra_polyfolding.1.0.hda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdbra/kdbra-houdini-tools/HEAD/otls/kdbra.kdbra_polyfolding.1.0.hda -------------------------------------------------------------------------------- /otls/kdbra.kdbra_polyfolding.1.1.hda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdbra/kdbra-houdini-tools/HEAD/otls/kdbra.kdbra_polyfolding.1.1.hda -------------------------------------------------------------------------------- /otls/kdbra.kdbra_quad_sphere.1.0.hda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdbra/kdbra-houdini-tools/HEAD/otls/kdbra.kdbra_quad_sphere.1.0.hda -------------------------------------------------------------------------------- /otls/kdbra.kdbra_rand_orient.1.0.hda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdbra/kdbra-houdini-tools/HEAD/otls/kdbra.kdbra_rand_orient.1.0.hda -------------------------------------------------------------------------------- /otls/kdbra.kdbra_attrib_bounds.1.0.hda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdbra/kdbra-houdini-tools/HEAD/otls/kdbra.kdbra_attrib_bounds.1.0.hda -------------------------------------------------------------------------------- /otls/kdbra.kdbra_crowd_system.1.0.hda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdbra/kdbra-houdini-tools/HEAD/otls/kdbra.kdbra_crowd_system.1.0.hda -------------------------------------------------------------------------------- /otls/kdbra.kdbra_crowd_system.1.1.hda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdbra/kdbra-houdini-tools/HEAD/otls/kdbra.kdbra_crowd_system.1.1.hda -------------------------------------------------------------------------------- /otls/kdbra.kdbra_crowd_system.1.2.hda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdbra/kdbra-houdini-tools/HEAD/otls/kdbra.kdbra_crowd_system.1.2.hda -------------------------------------------------------------------------------- /otls/kdbra.kdbra_crowd_system.1.3.hda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdbra/kdbra-houdini-tools/HEAD/otls/kdbra.kdbra_crowd_system.1.3.hda -------------------------------------------------------------------------------- /otls/kdbra.kdbra_export_camera.1.0.hda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdbra/kdbra-houdini-tools/HEAD/otls/kdbra.kdbra_export_camera.1.0.hda -------------------------------------------------------------------------------- /otls/kdbra.kdbra_focus_puller.1.0.hda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdbra/kdbra-houdini-tools/HEAD/otls/kdbra.kdbra_focus_puller.1.0.hda -------------------------------------------------------------------------------- /otls/kdbra.kdbra_focus_puller.1.1.hda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdbra/kdbra-houdini-tools/HEAD/otls/kdbra.kdbra_focus_puller.1.1.hda -------------------------------------------------------------------------------- /otls/kdbra.kdbra_geo_to_lines.1.0.hda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdbra/kdbra-houdini-tools/HEAD/otls/kdbra.kdbra_geo_to_lines.1.0.hda -------------------------------------------------------------------------------- /otls/kdbra.kdbra_geo_to_rects.1.0.hda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdbra/kdbra-houdini-tools/HEAD/otls/kdbra.kdbra_geo_to_rects.1.0.hda -------------------------------------------------------------------------------- /otls/kdbra.kdbra_noise_falloff.1.0.hda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdbra/kdbra-houdini-tools/HEAD/otls/kdbra.kdbra_noise_falloff.1.0.hda -------------------------------------------------------------------------------- /otls/kdbra.kdbra_rig_copy_rot.1.0.hda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdbra/kdbra-houdini-tools/HEAD/otls/kdbra.kdbra_rig_copy_rot.1.0.hda -------------------------------------------------------------------------------- /otls/kdbra.kdbra_rig_copy_rot.1.1.hda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdbra/kdbra-houdini-tools/HEAD/otls/kdbra.kdbra_rig_copy_rot.1.1.hda -------------------------------------------------------------------------------- /otls/kdbra.kdbra_spiral_basic.1.0.hda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdbra/kdbra-houdini-tools/HEAD/otls/kdbra.kdbra_spiral_basic.1.0.hda -------------------------------------------------------------------------------- /otls/kdbra.kdbra_uv_triplanar.0.1.hda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdbra/kdbra-houdini-tools/HEAD/otls/kdbra.kdbra_uv_triplanar.0.1.hda -------------------------------------------------------------------------------- /otls/kdbra.kdbra_animation_bounds.1.0.hda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdbra/kdbra-houdini-tools/HEAD/otls/kdbra.kdbra_animation_bounds.1.0.hda -------------------------------------------------------------------------------- /otls/kdbra.kdbra_attrib_falloff.1.0.hda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdbra/kdbra-houdini-tools/HEAD/otls/kdbra.kdbra_attrib_falloff.1.0.hda -------------------------------------------------------------------------------- /otls/kdbra.kdbra_bbox_falloff.1.0.otllc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdbra/kdbra-houdini-tools/HEAD/otls/kdbra.kdbra_bbox_falloff.1.0.otllc -------------------------------------------------------------------------------- /otls/kdbra.kdbra_blast_inside_geo.1.0.hda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdbra/kdbra-houdini-tools/HEAD/otls/kdbra.kdbra_blast_inside_geo.1.0.hda -------------------------------------------------------------------------------- /otls/kdbra.kdbra_camera_frustrum.1.0.hda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdbra/kdbra-houdini-tools/HEAD/otls/kdbra.kdbra_camera_frustrum.1.0.hda -------------------------------------------------------------------------------- /otls/kdbra.kdbra_crowd_agent_load.1.0.hda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdbra/kdbra-houdini-tools/HEAD/otls/kdbra.kdbra_crowd_agent_load.1.0.hda -------------------------------------------------------------------------------- /otls/kdbra.kdbra_crowd_clip_loop.1.0.hda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdbra/kdbra-houdini-tools/HEAD/otls/kdbra.kdbra_crowd_clip_loop.1.0.hda -------------------------------------------------------------------------------- /otls/kdbra.kdbra_crowd_clip_loop.1.1.hda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdbra/kdbra-houdini-tools/HEAD/otls/kdbra.kdbra_crowd_clip_loop.1.1.hda -------------------------------------------------------------------------------- /otls/kdbra.kdbra_crowd_clip_loop.1.2.hda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdbra/kdbra-houdini-tools/HEAD/otls/kdbra.kdbra_crowd_clip_loop.1.2.hda -------------------------------------------------------------------------------- /otls/kdbra.kdbra_generate_rocks.1.0.hda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdbra/kdbra-houdini-tools/HEAD/otls/kdbra.kdbra_generate_rocks.1.0.hda -------------------------------------------------------------------------------- /otls/kdbra.kdbra_hf_mask_invert.1.0.hda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdbra/kdbra-houdini-tools/HEAD/otls/kdbra.kdbra_hf_mask_invert.1.0.hda -------------------------------------------------------------------------------- /otls/kdbra.kdbra_magnetic_field.1.0.hda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdbra/kdbra-houdini-tools/HEAD/otls/kdbra.kdbra_magnetic_field.1.0.hda -------------------------------------------------------------------------------- /otls/kdbra.kdbra_polyline_scatter.1.0.hda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdbra/kdbra-houdini-tools/HEAD/otls/kdbra.kdbra_polyline_scatter.1.0.hda -------------------------------------------------------------------------------- /otls/kdbra.kdbra_random_falloff.1.0.hda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdbra/kdbra-houdini-tools/HEAD/otls/kdbra.kdbra_random_falloff.1.0.hda -------------------------------------------------------------------------------- /otls/kdbra.kdbra_rbd_distribute.1.0.hda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdbra/kdbra-houdini-tools/HEAD/otls/kdbra.kdbra_rbd_distribute.1.0.hda -------------------------------------------------------------------------------- /otls/kdbra.kdbra_rbd_pin_to_world.1.0.hda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdbra/kdbra-houdini-tools/HEAD/otls/kdbra.kdbra_rbd_pin_to_world.1.0.hda -------------------------------------------------------------------------------- /otls/kdbra.kdbra_spiral_from_poly.1.0.hda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdbra/kdbra-houdini-tools/HEAD/otls/kdbra.kdbra_spiral_from_poly.1.0.hda -------------------------------------------------------------------------------- /otls/kdbra.kdbra_spread_falloff.1.0.hda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdbra/kdbra-houdini-tools/HEAD/otls/kdbra.kdbra_spread_falloff.1.0.hda -------------------------------------------------------------------------------- /otls/kdbra.kdbra_voronoi_falloff.1.0.hda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdbra/kdbra-houdini-tools/HEAD/otls/kdbra.kdbra_voronoi_falloff.1.0.hda -------------------------------------------------------------------------------- /otls/kdbra.kdbra_add_instance_point.1.0.hda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdbra/kdbra-houdini-tools/HEAD/otls/kdbra.kdbra_add_instance_point.1.0.hda -------------------------------------------------------------------------------- /otls/kdbra.kdbra_agent_spreadsheet.1.0.hda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdbra/kdbra-houdini-tools/HEAD/otls/kdbra.kdbra_agent_spreadsheet.1.0.hda -------------------------------------------------------------------------------- /otls/kdbra.kdbra_cam_fov_visualize.1.0.hda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdbra/kdbra-houdini-tools/HEAD/otls/kdbra.kdbra_cam_fov_visualize.1.0.hda -------------------------------------------------------------------------------- /otls/kdbra.kdbra_setup_rs_instances.1.0.hda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdbra/kdbra-houdini-tools/HEAD/otls/kdbra.kdbra_setup_rs_instances.1.0.hda -------------------------------------------------------------------------------- /otls/kdbra.kdbra_stabilized_camera.1.0.hda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdbra/kdbra-houdini-tools/HEAD/otls/kdbra.kdbra_stabilized_camera.1.0.hda -------------------------------------------------------------------------------- /otls/kdbra.kdbra_camera_frustrum_cut.1.0.hda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdbra/kdbra-houdini-tools/HEAD/otls/kdbra.kdbra_camera_frustrum_cut.1.0.hda -------------------------------------------------------------------------------- /otls/kdbra.kdbra_crowd_agent_fix_clip.1.0.hda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdbra/kdbra-houdini-tools/HEAD/otls/kdbra.kdbra_crowd_agent_fix_clip.1.0.hda -------------------------------------------------------------------------------- /otls/kdbra.kdbra_crowd_formation_march.1.0.hda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdbra/kdbra-houdini-tools/HEAD/otls/kdbra.kdbra_crowd_formation_march.1.0.hda -------------------------------------------------------------------------------- /otls/kdbra.kdbra_crowd_formation_march.1.2.hda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdbra/kdbra-houdini-tools/HEAD/otls/kdbra.kdbra_crowd_formation_march.1.2.hda -------------------------------------------------------------------------------- /otls/kdbra.kdbra_crowd_formation_march.1.3.hda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdbra/kdbra-houdini-tools/HEAD/otls/kdbra.kdbra_crowd_formation_march.1.3.hda -------------------------------------------------------------------------------- /otls/kdbra.kdbra_crowd_formation_march.1.4.hda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdbra/kdbra-houdini-tools/HEAD/otls/kdbra.kdbra_crowd_formation_march.1.4.hda -------------------------------------------------------------------------------- /otls/kdbra.kdbra_crowd_formation_march.1.5.hda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdbra/kdbra-houdini-tools/HEAD/otls/kdbra.kdbra_crowd_formation_march.1.5.hda -------------------------------------------------------------------------------- /otls/kdbra.kdbra_flip_suction_source.1.0.hda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdbra/kdbra-houdini-tools/HEAD/otls/kdbra.kdbra_flip_suction_source.1.0.hda -------------------------------------------------------------------------------- /otls/kdbra.kdbra_remove_by_attribute.1.0.hda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdbra/kdbra-houdini-tools/HEAD/otls/kdbra.kdbra_remove_by_attribute.1.0.hda -------------------------------------------------------------------------------- /otls/kdbra.kdbra_rig_attach_to_joints.1.0.hda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdbra/kdbra-houdini-tools/HEAD/otls/kdbra.kdbra_rig_attach_to_joints.1.0.hda -------------------------------------------------------------------------------- /otls/kdbra.kdbra_convex_hulls_from_pieces.1.0.hda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdbra/kdbra-houdini-tools/HEAD/otls/kdbra.kdbra_convex_hulls_from_pieces.1.0.hda -------------------------------------------------------------------------------- /otls/kdbra.kdbra_rbd_constraints_from_lines.1.0.hda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kdbra/kdbra-houdini-tools/HEAD/otls/kdbra.kdbra_rbd_constraints_from_lines.1.0.hda -------------------------------------------------------------------------------- /kdbra.json: -------------------------------------------------------------------------------- 1 | { 2 | "env" : 3 | [ 4 | { 5 | "HOUDINI_PATH" : 6 | { 7 | "value": "~/kdbra-houdini-tools/", 8 | "method": "prepend" 9 | } 10 | } 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /toolbar/sobor.shelf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /python2.7libs/batch_rscmdline.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | import argparse, subprocess, glob, os.path 3 | 4 | parser = argparse.ArgumentParser(description='Batch render .rs') 5 | parser.add_argument('-i', '--input', type=str, help='input pattern', default="./*.rs") 6 | 7 | args = parser.parse_args() 8 | items = glob.glob(args.input) 9 | items.sort() 10 | for item in items: 11 | print(item) 12 | for item in items: 13 | subprocess.call(["/usr/redshift/bin/redshiftCmdLine", item]) 14 | print("{} rendered".format(item)) -------------------------------------------------------------------------------- /toolbar/export_nodes.shelf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 9 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /toolbar/clear_rig_pose_translates.shelf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 9 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /python2.7libs/batch_gconvert.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | import argparse, subprocess, glob, os.path 3 | 4 | parser = argparse.ArgumentParser(description='Batch convert Houdini geometry') 5 | parser.add_argument('input_dir', type=str, help='directory') 6 | parser.add_argument('-i', '--input_format', type=str, help='input format', default="geo") 7 | parser.add_argument('-o', '--output_format', type=str, help='output format', default="bgeo.sc") 8 | 9 | args = parser.parse_args() 10 | items = glob.glob(os.path.join(args.input_dir, "*." + args.input_format)) 11 | 12 | for item in items: 13 | path, filename = os.path.split(item) 14 | name, ext = os.path.splitext(filename) 15 | new_path = os.path.join(path, '%s.%s' % (name, args.output_format)) 16 | subprocess.call(["gconvert", item, new_path]) 17 | print "{} converted to {}".format(item, args.output_format) -------------------------------------------------------------------------------- /toolbar/export_selected_nodes.shelf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 9 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # KDBRA Tools 2 | 3 | Kdbra tools are intended to speed up and facilitate VFX artist's routines. 4 | Toolset extends some Houdini aspects with several new sop and obj nodes: 5 | - Mops (almost native) 6 | - RBD 7 | - Crowds 8 | - HightFields 9 | - Camera workflow 10 | - Common geometry operators 11 | 12 | Also provides shelftools for: 13 | - Import 3de4 2d point trackers 14 | 15 | ## Reuqirements 16 | 17 | Houdini 18.5.408 18 | 19 | ## Installation 20 | 21 | 1. clone repository `git clone https://github.com/kdbra/kdbra-houdini-tools.git` 22 | 2. put `kdbra.json` into `~/houdini{version}/packages` or `C:\users\user\houdini{version}\packages` depening on your system 23 | 3. edit `kdbra.json`, replace `~` in line `"~/kdbra-houdini-tools/"` with the actual path to repo location 24 | 25 | ## Docs 26 | 27 | Once will be here 28 | 29 | x -------------------------------------------------------------------------------- /toolbar/kdbra.shelf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /toolbar/fix_crowd_cache.shelf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 9 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /python2.7libs/setupProject.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | import os, argparse 3 | 4 | parser = argparse.ArgumentParser(description='Setup shots directories') 5 | parser.add_argument('-s', "--src", type=str, help='src directory', default="./src") 6 | parser.add_argument('-n', '--scene_name', type=str, help='scene name', default="") 7 | args = parser.parse_args() 8 | 9 | pwd = os.getcwd() 10 | 11 | # get shot list 12 | shotslist = os.listdir(os.path.abspath(args.src)) 13 | 14 | for shotname in shotslist: 15 | paths = [] 16 | # Note - you can make nested paths here 17 | dirs = ['dailies', 18 | 'hip', 19 | 'trk', 20 | 'trk/proxy', 21 | 'one/two/three', 22 | 'nk'] 23 | for i in dirs: 24 | paths.append(os.path.join(pwd, 'shots', args.scene_name, shotname, i)) 25 | 26 | for item in paths: 27 | if not os.path.exists(item): 28 | os.makedirs(item) -------------------------------------------------------------------------------- /python2.7libs/batchTools.py: -------------------------------------------------------------------------------- 1 | import glob, hou, datetime 2 | import os.path 3 | from os import environ 4 | 5 | def fixCrowdCache(input_dir, search_path,new_path): 6 | list_geos = glob.glob(os.path.join(input_dir, "*.geo")) 7 | for item in list_geos: 8 | tmp = "" 9 | with open(item, "r") as file: 10 | for line in file: 11 | tmp += line.replace(search_path,new_path) 12 | file = open(item, "w") 13 | file.write(tmp) 14 | file.close() 15 | print("{} fixed".format(item)) 16 | 17 | 18 | def checkRenderTime(path="HIP", pattern="*"): 19 | if not os.path.exists(path): 20 | path = environ[path] 21 | path_to_folder = os.path.join(path, pattern) 22 | 23 | files = glob.glob(path_to_folder) 24 | mtimes = [] 25 | for file in files: 26 | mt = os.path.getmtime(file) 27 | mtimes.append(mt) 28 | mtimes.sort() 29 | delta = mtimes[-1] - mtimes[0] 30 | return str(datetime.timedelta(seconds=delta)) -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 KDBRA 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /toolbar/find_replace.shelf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 9 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /toolbar/create_merges.shelf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 9 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /toolbar/kdbr_import_json_camera.shelf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 9 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /python2.7libs/kdbrautils.py: -------------------------------------------------------------------------------- 1 | import hou, re 2 | 3 | 4 | 5 | def menuItems(cls="point"): 6 | geo = hou.pwd().input(0).geometry() 7 | if cls == "point": 8 | attrs = geo.pointAttribs() 9 | elif cls == "prim": 10 | attrs = geo.primAttribs() 11 | elif cls == "vtx": 12 | attrs = geo.vertexAttribs() 13 | 14 | tmp = [] 15 | for a in attrs: 16 | tmp.append(a.name()) 17 | tmp.append(a.name()) 18 | return tmp 19 | 20 | 21 | 22 | def menuFromPointNames(inp=0,grp_mode=True, attrib_name="name", re_mode=False): 23 | geo = hou.pwd().input(inp).geometry() 24 | names = geo.pointStringAttribValues(attrib_name) 25 | tmp = [] 26 | 27 | for a in names: 28 | c = True 29 | if grp_mode: 30 | a = "@name="+a 31 | if re_mode: 32 | pattern = "[a-zA-Z_]*" 33 | s = re.search(pattern, a) 34 | a = s.group(0) 35 | c = not a in tmp 36 | 37 | if c: 38 | tmp.append(str(a)) 39 | tmp.append(str(a)) 40 | tmp.sort() 41 | return tmp 42 | 43 | def menuFromAgentClips(inp="."): 44 | geo = hou.node(inp).geometry() 45 | clips = geo.prim(0).intrinsicValue("agentclipcatalog") 46 | tmp = [] 47 | 48 | for a in clips: 49 | c = True 50 | 51 | pattern = "[a-zA-Z_]*" 52 | s = re.search(pattern, a) 53 | a = s.group(0) + "*" 54 | c = not a in tmp 55 | if c: 56 | tmp.append(a) 57 | tmp.append(a) 58 | tmp.sort() 59 | return tmp -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | build/ 12 | develop-eggs/ 13 | dist/ 14 | downloads/ 15 | eggs/ 16 | .eggs/ 17 | lib/ 18 | lib64/ 19 | parts/ 20 | sdist/ 21 | var/ 22 | wheels/ 23 | pip-wheel-metadata/ 24 | share/python-wheels/ 25 | *.egg-info/ 26 | .installed.cfg 27 | *.egg 28 | MANIFEST 29 | 30 | # PyInstaller 31 | # Usually these files are written by a python script from a template 32 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 33 | *.manifest 34 | *.spec 35 | 36 | # Installer logs 37 | pip-log.txt 38 | pip-delete-this-directory.txt 39 | 40 | # Unit test / coverage reports 41 | htmlcov/ 42 | .tox/ 43 | .nox/ 44 | .coverage 45 | .coverage.* 46 | .cache 47 | nosetests.xml 48 | coverage.xml 49 | *.cover 50 | *.py,cover 51 | .hypothesis/ 52 | .pytest_cache/ 53 | 54 | # Translations 55 | *.mo 56 | *.pot 57 | 58 | # Django stuff: 59 | *.log 60 | local_settings.py 61 | db.sqlite3 62 | db.sqlite3-journal 63 | 64 | # Flask stuff: 65 | instance/ 66 | .webassets-cache 67 | 68 | # Scrapy stuff: 69 | .scrapy 70 | 71 | # Sphinx documentation 72 | docs/_build/ 73 | 74 | # PyBuilder 75 | target/ 76 | 77 | # Jupyter Notebook 78 | .ipynb_checkpoints 79 | 80 | # IPython 81 | profile_default/ 82 | ipython_config.py 83 | 84 | # pyenv 85 | .python-version 86 | 87 | # pipenv 88 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. 89 | # However, in case of collaboration, if having platform-specific dependencies or dependencies 90 | # having no cross-platform support, pipenv may install dependencies that don't work, or not 91 | # install all needed dependencies. 92 | #Pipfile.lock 93 | 94 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow 95 | __pypackages__/ 96 | 97 | # Celery stuff 98 | celerybeat-schedule 99 | celerybeat.pid 100 | 101 | # SageMath parsed files 102 | *.sage.py 103 | 104 | # Environments 105 | .env 106 | .venv 107 | env/ 108 | venv/ 109 | ENV/ 110 | env.bak/ 111 | venv.bak/ 112 | 113 | # Spyder project settings 114 | .spyderproject 115 | .spyproject 116 | 117 | # Rope project settings 118 | .ropeproject 119 | 120 | # mkdocs documentation 121 | /site 122 | 123 | # mypy 124 | .mypy_cache/ 125 | .dmypy.json 126 | dmypy.json 127 | 128 | # Pyre type checker 129 | .pyre/ 130 | 131 | backup/ -------------------------------------------------------------------------------- /toolbar/open_create.shelf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 9 | 161 | 162 | 163 | -------------------------------------------------------------------------------- /toolbar/import_3de_2d_pts_as_nulls.shelf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 9 | 14 | 158 | 159 | 160 | -------------------------------------------------------------------------------- /desktop/wide_sc.desk: -------------------------------------------------------------------------------- 1 | fullscreen -1 2 | playbarshown 1 3 | playbar -1 4 | shelf -1 5 | menubar -1 6 | statusbar -1 7 | radial menu set main 8 | root { 9 | split 0.485156 H { 10 | split 0.42394 V R { 11 | split 0.515193 H { 12 | tabs 0 1 { 13 | pane pane1 -a 0 -l 10 -H /obj/ -T OBJ -m neteditor 14 | pane panetab9 -a 0 -l 0 -H /obj/ -T OBJ -m python 15 | pane panetab10 -a 0 -l 0 -H /obj/ -T OBJ -m textport 16 | } 17 | split 0.5 H R { 18 | tabs 0 1 { 19 | pane panetab11 -a 0 -l 10 -H /obj/ -T OBJ -m parmeditor 20 | pane panetab5 -a 0 -l 10 -H /obj/ -T OBJ -m sceneview 21 | pane panetab14 -a 0 -l 10 -H /obj/ -T OBJ -m details 22 | } 23 | tabs 0 1 { 24 | pane panetab12 -a 0 -l 10 -H /obj/ -T OBJ -m parmeditor 25 | } 26 | } 27 | } 28 | tabs 0 1 { 29 | pane panetab2 -a 0 -l 10 -H /obj/ -T OBJ -m details 30 | pane panetab8 -a 0 -l 10 -H /obj/ -T OBJ -m sceneview 31 | pane panetab6 -a 0 -l 0 -H /obj/ -T OBJ -m chaneditor 32 | pane panetab15 -a 0 -l 10 -H /ch/ -T CHOPNET -m channelview 33 | } 34 | } 35 | tabs 0 1 { 36 | pane panetab1 -a 0 -l 10 -H /obj/ -T OBJ -m sceneview 37 | pane panetab4 -a 0 -l 10 -H /img/ -T IMG -m imageview 38 | pane panetab13 -a 0 -l 10 -H /obj/ -T OBJ -m iprviewer 39 | pane panetab3 -a 0 -l 10 -H /obj/ -T OBJ -m details 40 | pane panetab7 -a 0 -l 10 -H /ch/ -T CHOPNET -m channelview 41 | pane panetab16 -a 1 -l 10 -H /obj/ -T OBJ -m pythonpanel 42 | pane panetab17 -a 1 -l 10 -H /obj/ -T OBJ -m pythonpanel 43 | pane panetab18 -a 1 -l 10 -H /obj/ -T OBJ -m pythonpanel 44 | } 45 | } 46 | } 47 | shelfdock -o 1 -l icon_and_text -G "0.50 0.50" add shelf_set_1 shelf_set_2 48 | networkeditor -p '{\n "showspareinputdep":"1",\n "showchilddep":"1",\n "showdep":"0",\n "showtaskgraphperf":"0",\n "taskgraphperfstatname":"Cook Time",\n "perfstatname":"Time",\n "showperfstats":"1",\n "grouplistsplit":"0.75",\n "showtree":"0",\n "showtypesidebar":"0",\n "taskgraphsortcriteria":"Automatic",\n "showparmdialogmax":"1",\n "treesplit":"0.25",\n "palettesize":"150 150",\n "typesidebarsplit":"0.25",\n "taskgraphcollapsemode":"Off",\n "workitemcolorattribute":"",\n "gridmode":"0",\n "overviewbounds":"0.000000 0.000000 195.683247 219.226388",\n "overviewmode":"2",\n "showgrouplist":"0",\n "palettemode":"0",\n "useworkitemcolorattribute":"1",\n "showtasksmenu":"1",\n "backgroundimageediting":"0",\n "backgroundimagebrightness":"1.0",\n "gridystep":"1.0",\n "palettecolors":"",\n "showmenu":"1",\n "gridxstep":"2.0",\n "showparmdialog":"0"\n}\n' pane1 49 | netcolumns -c display,xray,select,origin,capture,bone -n OBJ pane1 50 | netcolumns -c display,render,template,selectabletemplate,highlight,unload,bypass,lock -n SOP pane1 51 | netcolumns -c delscript,comment -n CHOPNET pane1 52 | netcolumns -c display,export,audio,bypass,lock -n CHOP pane1 53 | netcolumns -c startrender,bypass,lock -n ROP pane1 54 | netcolumns -c delscript,comment -n SHOP pane1 55 | netcolumns -c display,render,template,bypass -n COP2 pane1 56 | netcolumns -c delscript,comment -n IMG pane1 57 | netcolumns -c delscript,comment,input -n VOP pane1 58 | netcolumns -c delscript,comment -n VOPNET pane1 59 | netcolumns -c delscript,comment -n DOP pane1 60 | netcolumns -c delscript,comment -n TOP pane1 61 | netcolumns -c delscript,comment -n TOPNET pane1 62 | netcolumns -c display,bypass,delscript,comment,input -n LOP pane1 63 | netcolumns -c delscript,comment -n MGR pane1 64 | netcolumns -c delscript,comment -n DIR pane1 65 | parmeditor -T 0.25 -w 0 panetab11 66 | viewerstow -x open -b stow -l open -m hide -c hide -d open ${DESKNAME}.panetab5.world 67 | vieweroption -a 2 ${DESKNAME}.panetab5.world 68 | viewlayout -s 2 ${DESKNAME}.panetab5.world 69 | viewtype -t ortho_right ${DESKNAME}.panetab5.world.`vpname("${DESKNAME}.panetab5.world",4)` 70 | viewtype -t ortho_front ${DESKNAME}.panetab5.world.`vpname("${DESKNAME}.panetab5.world",3)` 71 | viewtype -t ortho_top ${DESKNAME}.panetab5.world.`vpname("${DESKNAME}.panetab5.world",1)` 72 | viewtype -t perspective ${DESKNAME}.panetab5.world.`vpname("${DESKNAME}.panetab5.world",2)` 73 | parmeditor -T 0.25 -w 0 panetab12 74 | viewerstow -x open -b stow -l stow -m hide -c hide -d open ${DESKNAME}.panetab8.world 75 | vieweroption -a 2 ${DESKNAME}.panetab8.world 76 | viewlayout -s 2 ${DESKNAME}.panetab8.world 77 | viewtype -t ortho_right ${DESKNAME}.panetab8.world.`vpname("${DESKNAME}.panetab8.world",4)` 78 | viewtype -t ortho_front ${DESKNAME}.panetab8.world.`vpname("${DESKNAME}.panetab8.world",3)` 79 | viewtype -t ortho_top ${DESKNAME}.panetab8.world.`vpname("${DESKNAME}.panetab8.world",1)` 80 | viewtype -t perspective ${DESKNAME}.panetab8.world.`vpname("${DESKNAME}.panetab8.world",2)` 81 | chopview -a 0 -c "" -k 1 -m 1 -b 1 -e 1 -f 1 -g 0 -H 0 -i 0 -j 1 -l 0 -n 1 -V 0 -y 0 -B 0 -s 0 -S 0.95613 -u 0 -v 0 -h -6.61922 42.139 -r -1.5 1.5 -R 0 -62.946 38.5292 panetab15 82 | viewerstow -x open -b stow -l open -m hide -c hide -d open ${DESKNAME}.panetab1.world 83 | vieweroption -a 1 ${DESKNAME}.panetab1.world 84 | viewlayout -s 2 ${DESKNAME}.panetab1.world 85 | viewtype -t ortho_right ${DESKNAME}.panetab1.world.`vpname("${DESKNAME}.panetab1.world",4)` 86 | viewtype -t ortho_front ${DESKNAME}.panetab1.world.`vpname("${DESKNAME}.panetab1.world",3)` 87 | viewtype -t perspective ${DESKNAME}.panetab1.world.`vpname("${DESKNAME}.panetab1.world",1)` 88 | viewtype -t perspective ${DESKNAME}.panetab1.world.`vpname("${DESKNAME}.panetab1.world",2)` 89 | iprview -t 0.1 -l 0 -e 1 -u 1 panetab13 90 | chopview -a 0 -c "" -k 1 -m 1 -b 1 -e 1 -f 0 -g 0 -H 1 -i 0 -j 1 -l 0 -n 1 -V 0 -y 0 -B 0 -s 0 -S 0.175325 -u 0 -v 0 -h -12.65 287.65 -r -1.5 1.5 -R 0 0.5 1.5 panetab7 91 | pythonpanel -s on -t off -n RedshiftRenderViewPane panetab16 92 | pythonpanel -s on -t off -n pdgservicemenu panetab17 93 | pythonpanel -s on -t off -n taskgraphtable panetab18 94 | -------------------------------------------------------------------------------- /toolbar/crowd_setup.shelf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 9 | 298 | 299 | 300 | --------------------------------------------------------------------------------