이 페이지에서

QQuick3DInstancing Class

인스턴스 테이블을 정의하기 위한 기본 클래스. 더 보기...

Header: #include <QQuick3DInstancing>
Since: Qt 6.2
In QML: Instancing
Inherits: QQuick3DObject

속성

공개 함수

bool depthSortingEnabled() const
bool hasTransparency() const
int instanceCountOverride() const
QVector3D shadowBoundsMaximum() const
QVector3D shadowBoundsMinimum() const

공개 슬롯

void setDepthSortingEnabled(bool enabled)
void setHasTransparency(bool hasTransparency)
void setInstanceCountOverride(int instanceCountOverride)
void setShadowBoundsMaximum(const QVector3D &newShadowBoundsMinimum)
void setShadowBoundsMinimum(const QVector3D &newShadowBoundsMinimum)

신호

보호된 함수

virtual QByteArray getInstanceBuffer(int *instanceCount) = 0
void markDirty()

정적 보호 멤버

QQuick3DInstancing::InstanceTableEntry calculateTableEntry(const QVector3D &position, const QVector3D &scale, const QVector3D &eulerRotation, const QColor &color, const QVector4D &customData = {})
QQuick3DInstancing::InstanceTableEntry calculateTableEntryFromQuaternion(const QVector3D &position, const QVector3D &scale, const QQuaternion &rotation, const QColor &color, const QVector4D &customData = {})

상세 설명

QQuick3DInstancing 클래스를 상속받아 Qt Quick 3D 장면에서 모델에 대한 사용자 정의 인스턴스 테이블을 지정할 수 있습니다.

이 클래스는 추상 클래스입니다. 이 클래스를 사용하려면 하위 클래스를 생성하고 getInstanceBuffer()을 구현해야 합니다.

속성 문서

depthSortingEnabled : bool

인스턴스 테이블에 대한 깊이 정렬 활성화 값을 저장합니다. 이 기능이 활성화되면 인스턴스는 카메라에서 가장 먼 인스턴스부터 가장 가까운 인스턴스 순으로, 즉 뒤에서 앞으로 정렬되어 렌더링됩니다. 비활성화된 경우(기본 설정)에는 인스턴스가 인스턴스 테이블에 지정된 순서대로 렌더링됩니다.

참고: 인스턴스는 서로에 대해서만 정렬됩니다. 인스턴스는 씬 내의 다른 오브젝트와 비교하여 정렬되지 않습니다.

참고: 정렬기능은 특히 인스턴스 수가 많은 경우 프레임 준비 시간을 증가시킵니다.

액세스 함수:

bool depthSortingEnabled() const
void setDepthSortingEnabled(bool enabled)

알림 신호:

void depthSortingEnabledChanged()

hasTransparency : bool

인스턴싱 테이블에 모델 렌더링 시 사용해야 할 알파 값이 포함되어 있다면 이 속성을 true로 설정하십시오. 이 속성은 모델이 불투명한 경우에만 영향을 미칩니다. 모델에 투명도 material 가 있거나 opacity 값이 1보다 작은 경우, 테이블의 알파 값이 무조건 사용됩니다.

참고: 알파 블렌딩을활성화하면 인스턴스가 겹칠 때 렌더링 문제가 발생할 수 있습니다. 자세한 내용은 알파 블렌딩 및 인스턴싱 문서를 참조하십시오.

액세스 함수:

bool hasTransparency() const
void setHasTransparency(bool hasTransparency)

알림 신호:

void hasTransparencyChanged()

instanceCountOverride : int

이 속성을 설정하면 인스턴스 테이블을 다시 생성하거나 재업로드하지 않고도 인스턴스 수를 제한할 수 있습니다. 이를 통해 렌더링되는 인스턴스 수를 매우 효율적으로 애니메이션 처리할 수 있습니다.

액세스 함수:

int instanceCountOverride() const
void setInstanceCountOverride(int instanceCountOverride)

