from omni.kit.property.adapter.fabric import convert_usdrt_to_usd
import usdrt
from pxr import Gf, Sdf
# Create some USDRT data types that need conversion
stage = usdrt.Usd.Stage.CreateInMemory("test_stage")
prim = stage.DefinePrim("/TestPrim", "Cube")
# Convert USDRT vector to USD vector
usdrt_vec3f = usdrt.Gf.Vec3f(1.0, 2.0, 3.0)
usd_vec3f = convert_usdrt_to_usd(usdrt_vec3f)
print(f"Converted Vec3f: {usd_vec3f}") # Output: Gf.Vec3f
# Convert USDRT matrix to USD matrix
usdrt_matrix = usdrt.Gf.Matrix4d()
usd_matrix = convert_usdrt_to_usd(usdrt_matrix)
print(f"Converted Matrix4d: {usd_matrix}") # Output: Gf.Matrix4d
# Convert USDRT path to USD path
usdrt_path = usdrt.Sdf.Path("/TestPrim")
usd_path = convert_usdrt_to_usd(usdrt_path)
print(f"Converted Path: {usd_path}") # Output: Sdf.Path
# Convert lists with USDRT types
usdrt_list = [usdrt.Gf.Vec3f(1, 0, 0), usdrt.Gf.Vec3f(0, 1, 0)]
usd_list = convert_usdrt_to_usd(usdrt_list)
print(f"Converted list: {usd_list}") # Output: list of Gf.Vec3f objects
# Handle None values and unsupported types
none_value = convert_usdrt_to_usd(None)
print(f"None remains: {none_value}") # Output: None
# Unsupported types are returned unchanged
string_value = convert_usdrt_to_usd("test_string")
print(f"String unchanged: {string_value}") # Output: "test_string"