Python API 개선 사항

UV 레이아웃의 스냅샷 저장, 배율 조정, 회전 및 변환, UV 제거, UV 가장자리 잘라내기, 깊이 전용 패스 설정 및 경계 상자 노출에 대한 Python 함수가 추가되었습니다.

setTexCoords

UV 세트를 제거하기 위해 setTexCoords 메서드가 vrdGeometryNode에 추가되었습니다.

크기 맞춤

특정(평면형/삼면/원통형) 투영을 임의의 객체에 맞추고 임의의 노드를 간단하게 배치 처리하기 위해 triplanarProjectionFitSize(), planarProjectionFitSize()cylyndricalProjectionFitSize()vrUVService에 추가되었습니다.

깊이 전용 패스

고급 OpenGL 설정 깊이 전용 패스 기능을 위한 setDepthOnlyPass 함수가 추가되었습니다. 깊이 전용 패스를 토글할 수 있습니다. setDepthOnlyPasssetBackfaceCulling과 유사한 매개변수를 사용합니다(예: SWITCH_TOGGLE, SWITCH_ON, SWITCH_OFF, True 또는 False). 현재 상태에 대한 쿼리 함수가 없습니다.

UV 모서리 절단

자동 이음매 선택의 값을 사용하여 선택한 이음매를 따라 UV 모서리를 잘라내는 vrUVService.cutAlongSeams()가 추가되었습니다.

vrUVService.cutAlongSeams(nodes, settings, uvSet)

지정된 노드에서 지정된 이음새 설정으로 절단을 수행합니다.

유기적 절단의 예:

geometryNodes = [vrNodeService.findNode("Box")]
settings = vrdUVSeamSettings()
settings.setMode(vrUVTypes.SeamMode.Organic)
settings.setOrganicUsePipesCutter(True)
settings.setOrganicSegmentationAmount(0)
vrUVService.cutAlongSeams(geometryNodes, settings, vrUVTypes.UVSet.MaterialUVSet)

제조된 절단의 예:

geometryNodes = [vrNodeService.findNode("Box")]
settings = vrdUVSeamSettings()
settings.setMode(vrUVTypes.SeamMode.Manufactured)
settings.setManufacturedAngle(45)
settings.setManufacturedAreaRatio(0.5)
vrUVService.cutAlongSeams(geometryNodes, settings, vrUVTypes.UVSet.MaterialUVSet)

베이킹 절단의 예:

geometryNodes = [vrNodeService.findNode("Box")]
settings = vrdUVSeamSettings()
settings.setMode(vrUVTypes.SeamMode.Baking)
settings.setBakingAngle(45)
settings.setBakingSizeOfMinPatch(0)
vrUVService.cutAlongSeams(geometryNodes, settings, vrUVTypes.UVSet.MaterialUVSet)
매개변수:
  • nodes(List[vrdGeometryNode]) – 노드 목록입니다.
  • settings(vrdUVSeamSettings) – 이음새 지정에 사용할 설정입니다.
  • uvSet(vrUVTypes.UVSet) - 작업할 UV 세트입니다(재질 UV의 경우 `MaterialUVSet`, 라이트 맵 UV의 경우 `LightmapUVSet`).

UV 회전

지정된 중심을 기준으로 UV를 회전하기 위해 vrUVService.rotateUV가 추가되었습니다.

지정된 중심을 기준으로 UV를 회전하려면 다음을 시도하십시오.

center = QVector2D(0,0)
angle = 25
vrUVService.rotateUV(nodes, center, angle, vrUVTypes.UVSet.MaterialUVSet)

vrUVService.rotateUV(nodes, center, angleDegree, uvSet)

지정된 노드의 UV를 지정된 중심을 기준으로 회전합니다.

모든 재질 UV를 90도 회전하는 예:

geometryNodes = [vrNodeService.findNode("Box")]
center = QVector2D(0.5,0.5)
angle = 90
vrUVService.rotateUV(geometryNodes, center, angle, vrUVTypes.UVSet.MaterialUVSet)
매개변수:
  • nodes(List[vrdGeometryNode]) –
  • center(QVector2D) - 배율 조정의 중심입니다.
  • angleDegree(float) - 회전 각도(도)입니다.
  • uvSet(vrUVTypes.UVSet) - 작업할 UV 세트입니다.

UV 배율 조정 및 이동

UV 배율 조정/반전 및 이동을 위해 vrUVService.scaleUVvrUVService.translateUV가 추가되었습니다.

지정된 중심에서 UV를 대칭 이동하려면 다음을 시도하십시오.

center = QVector2D(0,0)
scaleU = 1
scaleV = -1
vrUVService.scaleUV(nodes, center, scaleU, scaleV, vrUVTypes.UVSet.MaterialUVSet)

지정된 중심에서 UV를 이동하려면 다음을 시도하십시오.

translateU = 0.2
translateV = 0.1
vrUVService.translateUV(nodes, translateU, translateV, vrUVTypes.UVSet.MaterialUVSet)

vrUVService.scaleUV(nodes, center, uScale, vScale, uvSet)

