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) |
シグナル
| void | depthSortingEnabledChanged() |
| void | hasTransparencyChanged() |
| void | instanceCountOverrideChanged() |
| void | shadowBoundsMaximumChanged() |
| void | shadowBoundsMinimumChanged() |
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.