7

多くのことを実行する大きなWPFアプリでワイヤーフレーム3Dレンダラーを作成する必要がありますが、WPFにはこれを実行するネイティブ機能がありません。

一部の人々は、Microsoftの「3DTools for WPF」、特にそのScreenSpaceLines3Dクラスを使用しています。しかし、Webには、パフォーマンスの低下やそのクラスのさまざまなバグに関する苦情があり、クラスライブラリは2007年以降維持されていないようです。

他の人はHelix3DツールキットからLinesVisual3Dクラスを提案しましたが、明らかにそれもバグがあります(http://helixtoolkit.codeplex.com/workitem/9957

Charles Petzoldには3Dライブラリがあります-それが適度に堅牢であることを誰かが知っていますか?

だから私はここに何か良い選択肢がありますか?たとえば、WPFウィンドウでOpenGL3Dを実行する良い方法はありますか?これを確実に実行できる他の優れたWPFライブラリはありますか?

前もって感謝します。

4

3 に答える 3

3

SlimDXをチェックしてください。XNAやManagedDirectXなどは非推奨または古いものです。おそらくSharpDXもチェックしてください。しばらくチェックしていません。.NETのDirectXにはSlimDXを使用しており、それは良いことです。おそらくあなたが見ているのは、SlimDXを使用してWPF相互運用機能用のD3DImageでレンダリングすることです。別の可能なオプションは、ホストされたWinFormsコントロールを使用し、そのハンドルを使用してDirectXとSlimDXとの相互運用を行うことです。これは高速かもしれませんが、WPFのレンダリングエンジンなどとの相互運用が簡単に失われます。D3DImageを使用すると、ImageBrushになります。何かの背景として設定され、空域の問題などを心配する必要はありません。

編集:そうそう、何らかの理由でSlimDXにはダウンロードにサンプルが含まれていませんが、ダウンロードするとソースコードにサンプルが含まれます。

于 2012-10-30T08:22:04.963 に答える
2

このページには、OpenGLの使用に関する情報があるようです。Microsoftは、Direct3dとXNAの使用についても言及しています。XNAは非常に使いやすく、OpenGLをすでに知っている場合は、Direct3dの学習にそれほど問題はないでしょう。私がDirect3dを学んだとき、その上の資料はOpenGLの資料ほど良くなかったことを認めます。

于 2012-10-29T19:41:21.003 に答える
0

この問題のサードパーティの解決策について言及している多くの返信を見てきました。

純粋なWPFソリューションの場合、既存のModel3Dから新しいModel3Dを作成します。ここで、各ファセットに穴が作成されます。つまり、6つの新しいファセットに分割され、各「線」の幅は元のファセットサイズに比例します。

この理由は、固定線幅よりも見栄えが良いためですが、必要に応じて固定線幅を使用できます。

必要に応じて、中央の穴を新しいファセットとして黒で塗りつぶし(グループ内のModel3Dを分離)、隠線を削除します。

ファセットの3つのポイント、A0、B0、およびC0について、AB、AC、およびBCの中点を計算します。新しいポイントA1は、BCに向かう線に沿って1/20です。次の2つのポイントB1とC1について繰り返します。

「線」の6つの新しいファセットは、次の組み合わせで表されます。

A0、B0、B1
A0、B1、A1
A0、C1、C0
A0、A1、C1
B0、C0、C1
B0、C1、B1

隠線除去バリアントの別のモデルにA1、B1、およびC1を追加します。

于 2015-07-10T03:30:48.670 に答える