QQuick3DInstancing Class
インスタンス・テーブルを定義するための基底クラス。詳細...
Header: | #include <QQuick3DInstancing> |
Since: | Qt 6.2 |
In QML: | Instancing |
Inherits: | QQuick3DObject |
プロパティ
- depthSortingEnabled : bool
- hasTransparency : bool
- instanceCountOverride : int
パブリック機能
bool | depthSortingEnabled() const |
bool | hasTransparency() const |
int | instanceCountOverride() const |
パブリックスロット
void | setDepthSortingEnabled(bool enabled) |
void | setHasTransparency(bool hasTransparency) |
void | setInstanceCountOverride(int instanceCountOverride) |
シグナル
void | depthSortingEnabledChanged() |
void | hasTransparencyChanged() |
void | instanceCountOverrideChanged() |
保護された関数
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シーンの Model のカスタムインスタンステーブルを指定するために継承することができます。
このクラスは抽象です:これを使用するには、サブクラスを作成し、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() |
メンバー関数ドキュメント
[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も参照のこと 。
© 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.