Skip to content

KOSME Example2

SongInYong edited this page Oct 18, 2024 · 4 revisions

기존 WIKI 에 있던 자료들을 실습용 코드로 재구성한 예제들 입니다.

Prim Create 및 조작 예제

Prim Create

import omni.usd
from pxr import Usd, UsdGeom

# 스테이지 가져오기
stage = omni.usd.get_context().get_stage()

# 새로운 Xform Prim 생성
prim_path = "/World/my_prim"
xform = UsdGeom.Xform.Define(stage, prim_path)

# Cube 생성
cube = UsdGeom.Cube.Define(stage, f"{prim_path}/cube")
cube.CreateSizeAttr(100)

print(f"Prim created at {prim_path}")

image

[실행 결과]

Prim Attribute 수정

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

# 스테이지 가져오기
stage = omni.usd.get_context().get_stage()

# 이전에 생성한 Prim 가져오기
prim_path = "/World/my_prim/cube"
cube = stage.GetPrimAtPath(prim_path)

# 크기 속성 수정
size_attr = UsdGeom.Cube(cube).GetSizeAttr()
size_attr.Set(200)

# 색상 속성 추가
cube_gprim = UsdGeom.Gprim(cube)
color_attr = cube_gprim.CreateDisplayColorAttr()
color_attr.Set([Gf.Vec3f(1.0, 0.0, 0.0)])  # 빨간색

print(f"Prim at {prim_path} updated with new size and color")

특정 prim의 현재 위치 관련 속성값 조회


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

obj_name = "/World/HUSKY_01" # prim 주소 상황에 따라 변경
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}")

특정 prim의 현재 위치 관련 속성값 변경

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

obj_name = "/World/HUSKY_01" # prim 주소 상황에 따라 변경
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)

Clone this wiki locally