このページでは

View3D QML Type

3Dシーンをレンダリングするためのビューポートを提供します。詳細...

Import Statement: import QtQuick3D
Inherits:

Item

プロパティ

方法

  • pickResult closestPointPick(vector3d origin, float radius, Model model) (since 6.11)
  • 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<Object3D> pickInRect(point start, point end) (since 6.11)
  • List<pickResult> pickSubset(float x, float y, list<Model> models) (since 6.8)
  • pickResult rayPick(vector3d origin, vector3d direction) (since 6.2)
  • pickResult rayPick(vector3d origin, vector3d direction, Model model) (since 6.11)
  • List<pickResult> rayPickAll(vector3d origin, vector3d direction) (since 6.2)
  • void setTouchpoint(Item target, point position, int pointId, bool pressed) (since 6.8)

詳細説明

View3Dは、3Dシーンをレンダリングできる2Dサーフェスを提供します。このサーフェスはQt Quick Item であり、Qt Quick シーン内に配置することができます。

View3D上で可視化される3Dシーンを定義するには、2つの方法があります。Node-based 項目の階層をView3Dの子として直接定義すると、それがView3Dの暗黙のシーンとなります。

また、importScene プロパティを使用して、可視化したいシーンのルートNode を指定することで、既存のシーンを参照することも可能です。このNode はView3Dの祖先である必要はなく、同じシーンをインポートするView3Dを複数持つこともできます。

この動作は、View3Dのサンプルで実証されています。

View3Dに子Nodes が存在し、かつimportScene プロパティが同時に設定されている場合、両方のシーンは、あたかも同じシーン内の兄弟サブツリーであるかのようにレンダリングされます。

シーンのレンダリング方法を制御するには、environment プロパティを設定します。SceneEnvironment 型には、背景色、トーンマッピング、アンチエイリアシングなど、調整可能な視覚的なプロパティが多数あります。QtQuick3D.Helpers モジュール内のExtendedSceneEnvironment は、SceneEnvironment を拡張してさらに多くの機能を備え、一般的なポストプロセッシング効果を追加しています。

Camera さらに、View3Dに何かをレンダリングするためには、シーンにCamera が必要です。シーン内にCamera が1つしかない場合は、これが自動的に選択されます。それ以外の場合は、camera プロパティを使用してカメラを選択できます。 は、シーンのどの部分が可視となるか、またそれらが2D表面にどのように投影されるかを決定します。

デフォルトでは、3Dシーンはまずオフスクリーンバッファにレンダリングされ、レンダリング完了後にQt Quick シーンの他の部分と合成されます。これにより最大限の互換性が確保されますが、一部のグラフィックスハードウェアではパフォーマンスに影響が出る可能性があります。その場合は、renderMode プロパティを使用して、View3Dがウィンドウにレンダリングされる方法を切り替えることができます。

デフォルトのオフスクリーンrenderMode を持つView3Dは、暗黙的にtexture provider でもあります。つまり、すべてのアイテムが同じwindow 内に存在している限り、ShaderEffect やTexture.sourceItem からView3Dを直接参照することができます。他のItem と同様に、View3Dまたはその祖先オブジェクトのいずれかを、テクスチャベースのitem layer に変更することも可能です。

Qt Quick 3D - View3D の例も参照してください 。

プロパティのドキュメント

camera : QtQuick3D::Camera

このプロパティは、シーンのレンダリングに使用するCamera を指定します。このプロパティが設定されていない場合、シーン内で最初に有効になっているカメラが使用されます。

注: 自動カメラ選択に依存するのではなく、このプロパティを明示的に設定することを強く推奨します 。シーンに複数のカメラが存在する場合、自動選択ではどのカメラが選択されるかが保証されません。layers を使用する場合、カメラを明示的に指定することで、シーンノードの不要な再評価も回避できます。

注: このプロパティにvisible ではないカメラが含まれている場合 、それ以上のカメラの検索は行われません。

関連項目: PerspectiveCamera 、OrthographicCamera 、FrustumCamera 、およびCustomCamera 。

effectiveTextureSize : size [since 6.7]

このプロパティは、基になるカラー(および深度/ステンシル)バッファのサイズ(ピクセル単位)を取得します。これは、GUI(メイン)スレッド、QMLバインディング、またはJavaScriptでの使用を目的として提供されています。

これは読み取り専用のプロパティです。

注:この プロパティは、renderMode がOffscreen に設定されている場合にのみ有効です。

