VRED Python API v2

이 문서는 Python용 Qt(이전의 PySide 2)를 기반으로 하는 새로운 VRED Python API v2 설명서입니다. VRED Python API v1 설명서는 여기에서 볼 수 있습니다.

유형

새 인터페이스의 일부 함수는 매개변수에 대해 또는 반환 유형으로 Qt 유형을 사용합니다. 해당 유형을 PySide2 모듈에서 가져오지 않고도 Python 네임스페이스로 자동으로 가져와 사용할 수 있습니다.

다음과 같이 추가 Qt 클래스를 가져올 수 있습니다.

from PySide2.QtCore import QLine
from PySide2.QtGui import QBrush

line = QLine(0,0,100,100)
brush = QBrush()

객체

새 인터페이스의 장면 객체는 vrdObject에서 파생됩니다. 이러한 객체의 클래스 이름은 vrd로 시작합니다(예: 노드 객체의 경우 vrdNode).

서비스

객체에는 특성을 쿼리하고 변경하는 데 사용할 수 있는 많은 함수가 있지만 기본 진입점은 작업할 객체를 가져오는 서비스입니다.

서비스를 통해 기존 장면 객체를 찾거나, 새 객체를 생성하거나, 객체를 삭제하거나, 관련 VRED 모듈에서 제공되는 다른 함수에 액세스할 수 있습니다.

서비스 클래스와 이름이 같은 객체를 통해 서비스 함수를 호출합니다. 예:

camNode = vrCameraService.createCamera("new camera")

타사 모듈 설치

VRED를 Python 3로 이동했으므로 타사 모듈을 쉽게 설치할 수 있습니다. 전체 Python 설치는 lib/python의 설치 폴더에서 찾을 수 있습니다. Pip를 사용하여 공식 Python 리포지토리에서 설치할 수 있습니다. 'numpy'를 설치하려면 다음과 같이 하면 됩니다.

python.exe -m pip install numpy

Pip는 Python과 독립적으로 개발되었습니다. Pip를 최신 버전으로 업그레이드하려면 다음을 사용하십시오.

python.exe -m pip install --upgrade pip

포함된 Pip가 작업을 중지해야 하는 경우 Python 부트스트랩 메커니즘을 사용하여 복원할 수 있습니다.

python.exe -m ensurepip

또한 모듈을 Lib/site-packages에 수동으로 설치할 수도 있습니다. Python API를 사용하여 자체 C 또는 C++ 확장을 컴파일하려면 호환 가능한 컴파일러를 사용해야 합니다. 다시 컴파일하지 않고 VRED용 공식 Python 3 바이너리를 사용하고 있습니다. 따라서 VRED에서 제공되는 버전과 버전 번호가 동일한 python.org의 Python 배포를 컴파일하는 모든 작업이 작동해야 합니다.

웹 인터페이스를 통해 Python API 사용

이 인터페이스는 Python 또는 웹 인터페이스를 통해 사용할 수 있습니다. 액세스는 JavaScript를 통해 이루어집니다. 함수 호출은 비동기적으로 실행됩니다. 다음 예는 이러한 호출이 웹 페이지에서 어떻게 보이는지를 보여줍니다. 모든 매개변수 및 반환 유형이 JavaScript 유형에 매핑됩니다. 예를 들어 QVector3D 및 QMatrix4x4는 3개 또는 16개 숫자로 구성된 배열에 매핑됩니다.

<script type="module">
  import {api} from '/api.js';

  // reacting on a signal
  api.vrClusterService.started.connect(() => {console.log('Started')});
  // calling a function
  api.vrClusterService.start();
  // changing the position of the camera
  api.vrNodeService.findNode("Perspective")
      .then((node) => node.setTranslation([10,20,30]));
</script&gt>

API v1과 v2를 함께 사용

동일한 스크립트에서 API v1과 API v2의 함수를 함께 사용할 수 있습니다.

API v1에서 노드 객체 유형은 vrNodePtr입니다. vrNodePtr을 매개변수로 사용하는 API v1의 함수에서 vrdNode 객체를 사용할 수 있으며, 그 반대의 경우도 마찬가지로 vrdNode를 매개변수로 사용하는 API v2의 함수에서 vrNodePtr 객체를 사용할 수 있습니다. 이러한 변환은 자동으로 수행됩니다.

vrdNode를 vrNodePtr 객체로 명시적으로 변환하려면 다음과 같이 합니다.

oldNodePtr = toNode(newVRDObject.getObjectId())

vrNodePtr을 vrdNode로 변환할 수도 있습니다.

newVRDObject = vrNodeService.getNodeFromId(oldNodePtr.getID())

장면 그래프 용어

이 문서에서 장면 그래프를 참조하는 방법을 알아보려면 VRED의 장면 그래프를 참조하십시오.

Python 예제 스크립트

이 스크립트는 VRED Python API의 다양한 기능을 보여 주는 예제 스크립트 모음입니다.

색인 및 표

VRED Python API v2

다음은 VRED Python API v2 명령 목록입니다.