WPF 3D 科学チャート:

Surface・Contour・Heatmap 比較

3D surface chart
contour plot
scientific chart
3D waterfall
GPU 3D chart
4D visualization
contour heatmap
Delaunay triangulation

3D 科学チャート:
1つの共有データポインタから GPU サーフェス、コンター、ヒートマップ、ウォーターフォールをレンダリング

科学的可視化では、同じデータの2つのビューが頻繁に必要になります: 地形を示す 3D サーフェスと、正確な値の分布を示す 2D コンター ヒートマップです。ほとんどのチャートライブラリは、これらを完全に別々のチャートタイプとして扱います — 別々のデータストア、別々のレンダリング パイプライン、別々のメモリ割り当てで。ProEssentials は根本的に異なることをします — 同じ GPU コンピュートシェーダー パイプラインから、同じデータポインタを読み、追加メモリゼロで両方のビューをレンダリングするのです。

このページでは、5つの WPF ライブラリすべての 3D・2D 科学チャート機能を比較し、共有メモリ アーキテクチャを実証する材料表面スキャン アプリケーションの実際の本番コードをウォークスルーし、ProEssentials だけが提供するチャートタイプ — 値で色分けする 4D サーフェス、ポイントクラウドからの組み込み Delaunay 三角形分割、任意の 3D ジオメトリのためのカスタム ポリゴンデータ — を詳述します。

See first hand the benefit of zero-copy shared-memory: clone, build, run the 3d plus 2d material surface scan demo on GitHub.


3D scientific charting — synchronized 3D surface, 2D contour heatmap, and cross-section charts, GPU compute shaders
ProEssentials — synchronized 3D Surface + 2D Contour + cross-section, Direct3D ComputeShader
3D・2D 科学チャートタイプ マトリクス

下の表は、5つの WPF ライブラリすべての科学チャートタイプを比較します。SciChart と LightningChart は13タイプ中12と強力な 3D カバレッジを提供しますが、どちらもポイントクラウドからの Delaunay 三角形分割は提供しません。Syncfusion は SfSurfaceChart と SfChart3D コントロールで7タイプをカバー。DevExpress は Chart3DControl で5タイプ。以下に挙げる13のチャートタイプすべてをカバーするのは ProEssentials だけです — そして、サーフェス、コンター、ヒートマップ、リアルタイム 3D にわたる GPU コンピュートシェーダー レンダリングを持つのも唯一です。

Chart TypeProEssentialsSciChartLightningChartSyncfusionDevExpress
3-D Surface (shaded)✅ GPU compute shader
3-D Wireframe✅ GPU compute shader
3-D Surface + Contour overlay✅ GPU compute shader
3-D Scatter
3-D Bar
3-D Waterfall
2-D Contour / Heatmap (GPU)✅ GPU compute shader✅ Heatmap
2-D Contour Lines
4-D (XYZ + W-data / color)✅ GPU compute shader
Delaunay triangulation✅ Built-in from point cloud
Custom polygon data (3-D geometry)✅ Raw vertices + color
Real-time 3-D✅ GPU compute shader
3-D annotations (XYZ positioned)✅ Text, symbol, polygon

ProEssentials は、この比較の13の科学チャートタイプすべてをサポートします。SciChart と LightningChart はそれぞれ12、Syncfusion は7、DevExpress は5です。5つのライブラリすべてが何らかの 3D サーフェス チャートを提供しますが、ポイントクラウドからの組み込み Delaunay 三角形分割を提供するのは ProEssentials だけであり、サーフェス、コンター、ヒートマップ、リアルタイム 3D を、ゼロコピー共有メモリ付きの統一 GPU コンピュートシェーダー パイプラインでレンダリングするのも ProEssentials だけです。

実世界のコード: 材料表面スキャン アプリケーション

以下のコード抜粋は GigaPrime3D 材料表面スキャン デモからのものです — 高解像度のサーフェススキャン データ(最大6000×6000グリッド、3,600万データポイント)を 3D シェーディング サーフェスと 2D コンター ヒートマップとして同時にレンダリングする、本番品質の WPF アプリケーションです。これは簡略化したチュートリアル例ではありません。産業計測、半導体ウェハー検査、地形解析アプリケーションで使われるコードパターンです。以下の3つのスニペットは、共有メモリの宣言、GPU コンピュートシェーダーによる二重のゼロコピー データ読み込み、そして 2D と 3D ビュー間の連動ズーム同期を実演します。

