Prim들 위치 및 방향 변경 예제 - SmartX-Team/Omniverse GitHub Wiki

Prim 위치를 이동, 회전, 스케일 변경 예제이다.

특정 prim의 현재 속성값 조회

from pxr import Usd, UsdGeom, Sdf, Gf
from omni.usd import get_context

obj_name = "/World/HUSKY_01"
stage = get_context().get_stage()

prim = stage.GetPrimAtPath(obj_name)

# 현재 위치 조회
translate_attr = prim.GetAttribute("xformOp:translate")
translation_value = translate_attr.Get()

print(f"translation: {translation_value }")

# 회전 속성 조회
rotation_attr = prim.GetAttribute('xformOp:rotateXYZ')
rotation_value = rotation_attr.Get()

print(f"Rotation: {rotation_value}")

# 현재 스케일 속성 조회
scale_attr = prim.GetAttribute("xformOp:scale")
scale_value = scale_attr.Get()

print(f"Rotation: {scale_value}")


실행결과

image

특정 prim의 현재 속성값 변경

from pxr import Usd, UsdGeom, Sdf, Gf
from omni.usd import get_context

obj_name = "/World/HUSKY_01"
stage = get_context().get_stage()

prim = stage.GetPrimAtPath(obj_name)

TRANSLATION = Gf.Vec3d(100.0,50.0,0)
ROTATION = Gf.Vec3d(0,180.0,0)
SCALE = Gf.Vec3d(2.0,2.0,2.0)

# pirm 위치 변경
prim.GetAttribute("xformOp:translate").Set(Gf.Vec3d(TRANSLATION), 0)

# pirm 회전 
rotation_attr = prim.GetAttribute('xformOp:rotateXYZ').Set(Gf.Vec3d(ROTATION), 0)


# prim 스케일 변경
scale_attr = prim.GetAttribute("xformOp:scale").Set(Gf.Vec3d(SCALE), 0)