import omni.ocio as ocio
def get_displays_views_and_looks(ocio_ctx):
"""
Extract all displays, views, and looks from an OCIO context.
Args:
ocio_ctx: An OpenColorIO context
Returns:
A tuple of (displays, views_per_display, looks) lists
"""
displays = []
views = []
looks = []
# Get all displays
display_count = ocio.get_display_count(ocio_ctx)
for i in range(display_count):
display_name = str(ocio.get_display_name(ocio_ctx, i))
displays.append(display_name)
# Get all views for this display
disp_views = []
view_count = ocio.get_view_count(ocio_ctx, i)
for k in range(view_count):
view_name = str(ocio.get_view_name(ocio_ctx, i, k))
disp_views.append(view_name)
views.append(disp_views)
# Get all looks
look_count = ocio.get_look_count(ocio_ctx)
for j in range(look_count):
look_name = str(ocio.get_look_name(ocio_ctx, j))
looks.append(look_name)
return displays, views, looks
# Example usage
ocio_ctx = ocio.get_context("ocio://studio-config-latest")
displays, views_per_display, looks = get_displays_views_and_looks(ocio_ctx)
# Print some results
print(f"Total displays: {len(displays)}")
print(f"First display: {displays[0]} with views: {views_per_display[0]}")
print(f"Available looks: {looks}")
# Direct API usage example (alternative to the function approach)
print("\nDirect API usage example:")
display_idx = 0
if display_idx < len(displays):
view_count = ocio.get_view_count(ocio_ctx, display_idx)
print(f"Display '{displays[display_idx]}' has {view_count} views")
# Clean up
ocio.release_context(ocio_ctx)