def save_shot(indie=True):
job = hou.getenv("JOB")
sequence_path = os.path.join(job, "sequences")
sequences = os.listdir(sequence_path)
selected_sequence = hou.ui.selectFromList(sequences, title="Select Sequence", message="Select a sequence")
if not selected_sequence:
return # User canceled
sequence = sequences[selected_sequence[0]]
sequence_dir = os.path.join(sequence_path, sequence)
shots = os.listdir(sequence_dir)
selected_shot = hou.ui.selectFromList(shots, title="Select Shot", message="Select a shot")
if not selected_shot:
return # User canceled
shot = shots[selected_shot[0]]
shot_dir = os.path.join(sequence_dir, shot)
setups = [
"layout",
"sim",
"light"
]
selected_setup = hou.ui.selectFromList(setups, title="Select Setup Type", message="Select a setup type")
if not selected_setup:
return # User canceled
setup = setups[selected_setup[0]]
save_path = os.path.join(shot_dir, "setups", setup)
# Create the directory if it doesn't exist
if not os.path.exists(save_path):
try:
os.makedirs(save_path)
except OSError as e:
hou.ui.displayMessage("Failed to create directory: {}".format(str(e)))
return
save_choice = hou.ui.displayMessage("Do you want to save to {}?".format(save_path), buttons=("Yes", "No"))
if save_choice != 0:
return
if indie:
hip_file = os.path.join(save_path, "{0}_{1}_v001.hiplc".format(shot, setup))
else:
hip_file = os.path.join(save_path, "{0}_{1}_v001.hip".format(shot, setup))
hou.putenv("SHOT", shot)
hou.putenv("TASK", setup)
hou.putenv("SHOTPATH", shot_dir)
hou.putenv("SEQUENCE", sequence)
try:
hou.hipFile.save(hip_file)
hou.ui.displayMessage("File saved successfully to: {}".format(hip_file))
except hou.OperationFailed as e:
hou.ui.displayMessage("Error saving file: {}".format(str(e)))
def open_shot(indie=True):
job = hou.getenv("JOB")
sequence_path = os.path.join(job, "sequences")
sequences = os.listdir(sequence_path)
selected_sequence = hou.ui.selectFromList(sequences, title="Select Sequence", message="Select a sequence")
if not selected_sequence:
return # User canceled
sequence = sequences[selected_sequence[0]]
sequence_dir = os.path.join(sequence_path, sequence)
shots = os.listdir(sequence_dir)
selected_shot = hou.ui.selectFromList(shots, title="Select Shot", message="Select a shot")
if not selected_shot:
return # User canceled
shot = shots[selected_shot[0]]
shot_dir = os.path.join(sequence_dir, shot)
setups_dir = os.path.join(shot_dir, "setups")
if not os.path.exists(setups_dir):
hou.ui.displayMessage("No setups directory found for this shot.")
return
setups = os.listdir(setups_dir)
all_setups = []
for setup in setups:
setup_dir = os.path.join(setups_dir, setup)
if os.path.isdir(setup_dir):
for file in os.listdir(setup_dir):
if file.endswith(".hip") or file.endswith(".hiplc"):
all_setups.append("{0}/{1}".format(setup, file))
if not all_setups:
hou.ui.displayMessage("No Houdini files found for this shot.")
return
selected_setup = hou.ui.selectFromList(all_setups, title="Select Setup", message="Select a setup")
if not selected_setup:
return
setup_path = all_setups[selected_setup[0]]
setup_parts = setup_path.split("/")
setup = setup_parts[0]
file = setup_parts[1]
open_path = os.path.join(shot_dir, "setups", setup_path)
print("Opening {0}".format(open_path))
hou.putenv("SHOT", shot)
hou.putenv("TASK", setup)
hou.putenv("SHOTPATH", shot_dir)
hou.putenv("SEQUENCE", sequence)
try:
hou.hipFile.load(open_path)
except hou.OperationFailed as e:
hou.ui.displayMessage("Error opening file: {}".format(str(e)))
def version_up(indie=True):
job = hou.getenv("JOB")
hipfile = hou.hipFile.path()
hip_version = hipfile.split("v")[-1]
hip_version = hip_version.split(".")[0]
hip_version = int(hip_version)
hip = hou.getenv("HIP")
existing_versions = []
for file in os.listdir(hip):
if indie:
if file.endswith(".hiplc") or file.endswith(".hip"):
version = file.split("v")[-1]
version = version.split(".")[0]
version = int(version)
existing_versions.append(version)
version = max(existing_versions)
new_version = version + 1
new_version = "v{:03d}".format(new_version)
new_hip = hipfile.replace("v{:03d}".format(hip_version), new_version)
hou.hipFile.save(new_hip)
hou.ui.displayMessage("Version {0} saved to {1}".format(new_version, new_hip))