ステップ1: 共有静的メモリ — 1つの配列、2つのチャート

アプリケーションは、3,600万の標高値 — サーフェススキャンの Y(高さ)データ — を収められる単一の静的 float 配列(sMyYData)を割り当てます。X と Z の配列は、それぞれ列と行のグリッド座標を保持します。この3つの配列が、アプリケーション全体で唯一のデータストレージです。どのチャートコントロールも、自分のコピーを割り当てることは決してありません。

// 36M points × 4 bytes = ~150 MB
// Passing shared app memory to both Pe3do and Pesgo saves ~150 MB
// Always best to save memory where we can
private static float[] sMyXData = new float[6000];       // cols max
private static float[] sMyZData = new float[6000];       // rows max
private static float[] sMyYData = new float[36000000];   // rows × cols max

// Pin smaller arrays (< 85 KB) so GC won't relocate them
private GCHandle _pinXHandle;
private GCHandle _pinZHandle;

public MainWindow()
{
    _pinXHandle = GCHandle.Alloc(sMyXData, GCHandleType.Pinned);
    _pinZHandle = GCHandle.Alloc(sMyZData, GCHandleType.Pinned);
    // ...
}

小さい X と Z の配列(各85 KB 未満)は、ガベージコレクターによる再配置を防ぐため GCHandle でピン留めされます。大きな Y 配列(最大144 MB)は Large Object Heap 上にあり、そもそも GC によって移動されることがないため — ピン留めは不要です。これは実際の本番コードで重要になるディテールです: ゼロコピー チャートに必要なレベルで .NET のメモリ管理を理解していることの証です。

ステップ2: 両ビューに GPU コンピュートシェーダー + ゼロコピー

ユーザーが新しいサーフェススキャン ファイルを読み込むと、RefreshUi メソッドが共有配列にデータを投入し、同じポインタを両方のチャートコントロールへ渡します。決定的な行は UseDataAtLocation() — コピーの代わりにポインタを保持 — と ComputeShader = true — GPU 側のシーン構築を起動 — です。Pesgo の 2D コンターチャートが、Pe3do の 3D サーフェスと同じ ComputeShader プロパティと同じ UseDataAtLocation 呼び出しパターンを使っていることに注目してください:

// ─── 3-D Surface (Pe3do) ─── GPU compute shader + zero-copy ───
Chart3DSurface.PeData.Subsets = _rows;
Chart3DSurface.PeData.Points  = _cols;
Chart3DSurface.PeData.DuplicateDataX = DuplicateData.PointIncrement;
Chart3DSurface.PeData.DuplicateDataZ = DuplicateData.SubsetIncrement;
Chart3DSurface.PeData.ComputeShader  = true;  // GPU-side scene construction

// No data transfer — chart reads your array via pointer
Chart3DSurface.PeData.X.UseDataAtLocation(sMyXData, _cols);
Chart3DSurface.PeData.Y.UseDataAtLocation(sMyYData, size);
Chart3DSurface.PeData.Z.UseDataAtLocation(sMyZData, _rows);

// ─── 2-D Contour (Pesgo) ─── same GPU pipeline, same pointer ───
Chart2DContour.PeData.Subsets = _rows;
Chart2DContour.PeData.Points  = _cols;
Chart2DContour.PeData.DuplicateDataX = DuplicateData.PointIncrement;
Chart2DContour.PeData.DuplicateDataY = DuplicateData.SubsetIncrement;
Chart2DContour.PeData.ComputeShader  = true;  // same GPU path as 3-D

// Same shared memory — no copy, no duplication
Chart2DContour.PeData.X.UseDataAtLocation(sMyXData, _cols);
Chart2DContour.PeData.Z.UseDataAtLocation(sMyYData, size);
Chart2DContour.PeData.Y.UseDataAtLocation(sMyZData, _rows);

Chart2DContour.PePlot.Method = SGraphPlottingMethod.ContourColors;

