Skip to content

Instantly share code, notes, and snippets.

View BigRoy's full-sized avatar

Roy Nieterau BigRoy

View GitHub Profile
@BigRoy
BigRoy / run_with_oiiotool_2.3.10.txt
Last active April 23, 2025 10:57
Debug speed issue with oiiotool.exe with multichannel EXRs
==================
>> oiiotool --buildinfo
Invalid option "--buildinfo"
oiiotool -- simple image processing operations
OpenImageIO 2.3.10 http://www.openimageio.org
Usage: oiiotool [filename|command]...
Important usage tips:
* The oiiotool command line is processed in order, LEFT to RIGHT.
@BigRoy
BigRoy / resolve_update_timeline_version_name.py
Created April 17, 2025 13:55
Resolve script to match version in name of selected timeline items in media pool to current resolve project version number
"""Set selected Resolvetimeline name versions to project name version."""
from typing import Optional
import re
import DaVinciResolveScript as bmd
VERSION_REGEX = re.compile(r'_v(\d+)')
resolve = bmd.scriptapp('Resolve')
from typing import Tuple, Union, Optional
def get_tool_resolution(
tool,
output: Union[str, int, None] = None,
frame: Optional[int] = None,
allow_fast_dod_query=True
) -> Tuple[int, int]:
"""Return tool output resolution.
@BigRoy
BigRoy / ayon_check_loaded_version_input_versions_in_scene.py
Last active March 14, 2025 17:20
In AYON pipeline print a message if e.g. loaded look product was generated using a different model version than you have in your current scene.
"""
Example on using AYON's generative links to query whether the loaded products
in current workfile happen to have input products that some of the products
were also generated with and see if those versions match.
For example: You have a loaded model v002 and loaded look v001, however
that look version was created using model v001. You may want to identify that.
This script will print out a message for each product that has a version in the
inputs where another version of that input product is loaded in the scene.
@BigRoy
BigRoy / ayon_loader_plugin_host_specific.py
Created February 6, 2025 12:20
Make AYON loader plug-in host specific using `LoaderPlugin.is_compatible_loader` classmethod
from ayon_core.pipeline import load, get_current_host_name
class TestHostSpecificLoad(load.LoaderPlugin):
hosts = ["bla"]
product_types = {"*"}
representations = {"*"}
label = "Test Host Specific Load"
@BigRoy
BigRoy / maya_list_plugin_paths.py
Last active February 6, 2025 13:50
Maya list all available plug-ins (including unloaded ones) using Python
from typing import Tuple, List
from pathlib import Path
import os
import platform
# Get plugin extensions maya can load per platform
PLUGIN_EXTENSIONS_BY_PLATFORM = {
"windows": {".mll", ".nll.dll"},
"mac": {".bundle"},
"linux": {".so"},
@BigRoy
BigRoy / fusion_swap_tools.py
Last active January 31, 2025 21:27
Fusion script to swap two selected tools, which swaps their position and connections
from typing import List, Iterable
import itertools
import contextlib
@contextlib.contextmanager
def comp_lock_and_undo_chunk(
comp,
undo_queue_name="Script CMD",
keep_undo=True,
@BigRoy
BigRoy / ayon_fusion_imprint_unmanaged_loaders.py
Created January 20, 2025 20:23
AYON Fusion integration imprint container to all loaders loading a published filepath that is currently not linked
"""Fix unlinked/unmanaged loaders in Fusion to get managed by AYON as intended."""
from pathlib import Path
from typing import List
import time
import logging
import ayon_api
from ayon_core.pipeline import get_current_project_name
@BigRoy
BigRoy / maya_create_rs_mesh_parameters_per_node.py
Last active January 15, 2025 11:13
Maya Create rsMeshParameters per node in selection and add node name as suffix label
# Maya Create rsMeshParameters per node in selection and add node name as suffix label
import contextlib
from maya import cmds, mel
@contextlib.contextmanager
def maintained_selection():
previous_selection = cmds.ls(selection=True)
try:
yield
@BigRoy
BigRoy / observe_pyblish_data_changes.py
Last active December 20, 2024 17:18
Capture instance.data and context.data reads and writes from Pyblish plugins (the instances must already exist at the specified CollectorOrder!)
"""This plug-in will do some heavy logging of all reads and changes to any
instance.data or context.data by pyblish plug-ins and will generate a JSON
This requires typing-extensions and observatory library and will in the worst
possible manner add those to sys.path to make it work. This is a quick hack.
Dependencies:
observatory: https://github.com/sharpencrag/observatory
typing_extensions: https://github.com/python/typing_extensions