알림 신호:

void instanceCountOverrideChanged()

[since 6.9] shadowBoundsMaximum : QVector3D

인스턴스 테이블에 있는 모델의 섀도우 맵 경계를 계산할 때 사용되는 최대 경계를 설정합니다.

기본값: (-1, -1, -1)

참고: 이 속성은 ` shadowBoundsMinimum `의 각 구성 요소가 `shadowBoundsMaximum`에 지정된 값보다 작을 때만 활성화됩니다. 그렇지 않은 경우 경계는 자동으로 계산됩니다.

이 열거형은 Qt 6.9에서 도입되었습니다.

액세스 함수:

QVector3D shadowBoundsMaximum() const
void setShadowBoundsMaximum(const QVector3D &newShadowBoundsMinimum)

알림 신호:

void shadowBoundsMaximumChanged()

shadowBoundsMinimum도 참조하십시오 .

[since 6.9] shadowBoundsMinimum : QVector3D

인스턴스 테이블에 있는 모델의 섀도우 맵 경계를 계산할 때 사용되는 최소 경계를 설정합니다.

기본값: (1, 1, 1)

참고: 이 속성은 shadowBoundsMinimum의 각 구성 요소가 ` shadowBoundsMaximum`에 지정된 값보다 작을 때만 활성화됩니다. 그렇지 않은 경우 경계는 자동으로 계산됩니다.

이 열거형은 Qt 6.9에서 도입되었습니다.

액세스 함수:

QVector3D shadowBoundsMinimum() const
void setShadowBoundsMinimum(const QVector3D &newShadowBoundsMinimum)

알림 신호:

void shadowBoundsMinimumChanged()

shadowBoundsMaximum도 참조하십시오 .

멤버 함수 문서

[static protected] QQuick3DInstancing::InstanceTableEntry QQuick3DInstancing::calculateTableEntry(const QVector3D &position, const QVector3D &scale, const QVector3D &eulerRotation, const QColor &color, const QVector4D &customData = {})

position, scale, eulerRotation, color 및 customData 를 표준 버텍스 셰이더에서 요구하는 인스턴스 테이블 형식으로 변환합니다. 일반적인 패턴:

QByteArray MyInstanceTable::getInstanceBuffer(int *instanceCount)
{
    QByteArray instanceData;

    ...

    auto entry = calculateTableEntry({xPos, yPos, zPos}, {xScale, yScale, zScale}, {xRot, yRot, zRot}, color, {});
    instanceData.append(reinterpret_cast<const char *>(&entry), sizeof(entry));

calculateTableEntryFromQuaternion도 참조하십시오 .

[static protected] QQuick3DInstancing::InstanceTableEntry QQuick3DInstancing::calculateTableEntryFromQuaternion(const QVector3D &position, const QVector3D &scale, const QQuaternion &rotation, const QColor &color, const QVector4D &customData = {})

position, scale, rotation, color 및 customData 를 표준 버텍스 셰이더에서 요구하는 인스턴스 테이블 형식으로 변환합니다.

이는 회전을 지정하는 데 쿼터니언을 사용한다는 점을 제외하면 calculateTableEntry()와 동일합니다.

[pure virtual protected] QByteArray QQuick3DInstancing::getInstanceBuffer(int *instanceCount)

인스턴스 테이블의 내용을 반환하도록 이 함수를 구현하십시오. 인스턴스 개수는 ` instanceCount`에 반환되어야 합니다. 필요한 경우 결과를 캐싱하는 것은 하위 클래스의 책임입니다. 인스턴스 테이블이 변경되면 하위 클래스는 ` markDirty()`를 호출해야 합니다.

[protected] void QQuick3DInstancing::markDirty()

인스턴스 데이터가 변경되었으므로 다시 업로드해야 함을 표시하십시오.

getInstanceBuffer 및 instanceCountOverride도 참조하십시오 .

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.