マルチパッチを使用してカスタムレンダラーにIFeatureRenderer.Drawを実装することは可能ですか?


8

変更されたジオメトリをレンダリングする必要があるカスタムレンダラーがあります。入力フィーチャはすべてIFeatureCursor、ポリゴンエレメントとして経由で入力されます。(これはこの例と似ていますが、ポイントをレンダリングしていません。)

新しいジオメトリを渡すか/ / etcをIFeatureDraw.Draw呼び出すことで、ポリゴン、ライン、ポイントを簡単にレンダリングできます。 IDisplay.DrawPolygonIDisplay.DrawPoint

ただし、IDisplayはマルチパッチを描画するメカニズムを提供せず、これをジオメトリとして渡しIFeatureDraw.Drawて画面に何も描画しません。

このメソッド内で、マルチパッチ要素を(好ましくはテクスチャリングを使用して)直接「描画」する方法はありますか?


これは2Dディスプレイ(ArcMap)ですか、それともArcSceneまたはGlobeですか?
クレイグウィリアムズ

@Craig:これは3つすべてでサポートする必要がありますが、複数のコードパスを使用して処理します。これはプラグインデータソース用であるため、サポートは「グローバル」である必要があります。
リードコプシー、2011

回答:


3

クレイグが言うように、OpenGLは3Dへの道です。

C-SharpとOpenGLを使用したArcGIS Engineアプリケーションの作成」をご参照ください。以前のバージョンのArcGIS ExplorerもOpenGL呼び出しをサポートしていましたが、前回チェックしたところ、Esriはそれをサポートしていません。

なぜ彼らがこれをしたのか私にはわかりません-OpenGLの描画はAGXをGoogle Earthと区別するのに本当に役立ちました。

更新

プラグインがマルチパッチを正しく返したとしても、ArcObjectsがOpenGL呼び出しによるマルチパッチの描画をサポートするメソッドを提供しているとは思いません。ネイティブ形式から単に描画する方が簡単だと思われます(つまり、プラグインをバイパスします)。私はそれを使用したことがありませんが、ArcSceneでOpenGLを使用する方法を示すスクリプトを次に示します


1

2Dディスプレイ(IDisplay)は、マルチパッチの直接描画をサポートしていません。それらをフットプリントに変換する必要があります(フットプリントを抽出する方法については、IMultipatch :: XYFootprintを参照してください)。マルチパッチテクスチャの2Dレンダリングが必要な場合は、マルチパッチの2D投影から画像を作成して描画する必要があります。

3Dの場合、カーソルでマルチパッチを返すだけで機能しますが、正直なところ、ほとんどの人はグローブのカスタムレイヤーを実装してOpenGLで独自の作業を行うだけです。


ArcSceneを(グローブではなく)主にサポートしようとしていますが、セカンダリとしてマップ/グローブもサポートしています。残念ながら、私が言うことができるものから、適切にプラグインデータセットで作業をしないカーソルでマルチパッチを返す
リードCopsey
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.