このページでは

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)

シグナル

protected 関数

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)

Notifierシグナル:

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.