このプロパティは Qt 6.7 で導入されました。

関連項目: explicitTextureWidth 、explicitTextureHeight 、およびDebugView 。

environment : QtQuick3D::SceneEnvironment

このプロパティは、シーンのレンダリングに使用されるSceneEnvironment を指定します。

注: このプロパティを「null 」に設定すると 、「SceneEnvironment 」がデフォルト値にリセットされます。

「SceneEnvironment」も参照してください 。

explicitTextureHeight : int [since 6.7]

アイテムに関連付けられたテクスチャの高さ(ピクセル単位)。 アイテムのサイズに依存しない固定のテクスチャサイズを設定したい場合に適用されます。このサイズはアイテムのジオメトリ(シーン内でのサイズや配置)には影響を与えないため、テクスチャの内容はアイテムの領域に合わせて拡大・縮小(場合によっては引き伸ばし)されて表示されます。

デフォルトの値は `0` です。値が 0 の場合、テクスチャのサイズはアイテムのサイズに連動します(`texture size in pixels =item's logical size *device pixel ratio`)。

注:この プロパティは、renderMode がOffscreen に設定されている場合にのみ有効です。それ以外の場合は、その値は無視されます。

このプロパティは Qt 6.7 で導入されました。

関連項目: explicitTextureWidth 、effectiveTextureSize 、およびDebugView 。

explicitTextureWidth : int [since 6.7]

アイテムに関連付けられたテクスチャの幅(ピクセル単位)。 アイテムのサイズに依存しない固定のテクスチャサイズを設定したい場合に適用されます。このサイズはアイテムのジオメトリ(シーン内でのサイズや配置)には影響を与えないため、テクスチャの内容はアイテムの領域に合わせて拡大・縮小(場合によっては引き伸ばし)されて表示されます。