両チャートはいま sMyXData、sMyYData、sMyZData — 同じ静的配列 — から読んでいます。3D サーフェスと 2D コンターは、同一データの GPU レンダリングされた2つのビューです。ソース配列を変更して両コントロールで ReinitializeResetImage() を呼べば、両ビューが瞬時に更新されます。軸マッピングの違いに注意: Pe3do は Y を標高、Z を奥行きとして使い、Pesgo は Z をコンター値、Y を空間軸として使います。UseDataAtLocation はどちらの場合もポインタの間接参照を処理します。

ステップ3: 連動ズーム — 2D コンターが 3D サーフェスを駆動

GigaPrime3D デモは2つのビューを連動させ、2D コンターのズームが 3D サーフェスを同じ領域へ自動的にズームします。ユーザーがコンターチャート上でズーム矩形をラバーバンドすると、PeZoomIn イベントが発火し、コードがコンターのズーム範囲を読み取り、それを 3D サーフェスの手動軸範囲として適用し、効率的な再構築をトリガーします:

// When user zooms the 2-D contour, sync the 3-D surface view
private void Chart2DContour_OnPeZoomIn(object sender, EventArgs e)
{
    // Enable pixel shader culling — only render triangles in view
    Chart3DSurface.PeGrid.Configure.DxPsManualCullXZ = true;

    // Transfer 2-D zoom extents → 3-D manual axis range
    Chart3DSurface.PeGrid.Configure.ManualScaleControlX = ManualScaleControl.MinMax;
    Chart3DSurface.PeGrid.Configure.ManualMinX = Chart2DContour.PeGrid.Zoom.MinX;
    Chart3DSurface.PeGrid.Configure.ManualMaxX = Chart2DContour.PeGrid.Zoom.MaxX;

    Chart3DSurface.PeGrid.Configure.ManualScaleControlZ = ManualScaleControl.MinMax;
    Chart3DSurface.PeGrid.Configure.ManualMinZ = Chart2DContour.PeGrid.Zoom.MinY;
    Chart3DSurface.PeGrid.Configure.ManualMaxZ = Chart2DContour.PeGrid.Zoom.MaxY;

    // Efficient rebuild — skip ranging, rebuild only vertices
    Chart3DSurface.PeFunction.Force3dxVerticeRebuild = true;
    Chart3DSurface.PeData.SkipRanging = true;
    Chart3DSurface.PeFunction.Reinitialize();
    Chart3DSurface.Invalidate();
}

ここでの鍵となる性能プロパティは DxPsManualCullXZ です — ピクセルシェーダー カリングを有効にし、ズーム領域外の三角形を不可視のままレンダリングするのではなく GPU が破棄するようにします。これがないと、3,600万ポイントのサーフェスをズームしても、大半がビュー外にあるのにすべての三角形を処理することになります。SkipRanging はエンジンに CPU 側の min/max データスキャンをスキップさせ(軸の上下限は手動設定済みなので不要)、Reinitialize() はキャッシュ済み画像をクリアせずに軸スケールを再構築します。結果: 6000×6000のサーフェスのズームが瞬時に感じられます。

共有メモリ アーキテクチャ: なぜ重要か

上のコードは、ProEssentials の最もアーキテクチャ的に重要な能力を実証しています: UseDataAtLocation() は既存のデータ配列へのポインタを保持します — 割り当てず、コピーせず、複製しません。Pe3do の 3D サーフェスと Pesgo の 2D コンター、両方のチャートコントロールが同じ sMyYData 配列への参照を保持します。データはメモリ上にちょうど一度だけ存在します。

GigaPrime3D デモでは、6000×6000のサーフェススキャンは3,600万の float 値 — 約150 MB — を含みます。各チャートがデータを内部ストレージへコピーする従来のアーキテクチャでは450 MB を消費します: ソース配列に150 MB、3D サーフェスの内部コピーに150 MB、2D コンターの内部コピーに150 MB。ProEssentials の消費は合計150 MB — ソース配列だけで、他には何もありません。

これはいくつのビューにも拡張できます。断面ラインプロファイルを表示する3つ目のチャートも、追加メモリコストなしに同じ配列から読めます。表面値の統計ヒストグラムを表示する4つ目のチャートも同じポインタを参照できます。メモリ消費はデータサイズに比例し、可視化コントロールの数には比例しません。

