QQuick3DInstancing Class

인스턴스 테이블을 정의하기 위한 베이스 클래스입니다. 더 보기...

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

속성

공용 기능

bool depthSortingEnabled() const
bool hasTransparency() const
int instanceCountOverride() const

공용 슬롯

void setDepthSortingEnabled(bool enabled)
void setHasTransparency(bool hasTransparency)
void setInstanceCountOverride(int instanceCountOverride)

신호

보호된 함수

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 또는 1보다 작은 opacity 이 있는 경우 테이블의 알파 값에 관계없이 테이블의 알파 값이 사용됩니다.

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

함수 액세스:

bool hasTransparency() const
void setHasTransparency(bool hasTransparency)

알림 신호:

void hasTransparencyChanged()

instanceCountOverride : int

인스턴스 테이블을 재생성하거나 다시 업로드하지 않고 인스턴스 수를 제한하려면 이 속성을 설정합니다. 이를 통해 렌더링되는 인스턴스 수를 매우 저렴하게 애니메이션할 수 있습니다.

함수 액세스:

int instanceCountOverride() const
void setInstanceCountOverride(int instanceCountOverride)

알림 신호:

void instanceCountOverrideChanged()

멤버 함수 문서

[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 colorcustomData 를 표준 버텍스 셰이더에서 예상하는 인스턴스 테이블 형식으로 변환합니다.

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

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

이 함수를 구현하여 인스턴스 테이블의 내용을 반환합니다. 인스턴스 수는 instanceCount 로 반환되어야 합니다. 서브클래스는 필요한 경우 결과를 캐싱할 책임이 있습니다. 인스턴스 테이블이 변경되면 서브클래스는 markDirty()를 호출해야 합니다.

[protected] void QQuick3DInstancing::markDirty()

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

getInstanceBufferinstanceCountOverride참조하세요 .

© 2025 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.