問題タブ [viewport3d]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
wpf - WPF ディスプレイ FPS
Viewport3D の FPS を表示しようとしています。
調べてみると、CompositionTarget.Rendering に出くわしましたが、これは「WPF パフォーマンス スイート」ツールで表示される FPS とは異なる結果になるようです。
CompositionTarget.Rendering を使用すると、(マウス/キーボード イベントに応答して) ビューポート カメラと対話するまで、安定した 60 fps が表示されます。その後、fps は 150 から 200 fps まで上昇しますが、「WPF パフォーマンス スイート」はツールは引き続き安定した 60 fps を表示します。
これは、「WPF パフォーマンス スイート」ツールが正確な FPS を表示するためだと思います。つまり、WPF チームが実際にバックバッファーで Present を呼び出すたびに、CompositionTarget.Rendering は内部で更新される fps ですが、実際の fps を表すものではありません。
「WPF パフォーマンス スイート」ツールに沿ったものをもっと表示したいのですが、どうすればこれを実現できますか?
次のようにCompositionTarget.Renderingを使用しています-
wpf - WindowsサービスからのViewport3dレンダリング
いくつかのレポートを生成するWPFアプリケーションがあります。このアプリケーションをWindowServiceから起動する必要があり、現在LocalSystemとして実行されているサービスから実行しています。Pie 3dを除いて、すべてのレンダリングは適切に行われ、Viewport3Dオブジェクトに表示されます。これは、動作を示すコード抽出です。
そして、これは呼び出しコードです:
そして、はい、ビューポートは適切に測定/配置されています。
3Dオブジェクトの非対話型アプリケーションからのレンダリングにいくつかの制限がありますか?私はWindows7-2008サーバー環境にいます。?回避策はありますか?
c# - Viewport3D コンテンツ サイズ
私はイメージを含む Viewport3D を持っています。これが私のコードです:
問題は、画像サイズが次のようになっていることです。
Viewport3D を使用すると、次のようになります。
誰か助けてくれませんか?
c# - wpf c# の GetEnumerator の問題
このコードを使用して、ビューポート 3d のすべてのマテリアルの色を変更したい:
しかし、エラーが発生します:
助けてください。ありがとう。
c# - C# WPF ModelVisual3D の作成に時間がかかりすぎて、別のスレッドで実行できない
私はかなり大きなオブジェクトを作成するWPFプロジェクト(VS2010
、 )を持っています(カスタムフォーマットファイルからの読み取り、情報の処理、メッシュの作成など)。これには約3〜4秒かかります。作成され、さらに2〜3秒。すること。これをすべてカスタム クラスで行い、次のメソッドを呼び出します。.NET4.0
ModelVisual3D
STL
mainViewport.Children.Add(ModelVisual3D)
戻り値も、私が作成したカスタム クラスです。
私がやりたいのは、プログラムの最初に次の1回だけです。
メイン スレッドで実行すると、UI がハングします。ワーカー スレッドで実行して呼び出すmainViewport.Children.Add(...)
と、そのワーカー スレッドで作成されたリソースにアクセスできないと表示されます。ヘルプ?!
私が理解していることから、2 つのスレッドとそれぞれに属するリソースがあるところまで来ました ( mainViewport => UIThread & myModel => WorkerThread
)。どちらのスレッドも他のリソースに直接アクセスできませんが、UIThread で myModel を作成して使用するとハングします... UI から十分な応答性を得たいだけなので、ユーザーはプログラムがモデルをロードするのを待っている間にプログラムを最小化できます、 これ以上何もない。どうやってやるの?UIThread ですべての CPU 負荷の高い作業を行う方法はありますか?リソースの競合が発生せず、その時間の UI のみを処理するワーカー スレッドを持つことはありませんか?
BackgroundWorker
PS:スレッドとTask<TResult>
クラスで試しました。同じとは言わないまでも、結果は似ていました。
PPS: フルバージョンでは、30 ~ 40 秒以上ロードされる大規模なモデルがロードされます...
wpf - 3D オブジェクト データを別の XAML ファイルに移動する
複雑な 3D モデルが定義されているビューの XAML ファイルがあります。問題は、モデルを定義する部分が非常に大きく、0.5 MB を超え、ファイルを参照するのが非常に難しいことです。たとえば、Model3DGroup
別のファイルに移動して、それをメインの XAML ファイルに含める方法はありますか? ルートとしてファイルを作成するSketchUpからXAMLへのコンバーターを使用している<Model3DGroup xmlns="..." xmlns:x="...">
ため、便利な方法で実行できるとほぼ確信しています。
現在の XAML ファイルは次のようになります。
そして、私はこのようなことを達成したい:
@編集
McGarnagle の回答は一般的には問題ありませんが、私の場合DataTemplate
、UserControl.Resources
. このため、次のような構造を作成する必要がありました。
c# - ViewPort3D の外側の RenderTargetBitmap および Viewport3D レンダリング マージン
奇妙な問題ですが、RenderTargetBitmap 関数が ViewPort3D の左側の余白をレンダリングしていることがわかりました。ビットマップ (この場合は PNG) を保存すると、最終イメージの左側にギャップがあり、右側が同じ量だけ切り取られます。ViewPort3D のサイズは、高さ 550 ピクセル、幅 1024 ピクセルです。RenderTargetBitmap メソッドで同じ寸法を使用します。なぜ定義された境界の外に出るのか、私は困惑しています。
そして背後にあるコード (VB で - 申し訳ありません):
それが入っているコンテナ(グリッド)が問題かもしれないと思っています。
c# - wpf 3D グラフィックスを使用して 3D モデルを 3D メッシュ オブジェクトとして表示する
C# .Net
3DWpf
グラフィックスを備えたプラットフォームで作業しています。コードの流れは次のとおりです。
1) kinect から深度データを取得し、3D ポイントを計算する 1 つの関数に渡します。
プライベート ボイド display3DView()
2) カメラ パラメーターと Kinect カメラの深度データを使用して 3D ポイントを計算しました
private Point3DCollection Calculate_PointCloud(float[,] ImageArray) {
3)ここでは、各 3D ポイントの法線情報を使用して三角形のセットに変換し、それらの三角形を 3D メッシュ オブジェクトに与え、viewport3D コントロールを使用して 3D メッシュ オブジェクトをレンダリングします。
private void viewModel(Point3DCollection ポイント)
4) これは、3 つの 3D ポイントを取得し、各 3D ポイントの法線を計算して三角形として 3D メッシュ オブジェクトに追加する関数です。
5) これが私の XAML コードです
幅="967" 背景="黒" />
問題は、Wpf Screen に表示された 3D モデルを取得できないことです。コード全体を確認できる人はいますか? どこが間違っているのかを理解させますか?同様に、修正を提案してください。前もって感謝します
c# - バックグラウンドにヒットしたときに Viewport3D マウス イベントが発生しない
MouseEventHandler を使用して Viewport3D をセットアップしました
そして、オブジェクトがクリックされると、かなりうまく機能します。私の期待は次のとおりです。オブジェクトがクリックされない場合 (ユーザーがバックグラウンドでクリックしたため)、結果は null になります。しかし、実際には mainViewport_MouseUp メソッドは呼び出されません。
私の質問: Viewport3D の背景でクリックを検出するにはどうすればよいですか?