すべての競合は、チャートごとに別々のデータオブジェクトを必要とします。SciChart は 3D サーフェスに新しい XyzDataSeries3D を、2D ヒートマップに別の UniformHeatmapDataSeries を必要とします — 完全なコピーが2つです。LightningChart は各チャート インスタンスに別々のデータオブジェクトを必要とします。3,600万ポイントでは、追加コピー1つごとに150 MB の割り当て、150 MB の GC 追跡メモリ、そしてデータ読み込み時の数秒のコピー操作が加わります。

アーキテクチャの原則:

ProEssentials はあなたのデータを唯一の真実の源として扱います。チャートコントロールはデータへのビューであり、データのコピーの所有者ではありません。これにより、問題のクラス全体が消えます: 同期バグ、古いデータ、メモリの膨張、そして重複するマネージド配列を維持する GC 圧力です。

Memory FactorProEssentialsTypical Competitor
Source data (6000 × 6000)Your array (shared)Your array (original)
3-D surface copy0 MB — pointer~150 MB internal copy
2-D contour copy0 MB — same pointer~150 MB second copy
Total for dual view~150 MB (data only)~450 MB (data + 2 copies)
Memory saved~300 MB

3D サーフェス(Pe3do)と 2D コンター(Pesgo)の両方が同じ GPU コンピュートシェーダー パイプラインを使います — 同じ PeData.ComputeShader = true プロパティで起動されます。2つの異なる GPU 実装ではなく、データの2つの異なる視覚表現に適用される1つの統一シェーダー パイプラインです。

GPU コンピュートシェーダー: 3D サーフェスと 2D コンターに1つのパイプライン

上のコードスニペットが示すように、同じ PeData.ComputeShader = true プロパティが、Pe3do の 3D サーフェスと Pesgo の 2D コンターの両方で GPU アクセラレーション レンダリングを起動します。基盤のコンピュートシェーダー パイプラインは同じです: データ配列は GPU メモリへ一度アップロードされ、シェーダーが数千の GPU コアでグリッドを並列処理します — 出力がライティングされた 3D サーフェス メッシュであれ、フラットな 2D カラーマップ コンターであれ。

ProEssentials は Filter2D3D も提供します — 2D コンターデータ専用の2段コンピュートシェーダー最適化です。250,000ポイント以上のデータセットで Pesgo に対して有効化すると、第1シェーダーパスが連続データをロスレスで前段フィルターし、第2パスがコンター画像を構築します。これは視覚的忠実度を一切損なわずに、大規模コンター レンダリングを劇的に加速します。

リアルタイム 3D 向けには、ProEssentials は効率的な CPU→GPU 転送のためにデータ配列の GPU 側コピーを保持する StagingBuffers と、「標高だけが変わった — グリッド座標の再処理はスキップせよ」とシェーダーに伝える ReuseDataX / ReuseDataZ フラグを提供します。これらの最適化は、毎秒10〜30更新で 3D サーフェスデータをストリーミングする際に重要です。変化していない軸に対する冗長な GPU 作業を排除するからです。

GPU RenderingProEssentialsSciChartLightningChartSyncfusionDevExpress
3-D surface GPU?✅ Compute shader✅ Game-engine pipeline✅ DirectX❌ No 3-D❌ No 3-D surface
2-D contour GPU?✅ Same compute shader pipeline✅ Heatmap texture✅ DirectX❌ CPU only❌ CPU only
Same GPU code path for 2-D + 3-D?✅ Unified compute shader❌ Different renderers❌ Different renderers
Shared data pointer across views?✅ Zero-copy shared memory❌ Separate DataSeries per chart❌ Separate data objects
Filter2D3D optimization?✅ Two-tier shader for 250K+ contours

チャートタイプ詳説

ProEssentials の Pe3do チャートオブジェクトは2段階のディスパッチシステムを使います: PolyMode がチャートのカテゴリー(サーフェス、バー、散布図、ポリゴンデータ)を選び、PlottingMethod がそのカテゴリー内のレンダリング バリアント(ワイヤーフレーム、シェーディング、コンター、エリア)を選びます。この設計により、1つのチャートコントロールがすべての 3D チャートタイプを扱えます — 可視化を変えるたびに別のチャートコンポーネントへ差し替える必要はありません。

コンターオーバーレイ付き 3D サーフェス

