Кросс-платформенный 3d-движок для встраивания в iOS / Android-View?

Для моего нового приложения я хочу иметь собственный iOS или Android UI, а также трехмерный вид, который показывает некоторые графики. Хотя мой первоначальный план использования CSS-преобразований в WebView для достижения желаемого 3D-эффекта потерпел неудачу, потому что производительность не была где-то ближе к использованию, я ищу другое решение. Вот мои варианты:

1. Восстановите сцену в OpenGL ES
Я полностью воссоздал наш графический движок в OpenGL. Это, безусловно, будет возможно, но, вероятно, будет очень трудно сделать для таких людей, как я, которые на самом деле никогда не делали 3d-программирование раньше. Можно ли перенести код OpenGL, написанный для iOS на Android? Или мне нужно будет создать двигатель дважды?

2. Используйте готовый 3d-движок, такой как Unity3d
Я наткнулся на Unity3d, Marmalade и подобные инструменты, которые, вероятно, помогли бы мне создать 3D-сцены более легко. Однако на первый взгляд кажется, что мне нужно будет создать все приложение в соответствующей системе авторинга. Я бы использовал встроенные элементы управления для всего, кроме 3D-представления. Возможно ли это в этих инструментах? Если да, можно ли перенести 3d с iOS на Android или наоборот?

Я задал правильные вопросы; Я сделал правильные предположения? Что-то звучит неправильно для вас? Что я упустил?

Это все варианты, которые у меня есть? Или может быть что-то еще, гибридное решение?

Какой вариант выбрать?

Изменить: Чтобы уточнить, я не хочу показывать элементы управления iOS или Android в трехмерном представлении, но скорее вокруг него: пользовательский интерфейс будет родным, а трехмерная часть будет содержаться внутри одного представления.

Довольно сложный 😉

(1) OpenGL против двигателя:

Я думаю, что можно было бы написать основную часть кода OpenGL таким образом, чтобы он был переносимым, например, на C ++, используя Objective-C ++ на iOS и NDK на Android (просто идея, никогда не использовавшая NDK). Теперь это зависит от графической части, куда идти. Если вы говорите графики, вы имеете в виду, что вам нужны только графические функции для построения графика на экране? Или у вас есть больше объектов, например, в играх или архитектурных приложениях для отображения в OpenGL?

Если последнее имеет место, большая проблема, по-видимому, заключается в бесшовной интеграции моделей. Каждая сцена, содержащая больше, чем некоторые кубы, предназначена в инструменте моделирования и может быть экспортирована в несколько форматов (obj, dae, fbx, …). Но тогда вам нужно импортировать его в свое приложение. Именно здесь игровые движки играют независимо от того, будут ли Unity, SIO2, Bork, Unreal, Oolong, …

Если вам нужно построить график, можно рассмотреть руководство по OpenGL вручную. Хотя даже тогда некоторые исследования по существующему движку могут быть полезны, потому что OpenGL не настолько интуитивно понятен, и вам потребуется некоторое время, чтобы подружиться. Я рисовал несколько графиков с масштабированием, раскраской, … в приложении iPhone с использованием OpenGL напрямую, но это был чистый исследовательский проект, и переносимость была менее важной.

(2) Смешивание OpenGL с элементами GUI

В принципе, невозможно отобразить стандартный UIButton в представлении OpenGL. Но вы можете иметь представления OpenGL и регулярные представления пользовательского интерфейса и переключаться между ними. Я не знаю ни одного инструмента, позволяющего делать как на основе OpenGL, так и на регулярном графическом интерфейсе, а также на независимой платформе.

Поэтому, с одной стороны, вам нужно создать свой 3D-материал в выбранном вами инструменте, а затем интегрировать собственный код пользовательского интерфейса. Для Unity и iOS есть некоторые ресурсы, как это сделать Как получить доступ к активам Unity изначально на Android или iPhone? Или Смешивание Unity с кодом Objective-C в iOS?

С другой стороны, вам понадобится платформа, независимая от платформы, чтобы получить регулярное программирование GUI, чтобы вы могли запускать его как на Android, так и на iOS. Я не знаком с этой темой, но я слышал от основанных на Mono фреймворков.

Intereting Posts