지정된 중심을 사용하여 지정된 노드의 UV를 배율 조정합니다.

모든 재질 UV 반전 예:

geometryNodes = [vrNodeService.findNode("Box")]
center = QVector2D(0.5,0.5)
uScale = -1
vScale = 1
vrUVService.scaleUV(geometryNodes, center, uScale, vScale, vrUVTypes.UVSet.MaterialUVSet)
매개변수:
  • nodes(List[vrdGeometryNode]) – 노드 목록입니다.
  • center(QVector2D) - 배율 조정의 중심입니다.
  • uScale(float) - U 값의 배율 인자입니다.
  • vScale(float) - V 값의 배율 인자입니다.
  • uvSet(vrUVTypes.UVSet) - 작업할 UV 세트입니다.

vrUVService.translateUV(nodes, du, dv, uvSet)

지정된 노드의 UV를 이동합니다.

모든 재질 UV 변환 이동 예:

geometryNodes = [vrNodeService.findNode("Box")]
du = 0.2
dv = 0.2
vrUVService.translateUV(geometryNodes, du, dv, vrUVTypes.UVSet.MaterialUVSet)
매개변수:
  • nodes(List[vrdGeometryNode]) – 노드 목록입니다.
  • du(float) - u를 따라 이동입니다.
  • dv(float) - v를 따라 이동입니다.
  • uvSet(vrUVTypes.UVSet) - 작업할 UV 세트입니다.

saveUVSnapshot

saveUVSnapshot(UV 확장 편집기에서와 같이)이 vrUVService에 추가되었습니다. UV 레이아웃의 스냅샷을 이미지 파일로 저장합니다.

참고:

폭과 높이가 다르면 출력 이미지가 왜곡됩니다.

vrUVService.saveUVSnapshot(nodes, path, width=1024, height=1024, uvSet=vrUVTypes.MaterialUVSet, style=vrUVTypes.ShowWireframe, mode=vrUVTypes.SnapshotMode.ZeroToOneSpace, customSpace=QVector4D())

UV 레이아웃의 스냅샷을 이미지 파일로 저장합니다.

참고: ZeroToOneSpace 모드에서 폭과 높이가 다르면 출력 이미지가 왜곡됩니다.

예:

geometryNodes = [vrNodeService.findNode("Box")]
vrUVService.saveUVSnapshot(geometryNodes,
                           "c:/vred-snapshots/uv.png",
                           512, 512,
                           vrUVTypes.UVSet.MaterialUVSet,
                           vrUVTypes.ShowBorders | vrUVTypes.ShowWireframe)
매개변수:
  • nodes(List[vrdNode]) – 스냅샷에 포함할 노드 목록입니다.
  • path(string) - 이미지를 저장해야 하는 전체 경로(예: ‘c:/uv.png’).
  • width (integer) - 픽셀 단위의 이미지 너비입니다(기본값 1024).
  • height(integer) - 픽셀 단위의 이미지 높이입니다(기본값 1024).
  • uvSet(vrUVTypes.UVSet) - 캡처할 UV 세트입니다(재질 UV의 경우 MaterialUVet, 라이트 맵 UV의 경우 LightmapUVet).
  • style(integer) - 내보낸 스냅샷의 스타일을 정의합니다. 비트마스크는 vrUVTypes.SnapshotStyle에서 작성됩니다.
  • mode(vrUVTypes.SnapshotMode) - 스냅샷 모드는 이미지에 포함할 영역을 정의합니다. 'ZeroToOneSpace'는 UV 좌표에서 0에서 1까지 영역을 캡처합니다. 'Boundingbox'는 전체 객체를 캡처합니다.
  • customSpace(QVector4D) - 스냅샷에 사용할 UV 공간입니다(최소 U, 최대 U, 최소 V, 최대 V). 모드가 `vrUVTypes::SnapshotMode::CustomSpace`로 설정된 경우에만 사용됩니다.

경계 상자 노출

장면에 있는 객체의 경계 볼륨(상자)을 노출하기 위해 getBoundingBoxgetWorldBoundingBox가 추가되었습니다.

여러 객체의 결합된 경계 상자를 가져오려면 다음을 시도하십시오.

def getWorldCenter(geometryNodes):
    bb = vrdBoundingBox()
    for geometryNode in geometryNodes:
        bb.extendBy(geometryNode.getWorldBoundingBox())
    return bb.getCenter()

vrdNode.getWorldBoundingBox()

하위 항목을 포함하는 노드의 표준 경계 상자를 반환합니다.

다중 경계 상자 결합 예:

def getWorldCenter(nodes):
    bb = vrdBoundingBox()
    for node in nodes:
        bb.extendBy(node.getWorldBoundingBox())
    return bb.getCenter()

# Find all nodes whose name starts with "Box". nodes = vrNodeService.findNodes("Box*", True) # Calculate the bounding box center of these nodes center = getWorldCenter(nodes) # Print the result print(center)

반환 값:노드의 표준 경계 상자
반환 유형:vrdBoundingBox