3D サーフェスは ProEssentials の旗艦 3D チャートタイプです — 上の GigaPrime3D コードで実演されたものです。X×Z グリッドの Y 標高値を取り、設定可能なワイヤーフレーム、シェーディング、ライティング、コンターカラー バンディング付きの連続メッシュをレンダリングします。PlottingMethod を Four(Surface + Contour)に設定すると、コンターのカラーグラデーションがサーフェス メッシュへ直接オーバーレイされます。

GigaPrime3D デモは、コンピュートシェーダー、256バンドのコンターカラーリング、SetLight() による調整可能な光源配置、インタラクティブなマウスドラッグ回転を備え、最大6000×6000(3,600万頂点)のグリッドをレンダリングします。DuplicateData 最適化(DuplicateDataX = PointIncrement、DuplicateDataZ = SubsetIncrement)により冗長なグリッド座標の受け渡しを回避します — 均一グリッドには X 値の1行と Z 値の1列だけが必要です。

複数の光源を 3D 空間に配置でき、ズームコードで実演したピクセルシェーダー カリング(DxPsManualCullXZ)により、ズームされたビューは可視の三角形だけを処理します。GridAspect プロパティが X:Y:Z 軸の比率を制御します — デモは、スキャンした材料サンプルの物理的寸法からアスペクト比を動的に計算します。

2D コンターとヒートマップ(GPU コンピュートシェーダー)

ProEssentials の 2D コンター レンダリングは、3D サーフェスと同じ GPU コンピュートシェーダー パイプラインを使います — 両チャートが ComputeShader = true を設定する GigaPrime3D コードで実演したとおりです。Pesgo チャートオブジェクトは、X×Y グリッドの Z 標高値から、コンターカラーの塗りつぶし(ヒートマップ)、コンターライン、またはその両方をレンダリングします。

GigaPrime3D デモは、256バンドの手動 SubsetColors を使い、コンター可視化のための精密な青-シアン-緑-黄-赤グラデーションを定義します — 3D サーフェスと 2D コンターの両方に同じカラーマップが適用されます。コンターカラーリングは、定義済みの ContourColorSet パレットと、ContourColorBlends による補間付きのカスタム ContourColors 配列もサポートします。

SciChart はヒートマップ レンダリングを提供しますが、コンターラインは提供しません。LightningChart はコンターラインと塗りつぶしをサポートします。Syncfusion は SfSurfaceChart によるサーフェスベースのコンターとワイヤーフレーム コンター レンダリングを提供します。DevExpress は別個の Heatmap コントロールを提供しますが、コンターライン レンダリングはありません。ProEssentials、LightningChart、Syncfusion はいずれもコンターライン レンダリングを提供します — しかし、共有ポインタからのゼロコピー データアクセス付きで GPU コンピュートシェーダー上でそれを行うのは ProEssentials だけです。

コンターカラー スライス付き 3D ウォーターフォール

ウォーターフォール チャートは、周波数スペクトラム データ、振動解析、そして各スライスが異なる時刻や位置での測定を表す、時間発展するあらゆる信号を可視化します。ProEssentials は PolyMode.Scatter と PlottingMethod.Area を使ってウォーターフォールをレンダリングし、各サブセットを 3D 空間内の塗りつぶされたエリア スライスとして描きます。コンターカラーリングは WaterfallContours によりスライスごとに適用され、標高値に対応した色帯付きスライスを生成します。

ウォーターフォールの境界線、コンターカラー ブレンド、サブセットごとの線種により、外観を細かく制御できます。SciChart と LightningChart もウォーターフォール チャートを提供しますが、ProEssentials がネイティブに行うコンターカラー スライス レンダリングは、どちらの競合も提供していません。

4D、Delaunay、カスタム ポリゴンデータ

ProEssentials は、あらゆる競合との違いを際立たせる3つの高度なチャートタイプをサポートします。4D の W データシステム(PeData.W)は、Y 軸の標高とは独立にサーフェスのコンターカラーリングを制御する第4のデータ次元を追加します — SciChart と LightningChart も同様の機能を提供しますが、ProEssentials はそれをサーフェスとコンターに使うのと同じ GPU コンピュートシェーダー パイプラインでレンダリングします。組み込みの Delaunay 三角形分割は ProEssentials 固有です — 他のどの WPF チャートライブラリも提供していません。例415をご覧ください。

