Multi-plataforma 3d-Engine para incrustar en iOS / Android-View?

Para mi nueva aplicación, quiero tener una IOS nativa o una interfaz de usuario de Android, además de una vista en 3D que muestre algunos gráficos. Mientras que mi plan inicial para utilizar transformaciones CSS en un WebView para lograr el efecto 3d deseado ha fallado porque el rendimiento no estaba en ningún lugar cerca de utilizable, estoy buscando otra solución. Aquí están lo que creo que son mis opciones:

1. Recrear la escena en OpenGL ES
Yo recrearía nuestro motor gráfico completamente en OpenGL. Esto sin duda sería posible, pero probablemente será muy difícil de hacer para personas como yo que en realidad nunca hizo la programación 3d antes. ¿Sería posible portar código OpenGL escrito para iOS a Android? ¿O tendría que crear el motor dos veces?

2. Utilice el motor readymade 3d como Unity3d
Me tropecé con Unity3d, Marmalade y herramientas similares que probablemente me ayudarían a crear las escenas 3d más fácilmente. Sin embargo, a primera vista parece que tendría que crear toda la aplicación en el sistema de autoría respectivo. Tendría que usar controles nativos para cualquier cosa excepto la vista 3d. ¿Es eso posible en esas herramientas? Si es así, ¿es posible portar el 3d de iOS a Android o viceversa?

Hice las preguntas correctas; ¿Hice los supuestos correctos? ¿Le suena algo mal? ¿Qué me perdí?

¿Son estas todas las opciones que tengo? ¿O quizás hay algo más, una solución híbrida de algún tipo?

¿Qué opción debo elegir?

Edit: Para aclarar, no quiero mostrar iOS o controles de Android dentro de la vista 3d, sino más bien a su alrededor: La interfaz de usuario sería nativo y la parte 3d estaría contenido dentro de una vista.

Bastante complejo uno 😉

(1) OpenGL vs motor:

Creo que sería posible escribir la mayor parte del código OpenGL de una manera que sea portátil por ejemplo en C ++ usando Objective-C ++ en iOS y NDK en Android (sólo una idea, nunca utilizó NDK). Ahora depende de la parte gráfica a donde ir. Si usted dice gráficos, ¿quiere decir que "sólo" necesitan gráficas de función para trazar en la pantalla? ¿O tiene más objetos como en juegos o aplicaciones de arquitectura para mostrar en OpenGL?

Si este último es el caso, el mayor problema parece ser la perfecta integración de los modelos. Cada escena que contiene más de algunos cubos está diseñada en una herramienta de modelado y puede ser exportada en varios formatos (obj, dae, fbx, …). Pero entonces usted necesita para importarlo en su aplicación. Ahí es donde los motores de juego vienen a jugar sin importar si Unity, SIO2, Bork, Unreal, Oolong, …

Si necesita trazar gráficas, la solución manual de OpenGL podría valer la pena considerar. Aunque aún así algunas investigaciones sobre el motor existente tal vez útil porque OpenGL no es tan intuitiva y necesitará algún tiempo para hacer amigos. Realicé varios gráficos con zoom, color, … en una aplicación de iPhone usando OpenGL directamente pero era un proyecto de investigación puro y la portabilidad era menos importante.

(2) Mezcla de OpenGL con elementos GUI

Básicamente, no es posible mostrar un UIButton estándar dentro de una vista de OpenGL. Pero puede tener vistas de OpenGL y vistas de interfaz de usuario normales y cambiar entre ellas. No sé de ninguna herramienta que le permite hacer tanto cosas basadas en OpenGL y la programación regular GUI y más en la plataforma independiente.

Así que por un lado usted necesita para crear sus cosas en 3D en la herramienta de su elección y, a continuación, integrar el código nativo UI. Para Unity e iOS hay algunos recursos cómo hacerlo Cómo acceder a los activos de Unity de forma nativa en Android o iPhone? O Mixing Unity generó código con Objective-C en iOS?

Por otro lado, necesitará un framework independiente de la plataforma para obtener la programación GUI regular hecho para que pueda ejecutarlo en Android e iOS. No estoy familiarizado con este tema, pero he oído hablar de los marcos basados ​​en Mono.

  • ¿Cómo iniciar la aplicación Unity desde la actividad de Android?
  • ¿Cómo mostrar la misma parte del juego en cada relación de aspecto en dispositivos Android con Unity?
  • ¿Cómo volver de Unity Player a la anterior actividad de Android?
  • La aplicación que implementa Parse Unity Plugin se bloquea en el dispositivo android pero funciona bien en el editor
  • Screen Recorder Plugin para Android en Unity
  • ¿Cómo puedo codificar mi juego para que funcione en cada resolución de dispositivos Android? (Con Unidad)
  • El proyecto Build Unity con Jenkins falló
  • Error de segmentación OSX 11 - Android
  • Intercambiar píxeles de MainTex con otras texturas a través de la superficie Shader (Unity)
  • Entrada de un juego de ritmo
  • Necesito establecer la ruta para guardar las imágenes con una aplicación para Android e IOS con UNITY
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.