Tengo un renderizador personalizado que necesita renderizar geometría modificada. Las características de entrada están llegando a través de IFeatureCursor
elementos poligonales. (Esto es similar a este ejemplo , aunque no estoy representando puntos).
Puedo renderizar fácilmente polígonos, líneas y puntos ya sea pasando la nueva geometría IFeatureDraw.Draw
o llamando IDisplay.DrawPolygon
/ IDisplay.DrawPoint
/ etc.
Sin embargo, IDisplay
no proporciona un mecanismo para dibujar un multiparche y pasarlo como la geometría a IFeatureDraw.Draw
resultados no genera nada en la pantalla.
¿Hay alguna manera de "dibujar" directamente un elemento multiparche (preferiblemente con texturizado), dentro de este método?
arcgis-10.0
arcobjects
arcscene
Reed Copsey
fuente
fuente
Respuestas:
Como dice Craig, OpenGL es el camino a seguir para 3D.
Consulte Crear una aplicación de ArcGIS Engine con C-Sharp y OpenGL . Las versiones anteriores de ArcGIS Explorer también admitían llamadas OpenGL , pero la última vez que verifiqué que Esri ya no lo admite.
No sé por qué hicieron esto: el dibujo de OpenGL realmente ayudó a diferenciar a AGX de Google Earth.
Actualizar
Incluso si su complemento devolvió multiparches correctamente, no creo que ArcObjects ofrezca métodos para admitir el dibujo de multiparches con llamadas OpenGL. Probablemente sería más fácil simplemente dibujar desde su formato nativo (omitir el complemento en otras palabras). Nunca lo he usado, pero aquí hay un script que muestra cómo usar OpenGL con ArcScene .
fuente
La pantalla 2D (IDisplay) no admite el dibujo de multiparches directamente. Deberá convertirlos en huellas (consulte IMultipatch :: XYFootprint para saber cómo extraer la huella). Si desea una representación 2D de las texturas multiparche, necesitará crear una imagen a partir de una proyección 2D del multiparche y dibujar eso.
Para 3D, debería poder devolver mulitpatches en el cursor y funcionará, pero sinceramente, la mayoría de las personas solo implementan una capa personalizada para globo y hacen su propio trabajo en OpenGL.
fuente