組み込みの Delaunay 三角形分割(PePlot.Option.Delaunay3D = true)は、非構造化ポイントクラウドを自動的に三角形分割されたサーフェスへ変換します。XYZ ポイントのフラットなリストをエンジンに与えるだけ — 事前のグリッド化は不要 — で、Y を高さとして XZ 平面を三角形分割し、コンターカラーリング付きの適切なサーフェス メッシュを生成します。組み込み Delaunay を提供する WPF チャートライブラリは他にありません。例414をご覧ください。

カスタム ポリゴンデータ(PolyMode.PolygonData)は、生の頂点位置とポリゴンごとの色を定義することで、任意の 3D ジオメトリを可能にします。これはカスタム 3D 形状 — 球体、インポートしたオブジェクト、エンジニアリング モデル — を同じ Pe3do チャートコントロール内でレンダリングするのに使われます。グラフ アノテーションもポリゴンデータをサポートし、データ空間に 3D 形状アノテーションを配置できます。例406(球体)と例416(複雑なアノテーション形状)をご覧ください。

リアルタイム 3D ストリーミング

ProEssentials は、ストリーミングのサーフェス、散布図、バー、大規模コンピュートシェーダー サーフェスを実演する専用のリアルタイム 3D 例(410、411、412、413)を提供します。リアルタイム 3D パイプラインは、効率的な GPU データ転送のための StagingBuffers、変化していないグリッド軸の再処理をスキップする ReuseDataX/ReuseDataZ、軸が手動スケールのときに CPU 集約的な min/max スキャンをバイパスする SkipRanging を ComputeShader と組み合わせます。

例413は最も要求の厳しいものです: コンピュートシェーダー レンダリング、循環バッファ、リアルタイム データ ストリーミングを備えた大規模 3D サーフェス。完全な最適化スタックを実演します — グリッド座標を共有する DuplicateData、GPU 側データキャッシュのための StagingBuffers、完全なシーン再構築なしの効率的な頂点更新のための Force3dxVerticeRebuild。

SciChart と LightningChart もリアルタイム 3D 更新をサポートしますが、ReuseData 最適化(変化していない軸の再処理スキップ)や SkipRanging(手動スケール時のレンジ計算バイパス)はどちらも提供していません。これらの最適化が重要なのは、データの変化していない部分 — ストリーミング シナリオでは通常3軸のうち2軸 — に対する冗長な CPU・GPU 作業を排除するからです。

Real-Time 3-DProEssentialsSciChart
3-D circular buffers✅ Built-inManual management
GPU compute on update✅ ComputeShader + StagingBuffersGPU vertex buffer rebuild
Partial axis reuse✅ ReuseDataX / ReuseDataZ❌ Full rebuild
Skip ranging✅ SkipRanging when manual-scaledN/A
Included examples6 real-time 3-D examples (410–413)Several

3D カメラ、回転、ズームの操作

GigaPrime3D デモは、ProEssentials の完全な 3D 操作モデルを実演します: 滑らかなマウスドラッグ回転、滑らかさを設定できるマウスホイール ズーム、Shift ドラッグによるビューポート パン、中ボタンによる光源配置、タッチのピンチズーム — すべて調整可能な滑らかさパラメータ付きです。

カメラ制御には、ViewingHeight(仰角 0〜36)、DegreeOfRotation(0〜359)、最小/最大制限を設定できる DxZoom、透視投影を制御する DxFOV が含まれます。デモはこれらをチャート横のスライダーとして公開し、視角、ズーム距離、垂直・水平オフセット、Z 軸の誇張をユーザーが精密に制御できます — すべてオンデマンド レンダリングにより 3D ビューがリアルタイムに更新されます。

DegreePrompting は、操作中に現在の回転角、ズーム距離、光源位置を画面に表示します。オンデマンド レンダリング(GPU はアクティブな操作中だけレンダリングし、ユーザーが離すと停止)と組み合わせれば、アイドル時の電力消費ゼロで応答性の高い操作が得られます — ラップトップやキオスクのデプロイにおいて、ゲームエンジン ループに対する決定的な優位です。

コンターカラー システム: 3つのアプローチ

