Usage Examples#

Create and Configure a Playlist#

from omni.kit.playlist.core import PlaylistModel, PlayMode, enum_playlist_cards

# Create a new playlist with smooth transitions
playlist = PlaylistModel(
    name="My Camera Playlist",
    transition_type=PlayMode.TRANSITION_SMOOTH,
    transition_time=2.0,  # 2 seconds transition between cameras
    item_time=5.0,        # Display each camera for 5 seconds
)

# Load available camera cards from the stage
camera_cards = enum_playlist_cards()

# Add camera cards to the playlist
for card in camera_cards:
    playlist.insert_item(card)

print(f"Created playlist '{playlist.name}' with {len(playlist.items)} cameras")

Play a Playlist with PlaylistPlayer#

from omni.kit.playlist.core import PlaylistModel, PlaylistPlayer, PlayMode

# Create a playlist with cut transitions
playlist = PlaylistModel(
    name="Quick Camera Tour",
    transition_type=PlayMode.TRANSITION_CUT,
    item_time=3.0
)

# Add some camera cards (assuming they exist in the scene)
from omni.kit.playlist.core import enum_playlist_cards
cards = enum_playlist_cards()
for card in cards[:3]:  # Add first 3 cameras
    playlist.insert_item(card)

# Define callback functions
def on_started():
    print("Playlist playback started!")

def on_stopped():
    print("Playlist playback stopped!")

def on_playing(index):
    print(f"Now playing camera at index: {index}")

# Create and start the player
player = PlaylistPlayer.create(
    playlist=playlist,
    start=0,
    on_started_fn=on_started,
    on_stopped_fn=on_stopped,
    on_playing_fn=on_playing
)

# Start playback
if player.play():
    print("Playback started successfully")
else:
    print("Failed to start playback")

Use PlayManager for Advanced Playlist Control#

from omni.kit.playlist.core import get_play_manager, PlaylistModel, PlayMode, enum_playlist_cards

# Get the global play manager
play_manager = get_play_manager()

# Create a playlist
playlist = PlaylistModel(
    name="Main Playlist",
    transition_type=PlayMode.TRANSITION_SMOOTH,
    transition_time=1.5,
    item_time=4.0
)

# Add cameras to playlist
cards = enum_playlist_cards()
for card in cards:
    playlist.insert_item(card)

# Set up callbacks
def on_playlist_changed(playlist_name):
    print(f"Now playing playlist: {playlist_name}")

def on_item_changed(card_item):
    print(f"Current item changed to: {card_item.name}")

# Subscribe to events
playlist_sub = play_manager.subscribe_playing_playlist_changed(on_playlist_changed)
item_sub = play_manager.subscribe_current_playlist_item_changed(on_item_changed)

# Set current playlist and start playback
play_manager.current_playlist = playlist
play_manager.play()

# Stop playback
play_manager.stop()

Create System Playlist for Camera Management#

from omni.kit.playlist.core import SystemPlaylistModel, PlaylistCard, PlayMode

# Create a system playlist for all cameras
system_playlist = SystemPlaylistModel(
    name="All Scene Cameras",
    camera_type=PlaylistCard.CAMERA
)

# System playlists automatically populate with cameras
system_playlist.check_update()

print(f"System playlist contains {len(system_playlist.items)} cameras")
print(f"Playlist is system-managed: {system_playlist.system}")
print(f"Playlist can be changed: {system_playlist.can_change}")

# Configure playback settings
system_playlist.transition_type = PlayMode.TRANSITION_CUT
system_playlist.transition_time = 1.0
system_playlist.item_time = 3.0

# Access playlist items
items = system_playlist.get_item_children()
if items:
    # Select first camera
    system_playlist.selection = items[0]

    # Navigate through cameras
    next_index = system_playlist.next()
    prev_index = system_playlist.previous()

    print(f"Selected camera: {system_playlist.selection.name}")