Isaaclab - USD 객체 크기 추출하는 함수

권호떡의 데싸정복·2024년 10월 12일
0

Nvidia Omniverse Isaac Lab

목록 보기
14/14

table 크기 뽑아내기

풀 코드가 아닌 부분적인 함수

# 옴니버스와 상호작용하기 위한 핵심 기능을 제공하는 기본 모듈들
import omni
import omni.usd

#  Isaac Lab 모듈에서 ISAAC_NUCLEUS_DIR 상수를 가져옴
from omni.isaac.lab.utils.assets import ISAAC_NUCLEUS_DIR

# 'UsdGeom'은 도형 생성 및 조작, 변환, 경계 상자 액세스 등의 도형 관련 클래스 및 기능을 제공
from pxr import UsdGeom

def get_prim_height(prim_path):

    # omni.usd.get_context(): Omniverse Isaac Sim이 사용하는 현재 USD 컨텍스트(단계)를 검색. 현재 장면(또는 무대)과 상호 작용
    # USD 단계 내 prim_path에 위치한 프림의 월드 공간 경계 상자를 계산. 경계 상자를 정의하는 최소 및 최대 좌표(두 개의 3D 벡터로)를 반환
    bbox =  omni.usd.get_context().compute_path_world_bounding_box(prim_path)
    
    
    print(bbox) # [(xmin, ymin, zmin), (xmax, ymax, zmax)] 결과값 나옴
    
	# 높이를 구함
    height = bbox[1][2] - bbox[0][2]
    print(f'table height = {height}')
    
    
    
    return height

USD 파일의 table 불러오는 코드 ex) design_scene()함수의 일부분

# USD 파일 불러오기
cfg = sim_utils.UsdFileCfg(usd_path=f"{ISAAC_NUCLEUS_DIR}/Props/Mounts/SeattleLabTable/table_instanceable.usd")
    
    # cfg.func : 이 함수는 테이블 모델을 장면에 로드함
    # '/World/Objects/Table' 위치에 테이블 저장하고 (0.0, 0.0, 1.05) 좌표에 배치
    cfg.func("/World/Objects/Table", cfg, translation=(0.0, 0.0, 1.05))
    
    # 2. 크기를 측정하는 함수에 해당 object의 path를 보내 가져옴
    table_height = get_prim_height("/World/Objects/Table")  
profile
데이터사이언스정복

0개의 댓글