본문 바로가기
카테고리 없음

[Nvidia Omniverse] Prim 다루기(생성 및 경로 탐색 등)

by 은유지니 2025. 1. 2.
from pxr import Usd, Sdf, UsdGeom, Gf

#xform 정의
xform = UsdGeom.Xform.Define(self.stage, Sdf.Path("/World"))
#새로운 path 정의
test_path = xform.GetPath().AppendPath("Test")

#cube 정의
cube = UsdGeom.Cube.Define(self.stage, test_path)
#prim 가져오기
cube_prim = cube.GetPrim()
#path 이용 prim 가져오기
cube_prim = self.stage.GetPrimAtPath(test_path)

#cube xform 속선 정의
cube_xform = UsdGeom.Xformable(cube_prim)
# 기존의 TranslateOp가 있는지 확인하고 값만 설정 또는 새로 추가
translate_ops = [op for op in cube_xform.GetOrderedXformOps() if op.GetOpType() == UsdGeom.XformOp.TypeTranslate]
if translate_ops:
    translate_ops[0].Set(Gf.Vec3d(0., 0., 0.))
else:
    cube_xform.AddTranslateOp().Set(Gf.Vec3d(0., 0., 0.))
    cube_xform.AddRotateXYZOp().Set(Gf.Vec3d(0., 0., 0.))
    cube_xform.AddScaleOp().Set((Gf.Vec3d(1., 1., 1.)))

#prim 속성 수정
value = 10
cube_prim.GetAttribute("size").Set(value)

# show ans hide
UsdGeom.Imageable(cube_prim).GetVisibilityAttr().Set(UsdGeom.Tokens.inherited)	 	 
UsdGeom.Imageable(cube_prim).GetVisibilityAttr().Set(UsdGeom.Tokens.invisible)