デフォルトの値は `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

このプロパティは、ビューポートにレンダリングするシーンの参照ノードを定義します。このノードは、View3D の子ノードである必要はありません。この参照ノードは、View3D に子ノードが存在する場合、それらの子ノードと同階層のノードとなります。

注:シーンの 共有は、同じwindow 内にあるView3D アイテム間でのみ可能です。

注: 複数のView3D アイテム間でシーンを共有する場合、 インポートされるシーンは全体としてインポートされる必要があります。つまり、シーンのサブツリーのみをインポートすることはサポートされていません。複数のView3Dで同じ共有シーンの異なる部分を表示する必要がある場合は、代わりにlayers の使用を検討してください。

注:この プロパティは 一度のみ設定可能であり、その後の変更は反映されません。

また、Node-based 項目の階層をView3D の子として直接定義することも可能です。その場合、その階層がView3D の暗黙のシーンとなります。

View3D の現在のシーンを取得するには、scene プロパティを使用します。

「Node」も参照してください 。

renderFormat : enumeration [since 6.4]

このプロパティは、バッキングテクスチャのフォーマットを決定します。これは、View3D がテクスチャにレンダリングする場合(たとえば、renderMode がView3D.Offscreen に設定されている場合など)にのみ適用されます。

デフォルトはShaderEffectSource.RGBA8 です。

実行時に、基盤となるグラフィックスドライバがこのフォーマットをサポートしていない場合は、RGBA8が使用されます。

このプロパティは Qt 6.4 で導入されました。

QtQuick::ShaderEffectSource::format およびQtQuick::Item::layer.formatも参照してください 。

renderMode : enumeration

このプロパティは、View3D がQt Quick シーンの他の部分とどのように組み合わされるかを決定します。

デフォルトでは、シーンは中間処理としてオフスクリーンバッファにレンダリングされます。その後、このオフスクリーンバッファは、他のQt Quick と同様にウィンドウ(またはレンダリングターゲット)にレンダリングされます。Item

ほとんどのユーザーにとっては、レンダリングモードを変更する必要はなく、このプロパティは無視しても問題ありません。しかし、一部のグラフィックスハードウェアでは、オフスクリーンバッファの使用がパフォーマンスのボトルネックになる場合があります。その場合は、他のモードを試してみる価値があるかもしれません。

定数説明
View3D.Offscreenシーンは中間段階としてオフスクリーンバッファにレンダリングされます。その後、このオフスクリーンバッファはQt Quick シーンの残りの部分と合成されます。
View3D.Underlayシーンは、Qt Quick の残りの部分がレンダリングされる前に、ウィンドウに直接レンダリングされます。このモードでは、View3D を他のQt Quick アイテムの上に配置することはできません。
View3D.Overlayこのモードでは、Qt Quick のレンダリング後にシーンがウィンドウに直接レンダリングされます。このモードでは、View3D は常に他のQt Quick アイテムよりも最前面に表示されます。
View3D.InlineView3D のシーングラフはメインのシーングラフに埋め込まれ、他のQt Quick やItem と同様に順序付けのセマンティクスが適用されます。 このモードでは、2D シーングラフに深度ベースの 3D コンテンツが挿入されるため、シーンの内容によっては微妙な問題が生じる可能性があるため、特別な必要がない限り、このモードの使用は推奨されません。

デフォルトはView3D.Offscreen です。

注: レンダリングモードを変更する際 、View3D.Offscreen (デフォルト)だけが完全なグラフィックの忠実度を保証する唯一のモードであることに注意してください。他のモードにはすべて、視覚的な不具合を引き起こす可能性のある制限があるため、このプロパティを変更する際は、視覚的な出力が依然として正しく表示されていることを確認することが重要です。

注: Underlay、Overlay、またはInlineモードを使用する場合 、View3D アイテムをホストするQQuickWindow またはQQuickView を表示する前に、QQuickGraphicsConfiguration::setDepthBufferFor2D() を使用して、Qt Quick シーングラフの深度バッファへの書き込みを無効にすることが有用であり、場合によっては必須となります。

renderOverrides : enumeration

Qt Quick 3D のレンダリング方法を制御します。

定数説明
View3D.Noneレンダリングは通常通り行われます。内部パスは、アプリケーションで使用される機能に応じてスケジュールされます。
View3D.DisableInternalPassesQt Quick 3Dの内部レンダリングパスを無効にします。このモードに設定すると、最終フレームの生成と表示はアプリケーションの責任となります。通常、これにはカスタムユーザーパスの実装や、SimpleQuadRenderer またはカスタムrender extension を使用して結果をビューポートに表示することが含まれます。

renderStats : QtQuick3D::RenderStats [read-only]

このプロパティは、fps 、frameTime 、renderTime 、syncTime 、maxFrameTime など、フレームのレンダリングに関する統計情報を提供します。

scene : QtQuick3D::Node [read-only]

View3D のシーンのルートNode を返します。

View3D で表示される3Dシーンを定義するには:

  • 「View3D 」の直子として「Node-based 」項目の階層を定義すると、これが「View3D 」の暗黙のシーンとなります。
  • importScene プロパティを使用して既存のシーンを参照し、視覚化したいシーンのルートNode に設定します。このNode は、View3D の親オブジェクトである必要はなく、同じシーンをインポートするView3Dを複数持つことも可能です。

importSceneも参照してください 。

メソッドのドキュメント

[since 6.11] pickResult closestPointPick(vector3d origin, float radius, Model model)

このメソッドは、model の表面上で、origin に最も近く、かつ距離がradius 以内にある点を検索します。model がnull である場合、radius 内の最も近いオブジェクトが検索されます。

そのようなオブジェクトが存在しない場合、null が返されます。

このメソッドは Qt 6.11 で導入されました。

vector3d mapFrom3DScene(vector3d scenePos)

scenePos をシーン空間(3D)からビュー空間(2D)に変換します。

返される x および y の値はビュー座標系での値となり、左上隅は [0, 0]、右下隅は [width, height] となります。 返される z 値には、シーン座標系における、フラスタムの近接クリップ面 (clipNear) からscenePos までの距離が含まれます。距離が負の場合、scenePos がアクティブなカメラの後方にあることを意味します。scenePos をシーン内の位置にマッピングできない場合、位置 [0, 0, 0] が返されます。

この関数を使用するには、camera がビューに割り当てられている必要があります。

mapTo3DScene() およびCamera.mapToViewport()も参照してください 。

vector3d mapTo3DScene(vector3d viewPos)

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 からシーン内に光線を「照射」し、シーン内のオブジェクトとの最も近い交点に関する情報を返します。

たとえば、マウス座標を指定してこの関数を呼び出すことで、マウスカーソルの下にあるオブジェクトを見つけることができます。

また、マテリアルのcull mode によってレンダリング時に除外された三角形も選択されないため、レイに沿って実際に見えるジオメトリのみが報告されます。

pickAll()、pickSubset()、およびpickInRect()も参照してください 。

[since 6.8] pickResult pick(float x, float y, Model model)

このメソッドは、ビュー座標x およびy からシーン内にレイを「発射」し、そのレイと指定されたmodel との交点に関する情報を返します。

例えば、マウス座標を指定してこのメソッドを呼び出すことで、マウスカーソルの下にあるオブジェクトを特定することができます。

このメソッドは Qt 6.8 で導入されました。

pickAll()、pickSubset()、およびpickInRect()も参照してください 。

[since 6.2] List<pickResult> pickAll(float x, float y)

このメソッドは、ビュー座標x およびy からシーン内にレイを「発射」し、シーン内のオブジェクトとの交差に関する情報のリストを返します。返されるリストはカメラからの距離順にソートされており、最も近い交点が最初に、最も遠い交点が最後に表示されます。

例えば、マウス座標を引数としてこのメソッドを呼び出すことで、マウスカーソルの下にあるオブジェクトを見つけることができます。

このメソッドは Qt 6.2 で導入されました。

pick()、pickSubset()、およびpickInRect()も参照してください 。

[since 6.11] list<Object3D> pickInRect(point start, point end)

このメソッドは、ビュー座標におけるstart およびend の座標で定義される矩形領域内のすべてのオブジェクトを選択します。

指定された矩形内に存在するオブジェクトのリストを返します。これは、ユーザーが矩形をドラッグして複数のオブジェクトを選択する「マーキー選択」に使用できます。

このメソッドは Qt 6.11 で導入されました。

pick()、pickAll()、およびpickSubset()も参照してください 。

[since 6.8] List<pickResult> pickSubset(float x, float y, list<Model> models)

このメソッドは、ビュー座標x およびy からシーン内にレイを「照射」し、渡されたリストmodels との交差に関する情報を返します。これは、渡されたモデルのリストとのみ照合を行います。返されるリストはカメラからの距離順にソートされ、最も近い交差点が先頭に、最も遠い交差点が最後に表示されます。

例えば、マウス座標を引数として呼び出すことで、マウスカーソルの下にあるオブジェクトを特定することができます。

`List<Model>` プロパティおよびモデルの動的な JavaScript 配列の両方で動作します。

このメソッドは Qt 6.8 で導入されました。

pick()、pickAll()、およびpickInRect()も参照してください 。

[since 6.2] pickResult rayPick(vector3d origin, vector3d direction)

このメソッドは、origin を起点とし、direction の方向にシーン内にレイを「発射」し、シーン内のオブジェクトとの最も近い交点に関する情報を返します。

たとえば、シーン内の任意のオブジェクトの位置と前方ベクトルを引数としてこのメソッドを呼び出すことで、あるアイテムの正面にあるオブジェクトを確認することができます。これにより、シーン内の任意の点からピッキングを行うことが可能になります。

また、マテリアルのcull mode によってレンダリング時に除外された三角形もピック対象外となるため、光線に沿って実際に可視であるジオメトリのみが報告されます。

このメソッドは Qt 6.2 で導入されました。

[since 6.11] pickResult rayPick(vector3d origin, vector3d direction, Model model)

このメソッドは、origin を起点とし、direction の方向にシーン内にレイを「発射」し、そのレイと指定されたmodel との交点に関する情報を返します。

このメソッドは Qt 6.11 で導入されました。

[since 6.2] List<pickResult> rayPickAll(vector3d origin, vector3d direction)

このメソッドは、origin を起点とし、direction の方向にシーン内に光線を「照射」し、シーン内のオブジェクトとの最も近い交点に関する情報のリストを返します。このリストは、原点からの距離(方向ベクトルに沿った距離)に基づいて事前にソートされており、最も近い交点が先頭に、最も遠い交点が末尾に表示されます。

例えば、シーン内の任意のオブジェクトの位置と前方ベクトルを引数としてこのメソッドを呼び出すことで、そのオブジェクトの正面にどのようなオブジェクトがあるかを確認できます。これにより、シーン内の任意の点からピッキングを行うことが可能になります。

このメソッドは Qt 6.2 で導入されました。

[since 6.8] void setTouchpoint(Item target, point position, int pointId, bool pressed)

target に対して合成タッチイベントを送信し、IDpointId のタッチポイントをposition へ移動させます。この際、pressed によって、そのポイントが押されているかどうかが判定されます。また、以前に別のアイテムでpointId がアクティブだった場合は、適切なタッチ解除イベントも送信されます。

このメソッドは Qt 6.8 で導入されました。

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