Saya punya penyaji kustom yang perlu membuat geometri yang dimodifikasi. Semua fitur input masuk melalui IFeatureCursor
elemen as poligon. (Ini mirip dengan contoh ini , meskipun saya tidak memberikan poin.)
Saya dapat dengan mudah merender Poligon, Baris, dan Poin melalui melewati geometri baru ke IFeatureDraw.Draw
atau memanggil IDisplay.DrawPolygon
/ IDisplay.DrawPoint
/ etc.
Namun, IDisplay
tidak menyediakan mekanisme untuk menggambar multipatch, dan meneruskan ini sebagai geometri untuk IFeatureDraw.Draw
menghasilkan apa pun yang ditarik ke layar.
Apakah ada cara untuk langsung "menggambar" elemen multipatch (lebih disukai dengan texturing), dalam metode ini?
arcgis-10.0
arcobjects
arcscene
Reed Copsey
sumber
sumber
Jawaban:
Seperti yang dikatakan Craig, OpenGL adalah cara untuk menggunakan 3D.
Lihat Membuat Aplikasi Mesin ArcGIS Dengan C-Sharp dan OpenGL . Versi sebelumnya dari ArcGIS Explorer juga mendukung panggilan OpenGL , tetapi terakhir kali saya memeriksa Esri tidak lagi mendukungnya.
Saya tidak tahu mengapa mereka melakukan ini - gambar OpenGL benar-benar membantu membedakan AGX dari Google Earth.
Memperbarui
Bahkan jika plugin Anda mengembalikan multipatch dengan benar, saya tidak berpikir ArcObjects menawarkan metode untuk mendukung menggambar multipatch dengan panggilan OpenGL. Mungkin akan lebih mudah untuk hanya menggambar dari format asli mereka (memotong plugin dengan kata lain). Saya tidak pernah menggunakannya, tetapi ini adalah skrip yang menunjukkan cara menggunakan OpenGL dengan ArcScene .
sumber
Tampilan 2D (IDisplay) tidak secara langsung mendukung penggandaan gambar. Anda harus menyamarkannya untuk jejak kaki (lihat IMultipatch :: XYFootprint untuk cara mengekstrak jejak kaki). Jika Anda ingin rendering 2D dari tekstur multipatch Anda harus membuat gambar dari proyeksi 2D dari multipatch dan menggambar itu.
Untuk 3D, Anda harus bisa mengembalikan mulitpatches di kursor dan itu akan berhasil, tetapi jujur saja kebanyakan orang hanya menerapkan layer kustom untuk globe dan melakukan pekerjaan mereka sendiri di OpenGL.
sumber