본문으로 건너뛰기

마운트 및 작업 공간의 변환

두 가지 변환이 애플리케이션 공간 내 장치의 위치를 결정합니다. 파이프라인을 이해하면 적절한 변환을 선택하기가 더 쉬워집니다.

좌표 파이프라인​

무대기능설정 방법지속성
기저 변환축을 재매핑합니다(예: Z-up → Y-up)session.configure.basis — 튜토리얼 08 참조 (HTTP 원격 설정)네
마운트 변환장치의 물리적 장착 오프셋(암의 위치, 회전, 스케일)configure.mount 또는 configure.preset — 튜토리얼 08 참조 (HTTP 원격 설정)네
작업 공간 변환카메라/장면 탐색에 의한 드리프트commands.set_transform — 튜토리얼 09 참조 (WebSocket 틱별 스트리밍)네 (유지됨)

마운트 변환​

마운트는장치가 물리적으로 어디에 배치되어 있는지를나타냅니다. 암의 오프셋, 방향, 스케일을 의미합니다. 한 번 설정하면(사용자가 물리적 설정을 변경한 경우 재설정합니다), 실행 중에 업데이트되는 일은 거의 없습니다.

사전 설정(출고 시 설정)​

마운트를 직접 계산하는 대신, 이름이 지정된 사전 설정을 선택하십시오:

사전 설정원점의 배치팔의 방향
defaults장치의 밑부분전방(암의 정면)
arm_front장치의 밑부분앞쪽
arm_front_centered작업 공간의 중앙앞쪽
led_front장치의 밑부분LED가 앞쪽을 향하도록
led_front_centered작업 공간의 중앙LED가 앞쪽을 향하도록
custom수동 — 마운트를 직접 설정—

프리셋을 선택하면 마운트, 좌표계 변환, 작업 공간 원점이 한 번에 일괄 설정됩니다.

마운트를 직접 설정하기​

{
"inverse3": [{
"device_id": "049D",
"configure": {
"mount": {
"transform": {
"position": { "x": 0.0, "y": 0.0, "z": 0.0 },
"rotation": { "x": 0.0, "y": 0.0, "z": 0.0, "w": 1.0 },
"scale": { "x": 1.0, "y": 1.0, "z": 1.0 }
}
}
}
}]
}
mount 그리고 preset 동시에 지정할 수 없습니다

동일한 메시지로 두 가지를 모두 전송하면 의미가 모호해지므로, 서비스에서 이를 거부합니다. 둘 중 하나를 선택해 주십시오: 이름이 지정된 preset(마운트를 자동으로 설정합니다) 또는 명시적인 mount 변환.

명령어와 스냅샷의 비대칭성

마운트를보내기이 경우 변환을 다음과 같이 감싸줍니다:{ "mount": { "transform": { … } } }。 스냅샷에서 마운트하기읽기이 경우, 평면 형식이 됩니다:{ "mount": { "position": …, "rotation": …, "scale": … } }。 이는 의도된 설계입니다. 명령어는 통일된 command_data 래퍼를 사용하여 스냅샷은 core::transform 를 직접 직렬화하기 위해서입니다.

작업 공간 변환​

워크스페이스 변환은 마운트 위에 적용되는런타임 드리프트입니다. 대표적인 사용 사례는 씬 내비게이션입니다. 즉, 기기를 물리적으로 같은 위치에 둔 채로 애플리케이션 뷰를 이동, 회전, 확대/축소하는 것을 의미합니다.

마운트 변환과 워크스페이스 변환은 모두영구적입니다. 서비스는 전송된 마지막 값을 유지합니다. 차이점은 용도와 성능에 있습니다:

  • 마운트는한 번 설정하면 변경하지 않는다는 전제 하에 설계되었습니다. 이는 물리적 구성을 나타내며, 드물게 이루어지는 업데이트에 최적화되어 있습니다.
  • 워크스페이스 변환은높은 빈도로 스트리밍된다는 전제 하에 설계되었습니다 (예: 카메라 이동 중에는 매 프레임마다). 내부 파이프라인은 이러한 업데이트 빈도에 최적화되어 있습니다.
{
"inverse3": [{
"device_id": "049D",
"commands": {
"set_transform": {
"transform": {
"position": { "x": 1.0, "y": 0.0, "z": 0.0 },
"rotation": { "x": 0.0, "y": 0.0, "z": 0.0, "w": 1.0 },
"scale": { "x": 1.0, "y": 1.0, "z": 1.0 }
}
}
}
}]
}
스케일링은 출력 힘에 영향을 미칩니다(대부분의 경우 의도한 대로 동작합니다).

마운트 또는 작업 공간을 확대·축소하면 장치가 가하는 힘의 크기가 변합니다. 확대·축소 비율은 접촉력 계산에 사용됩니다.침투 깊이...에 영향을 미치기 때문입니다. 예를 들어 2x 이 스케일에서는 침투 깊이가 대략 절반이 됩니다(가상 장면이 장치의 가동 범위에 비해 2배 더 커지기 때문입니다). 그 결과, 느껴지는 힘은 1x 그때의 대략반이 됩니다. 반대로 0.5x 의 규모에서는 힘이 대략 2배가 됩니다.

이는 일반적으로 바람직한 동작입니다. 햅틱 장면을축소하면접촉이 자연스럽게 약해지고(‘더 멀리 떨어져 있는’ 상태가 되기 때문),확대하면접촉이 강해집니다. 만약 이것이 바람직하지 않은 경우(예: 사용자가 확대/축소하더라도 강성을 일정하게 유지해야 하는 경우)에는 힘의 게인을 스케일링의 역수로 보정하십시오.

자동 드리프트에는 Navigation 모듈을 사용한다

지속적인 이동(버블 내비게이션, 속도 제어를 통한 드리프트)이 필요한 경우, 수동으로 set_transform 틱마다 스트리밍하는 대신,네비게이션 모듈 이 기능을 사용해 주세요. 물리 시뮬레이션, 햅틱 피드백, 작업 공간 경계 처리를 한 번에 처리해 줍니다.