이 문서는 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 모듈에서 제공되는 다른 함수에 액세스할 수 있습니다.
주석: vrAnnotationService
카메라 편집기: vrCameraService
라이트 편집기: vrLightService
참조 편집기: vrReferenceService
장면 플레이트 편집기: vrSceneplateService
공동 작업: vrSessionService
가상 현실: vrDeviceService, vrImmersiveInteractionService, vrImmersiveUiService, vrHMDService
구속조건: vrConstraintService
파일 로드 및 저장: vrFileIOService
서비스 클래스와 이름이 같은 객체를 통해 서비스 함수를 호출합니다. 예:
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 또는 웹 인터페이스를 통해 사용할 수 있습니다. 액세스는 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>>
동일한 스크립트에서 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의 장면 그래프를 참조하십시오.
이 스크립트는 VRED Python API의 다양한 기능을 보여 주는 예제 스크립트 모음입니다.
색인
페이지 검색
다음은 VRED Python API v2 명령 목록입니다.