GigaPrime3D デモは 256バンドの手動 SubsetColors を使います — カスタムの青から赤へのグラデーション配列を反復し、各色を SubsetColors のエントリへ割り当てます。これによりコンターカラー ランプをピクセルレベルで制御でき、3D サーフェスと 2D コンターが同一の配色を使うことが保証されます。

より素早いセットアップには、定義済みの ContourColorSet 列挙型(BlueCyanGreenYellowBrownWhite、Grayscale など)が、滑らかな補間のための設定可能な ContourColorBlends 付きの即席パレットを提供します。カスタム ContourColors 配列により、グラデーションの特定位置に正確なカラーストップを定義できます。

アンカーポイント補間テクニック — 値の閾値にアンカーカラーを定義し、その間の線形 RGB 補間を計算する — は、重要なデータ境界での精密な制御を備えた、出版品質のカラーランプを生成します。Direct3D モードで SubsetColors を設定した後は、Force3dxNewColors と Force3dxVerticeRebuild により、GPU がカラーマップとジオメトリの両方を確実に更新します。

3D・2D 科学チャートの結論

GigaPrime3D 材料表面スキャン デモは、これらの能力を実際の本番コードで証明します — マーケティング上の主張ではなく。3,600万データポイント、1つの共有配列、GPU レンダリングされた2つのビュー、150 MB の節約、ピクセルシェーダー カリング付きの連動ズーム、産業品質の操作性。ProEssentials は、この比較の13チャートタイプすべてをカバーします — どの競合も提供しないポイントクラウドからの Delaunay 三角形分割を含めて。3D サーフェスと 2D コンターの両方が、同じ統一 GPU コンピュートシェーダー パイプラインでレンダリングされます。

SciChart と LightningChart は 3-D における強力な競合であり、いずれも 13 種類のチャートのうち 12 種類をカバーしています。Syncfusion はサーフェス、ワイヤーフレーム、等高線、散布図、棒、ヒートマップ、等高線ラインに対応し、7 種類をカバーします。DevExpress は 5 種類をカバーします。しかし、これらの競合はいずれも、チャートビュー間でのデータポインタの共有、2-D と 3-D にわたる統一された compute shader レンダリング、点群からの Delaunay 三角形分割の組み込みサポートを提供していません。そしてそのエンジンがネイティブ C++ であるため、同じ GPU の 3-D サーフェス、等高線、4-D のパイプラインが、ProEssentials の WinUI 3 コントロール(Pe3doWinUI)も駆動します。他のあらゆる WinUI チャートがマネージド XAML コンポジタを介して描画するのに対し、これは WinUI 上でのネイティブ GPU 3-D です。科学、エンジニアリング、地理空間、医用画像、計測、半導体の可視化において、ProEssentials の 3-D および 2-D の機能は、WPF チャート市場で依然として最も包括的です。

Building on WinUI 3? See the native WinUI chart performance comparison

パフォーマンスとアーキテクチャ

GPU コンピュートシェーダーとオンデマンド レンダリングが、連続的な電力消費なしに速度を実現する仕組み。

続きを読む
価格とサポート

永続ライセンス、無料無制限サポート、5ライブラリ全体での5年間 TCO 比較。

続きを読む
プラットフォーム カバレッジ

WinUI、WPF、WinForms、C++ MFC、Delphi VCL、ActiveX — あらゆる Windows スタックに対応する 1 つのチャートエンジン。

続きを読む
3D やコンターチャートについて質問は?

ProEssentials のサポートは無料・無制限で、3D レンダリングエンジンを作った開発者が直接提供します。サーフェス レンダリング、コンターカラーリング、共有メモリ、Delaunay 三角形分割など、何でもお尋ねください。

ProEssentials チームに連絡 →

私たちの使命

御社とエンドユーザーに最も簡単で最もプロフェッショナルな価値を提供することで、お客様の成功を最優先目標とします。

私たちはエンジニアです

ProEssentials は、自らのチャートコンポーネントを必要としたプロの電気エンジニアから生まれました。ProEssentials を使う一流エンジニアリング企業の長いリストに加わってください。

ありがとうございます

ProEssentials のお客様であることに感謝するとともに、ProEssentials チャートエンジンをご検討いただきありがとうございます。