View3D QML Type
3Dシーンをレンダリングするためのビューポートを提供します。詳細...
Import Statement: | import QtQuick3D |
プロパティ
- camera : QtQuick3D::Camera
- effectiveTextureSize : size
(since 6.7)
- environment : QtQuick3D::SceneEnvironment
- explicitTextureHeight : int
(since 6.7)
- explicitTextureWidth : int
(since 6.7)
- extensions : List<QtQuick3D::Object3D>
- importScene : QtQuick3D::Node
- renderFormat : enumeration
(since 6.4)
- renderMode : enumeration
- renderStats : QtQuick3D::RenderStats
- scene : QtQuick3D::Node
メソッド
- vector3d mapFrom3DScene(vector3d scenePos)
- vector3d mapTo3DScene(vector3d viewPos)
- pickResult pick(float x, float y)
- pickResult pick(float x, float y, Model model)
(since 6.8)
- List<pickResult> pickAll(float x, float y)
(since 6.2)
- List<pickResult> pickSubset(float x, float y, list<Model> models)
(since 6.8)
- pickResult rayPick(vector3d origin, vector3d direction)
(since 6.2)
- List<pickResult> rayPickAll(vector3d origin, vector3d direction)
(since 6.2)
- setTouchpoint(Item target, point position, int pointId, bool pressed)
(since 6.8)
詳細説明
View3D は、3D シーンをレンダリングするための 2D サーフェスを提供します。このサーフェスは Qt QuickItem で、Qt Quick シーンに配置できます。
View3D の子としてNode-based アイテムの階層を直接定義すると、これが View3D の暗黙のシーンになります。
また、importScene プロパティを使用し、視覚化したいシーンのルートNode に設定することで、既存のシーンを参照することも可能です。このNode は、View3D の祖先である必要はなく、同じシーンをインポートする複数の View3D を持つことができます。
これは、View3D の例で示されています。
View3Dが両方とも子Nodes 、importScene プロパティが同時に設定されている場合、両方のシーンは、同じシーンの兄弟サブツリーであるかのようにレンダリングされます。
シーンのレンダリング方法を制御するには、environment プロパティを設定します。SceneEnvironment タイプには、背景色、トーンマッピング、アンチエイリアスなど、調整可能なビジュアルプロパティが多数あります。QtQuick3D.Helpers
モジュールのExtendedSceneEnvironment は、SceneEnvironment をさらに機能拡張し、一般的な後処理エフェクトを追加しています。
さらに、View3Dで何かをレンダリングするには、シーンにCamera 。シーンにCamera が1つしかない場合は、自動的にこれが選択されます。それ以外の場合は、camera プロパティを使用してカメラを選択できます。Camera は、シーンのどの部分が表示され、それらが2Dサーフェスにどのように投影されるかを決定します。
デフォルトでは、3Dシーンはまずオフスクリーンバッファにレンダリングされ、レンダリングが完了するとQt Quickシーンの残りの部分と合成されます。これは最大レベルの互換性を提供しますが、グラフィックス・ハードウェアによってはパフォーマンスに影響を与える可能性があります。この場合、renderMode プロパティを使用して、View3D をウィンドウにレンダリングする方法を切り替えることができます。
デフォルトの OffscreenrenderMode を持つ View3D は、暗黙的にtexture provider でもあります。つまり、ShaderEffect またはTexture.sourceItem は、すべてのアイテムが同じwindow 内にある限り、View3D を直接参照することができます。他のItem と同様に、View3D またはその祖先の 1 つを、テクスチャベースのitem layer に切り替えることも可能です。
Qt Quick 3D - View3D の例も参照してください 。
プロパティ Documentation
camera : QtQuick3D::Camera |
このプロパティは、シーンのレンダリングに使用するCamera を指定します。このプロパティが設定されていない場合、シーン内で最初に有効化されたカメラが使用されます。
注意: このプロパティにvisible 以外のカメラが含まれている場合、それ以上カメラを探す試みは行われません。
PerspectiveCamera 、OrthographicCamera 、FrustumCamera 、およびCustomCameraも参照してください 。
effectiveTextureSize : size |
このプロパティは、基礎となるカラー(および深度/ステンシル)バッファのサイズをピクセル単位で公開します。このプロパティは、GUI(メイン)スレッド、QMLバインディング、またはJavaScriptで使用するために用意されています。
これは読み取り専用のプロパティです。
注意: このプロパティは、renderMode がOffscreen
に設定されている場合にのみ関連します。
このプロパティは Qt 6.7 で導入されました。
explicitTextureWidth 、explicitTextureHeight 、DebugViewも参照してください 。
environment : QtQuick3D::SceneEnvironment |
このプロパティは、シーンのレンダリングに使用されるSceneEnvironment を指定します。
SceneEnvironmentも参照して ください。
explicitTextureHeight : int |
アイテムの関連テクスチャの高さをピクセル単位で指定します。アイテムのサイズに依存しない固定テクスチャ サイズが必要な場合に関連します。このサイズはアイテムのジオメトリ(シーン内のサイズと配置)には影響しないので、テクスチャの内容はアイテムの領域に拡大または縮小されて(場合によっては引き伸ばされて)表示されます。
デフォルトの値は0
です。値が 0 の場合、テクスチャのサイズはアイテムのサイズに従います。(texture size in pixels
=item's logical size
*device pixel ratio
) です。
注: このプロパティは、renderMode がOffscreen
に設定されている場合にのみ関係します。それ以外の場合、その値は無視されます。
このプロパティは Qt 6.7 で導入されました。
explicitTextureWidth,effectiveTextureSize,DebugViewも参照してください 。
explicitTextureWidth : int |
アイテムの関連テクスチャの幅(ピクセル単位)。アイテムのサイズに依存しない固定テクスチャサイズが必要な場合に関連します。このサイズはアイテムのジオメトリ(シーン内のサイズと配置)には影響しないので、テクスチャの内容はアイテムの領域に拡大または縮小されて(場合によっては引き伸ばされて)表示されます。
デフォルトの値は0
です。値が 0 の場合、テクスチャのサイズはアイテムのサイズに従います。(texture size in pixels
=item's logical size
*device pixel ratio
) です。
注: このプロパティは、renderMode がOffscreen
に設定されている場合にのみ関係します。それ以外の場合、その値は無視されます。
このプロパティは Qt 6.7 で導入されました。
explicitTextureHeight,effectiveTextureSize,DebugViewも参照してください 。
extensions : List<QtQuick3D::Object3D> |
このプロパティには、このView3D で使用するユーザー拡張機能のリストが含まれます。
RenderExtensionも参照して ください。
importScene : QtQuick3D::Node |
renderFormat : enumeration |
このプロパティは、バッキング・テクスチャのフォーマットを決定します。renderMode がView3D.Offscreen
であるなど、View3D がテクスチャにレンダリングされる場合にのみ適用されます。
デフォルトはShaderEffectSource.RGBA8
です。
このフォーマットが実行時に基礎となるグラフィックドライバによってサポートされていない場合、RGBA8が使用されます。
- ShaderEffectSource.RGBA8
- ShaderEffectSource.RGBA16F
- ShaderEffectSource.RGBA32F
このプロパティは Qt 6.4 で導入されました。
QtQuick::ShaderEffectSource::format とQtQuick::Item::layer.formatも参照してください 。
renderMode : enumeration |
このプロパティは、View3D が Qt Quick シーンの他の部分とどのように結合されるかを決定します。
デフォルトでは、シーンは中間ステップとしてオフスクリーンバッファにレンダリングされます。このオフスクリーンバッファは、他の Qt QuickItem のようにウィンドウ(またはレンダーターゲット)にレンダリングされます。
ほとんどのユーザーにとって、レンダリングモードを変更する必要はなく、このプロパティは無視しても問題ありません。しかし、一部のグラフィックハードウェアでは、オフスクリーンバッファの使用がパフォーマンスのボトルネックになることがあります。そのような場合は、他のモードを試す価値があるかもしれません。
定数 | 説明 |
---|---|
View3D.Offscreen | シーンは、中間ステップとしてオフスクリーンバッファにレンダリングされます。このオフスクリーンバッファは、Qt Quick シーンの残りの部分と合成されます。 |
View3D.Underlay | シーンは、Qt Quick の残りのシーンがレンダリングされる前に、ウィンドウに直接レンダリングされます。このモードでは、View3D を他の Qt Quick アイテムの上に配置することはできません。 |
View3D.Overlay | Qt Quickがレンダリングされた後、シーンがウィンドウに直接レンダリングされます。このモードでは、View3D は常に他の Qt Quick アイテムの上に置かれます。 |
View3D.Inline | View3D のシーングラフはメインのシーングラフに埋め込まれ、他の Qt QuickItem と同じ順序セマンティクスが適用されます。このモードは、奥行きベースの3Dコンテンツを2Dのシーングラフに注入するため、シーンの内容によっては微妙な問題につながる可能性があるため、特別な必要がない限り、使用することは推奨されません。 |
デフォルトはView3D.Offscreen
です。
注意: レンダリングモードを変更する場合、View3D.Offscreen
(デフォルト)は、完全なグラフィック忠実度を保証する唯一のモードであることに注意することが重要です。他のモードはすべて、視覚的な不具合を引き起こす可能性のある制限があるため、このプロパティを変更する際は、視覚的な出力が正しく見えるかどうかを確認することが重要です。
注意: Underlay、Overlay、または Inline モードを使用する場合、QQuickWindow またはQQuickView のView3D アイテムを表示する前に、QQuickGraphicsConfiguration::setDepthBufferFor2D() を使用して Qt Quick シーングラフの深度バッファの書き込みを無効にすると便利であり、場合によっては必要です。
renderStats : QtQuick3D::RenderStats |
このプロパティは、fps 、frameTime 、renderTime 、syncTime 、maxFrameTime のようなフレームのレンダリングに関する統計情報を提供します。
scene : QtQuick3D::Node |
importSceneも参照してください 。
メソッド・ドキュメント
scenePos をシーン空間(3D)からビュー空間(2D)に変換します。
返される x- 値と y- 値はビュー座標で、左上隅は [0, 0] で、右下隅は [width, height] です。返される z 値には、シーン座標における、フラストラムのクリップ近傍平面(clipNear)からscenePos までの距離が含まれます。距離が負の場合は、scenePos がアクティブカメラの後ろにあることを意味します。scenePos がシーン内の位置にマッピングできない場合は、[0, 0, 0] の位置が返されます。
この関数は、camera がビューに割り当てられていることを必要とします。
mapTo3DScene() およびCamera.mapToViewport()も参照してください 。
viewPos をビュー空間(2D)からシーン空間(3D)に変換します。
viewPos の x 値と y 値はビュー座標で、左上隅を [0, 0]、右下隅を [width, height] とします。z値は、シーン座標におけるフラストラムのクリップ近傍平面(clipNear)からの距離として解釈されます。
viewPos がシーン内の位置にうまくマッピングできない場合は、[0, 0, 0] の位置が返されます。
この関数は、camera がビューに割り当てられていることを必要とします。
mapFrom3DScene() およびCamera.mapFromViewport()も参照して ください。
pickResult pick(float x, float y) |
このメソッドは、ビュー座標x とy からシーン内にレイを「射出」し、シーン内のオブジェクトとの最も近い交点に関する情報を返します。
これは例えば、マウスカーソルの下にあるオブジェクトを見つけるためにマウス座標で呼び出すことができます。
|
このメソッドは、ビュー座標x とy からシーンにレイを "放ち"、レイと指定されたmodel との交点に関する情報を返します。
これは例えば、マウスカーソルの下にあるオブジェクトを見つけるために、マウス座標で呼び出すことができます。
このメソッドは Qt 6.8 で導入されました。
|
このメソッドは、ビュー座標x とy からシーンにレイを "放ち"、シーン内のオブジェクトとの交点に関する情報のリストを返します。返されるリストはカメラからの距離でソートされ、最も近い交差点が最初に、最も遠い交差点が最後に表示されます。
これは例えば、マウスカーソルの下にあるオブジェクトを見つけるために、マウス座標で呼び出すことができます。
このメソッドは Qt 6.2 で導入されました。
|
このメソッドは、ビュー座標x とy からシーンに光線を「射出」し、渡されたリストmodels との交点に関する情報を返します。 これは、渡されたモデルのリストに対してのみチェックします。返されるリストはカメラからの距離でソートされ、最も近い交差点が最初に、最も遠い交差点が最後に表示されます。
これは例えば、マウスカーソルの下にあるオブジェクトを見つけるために、マウス座標で呼び出すことができます。
property list<Model> と JavaScript の動的なモデル配列の両方で動作します。
このメソッドは Qt 6.8 で導入されました。
|
このメソッドは、origin 、direction からシーンにレイを "射出 "し、シーン内のオブジェクトとの最も近い交点に関する情報を返します。
例えば、シーン内の任意のオブジェクトの位置と前方ベクトルを指定して呼び出すことで、アイテムの前にあるオブジェクトを確認することができる。これにより、シーン内のどのポイントからでもピッキングが可能になります。
このメソッドはQt 6.2で導入されました。
|
このメソッドは、origin 、direction からシーンにレイを「射出」し、シーン内のオブジェクトとの最も近い交差点に関する情報のリストを返します。このリストは、方向ベクトルに沿って原点からの距離でソートされ、最も近い交差点が最初に、最も遠い交差点が最後に表示されます。
これは、例えば、シーン内の任意のオブジェクトの位置と前方ベクトルで呼び出すことができ、アイテムの前にあるオブジェクトを確認することができます。これにより、シーン内のどのポイントからでもピッキングが可能になります。
このメソッドは Qt 6.2 で導入されました。
pressed 合成タッチ イベントをtarget に送信し、IDpointId のタッチ ポイントをposition に移動します。また、pointId が以前に別のアイテムでアクティブになっていた場合は、適切なタッチ解除イベントを送信します。
このメソッドは Qt 6.8 で導入されました。
本書に含まれる文書の著作権は、それぞれの所有者に帰属します。 ここで提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。