2013-08-07 2 views
2

Я работаю над небольшим 3D-движком, написанным на Java. Java в основном используется для переносимости (настольных и андроидных) и доступных библиотек. Blender предоставляет инструменты для разработки уровней.Использование библиотеки java с Blender

Я хочу использовать одну и ту же библиотеку java для экспорта и загрузки пользовательских данных.

Как я могу смешивать Blender, Python и Java?

Я думал о BlenderJava и Jython, но это очень экспериментально.

Благодаря

PS: Кто-нибудь уже используют execnet с Blender?

+0

А? Какой смысл переносить Blender на Java? – Devolus

+0

Я не пытаюсь переносить blender в java, но я хочу склеить blender и java-библиотеку. –

+0

Я думаю, что вы должны написать скрипт Python для экспорта требуемых данных в формате, который вы хотите для java. Python на самом деле действительно хороший язык, и его легко подбирать. –

ответ

1

Blender + Java:

Ну, если вы говорите о создании сцены, а затем загрузки файла .blend, что не очень хороший подход. Вероятно, вы хотите экспортировать уровень/символ/etc как что-то еще. Раньше я работал с openGL и java. Я рекомендую экспортировать как файл collada (файл .dae). Файлы Collada основаны на xml (легко анализируются с использованием DOM или SAX) и не содержат никаких дополнительных данных блендера, которые в любом случае не могут использоваться gl. Файлы Collada поддерживают анимационные рамки, структуры костей, источники света, материалы, текстуры, цвета, нормали и вершины. Кроме того, поскольку они представляют собой файлы на основе XML, их легко открыть с помощью текстового редактора и изучить тип файла. Поскольку у java уже есть синтаксические анализаторы XML в своей библиотеке, этот тип файла прост в использовании и чтении. Его данные можно сразу же сбрасывать в буфер BufferObject или немедленный режим рендеринга.

Fbx - еще один тип файла, который поддерживает все элементы блендера. Проблема с этим типом, то есть имеет двоичный и текстовый формат. Структура немного меняется, поэтому трудно найти ресурсы, описывающие формат двоичного файла. Кроме того, это тип файла, защищенного авторскими правами.

Файлы Obj являются самыми легкими для чтения и использования. Однако они хранят данные текстуры/материала в отдельном внешнем файле. Кроме того, они никоим образом не поддерживают анимацию. Из-за этого они являются плохим выбором по многим причинам. Однако, если у вас есть статический объект (ящик или дерево бездействия), этот тип файла может работать на вас.

Как я уже упоминал ранее, трудно напрямую смешивать блендер и java без типа файла, который легко читается обеими сторонами, файлы .blend не легко читаются java.

Java + Python:

Это немного сложнее. Я думаю, что Jython - хорошее место для начала. Python можно использовать аналогично скрипту, по крайней мере, при использовании с движком. Как вы решите реализовать это полностью зависит от вас.

Лично я нашел более легким создание игровой консоли с предварительно подготовленными командами java. У меня есть простые текстовые файлы, которые вызывают команды для консоли для использования скриптов. Сценарии могут определять такие вещи, как движения ai и загрузку ресурсов.

Я изо всех сил пытаюсь найти сильный набор причин, чтобы включить в движок игры скриптовый движок (что вы, вероятно, код в python). Я признаю, что это не область разработки двигателей, с которой я много работал. Я упал, как будто, в любом случае, это будет просто вызов команд (или методов) ваших классов Java. Возможно, кто-то может прояснить более сильное использование для python в игровом движке для нас обоих.

Наконец, я бы порекомендовал javaScript поверх python.Python используется из-за его популярности и потому, что большинство движков кодируются на C++ или C#. В отличие от java, на этих языках нет скрипта «маленький брат». Если вы намереваетесь сделать это истинным движком java, было бы намного проще использовать JS, поскольку вы используете язык сценариев выбора, поскольку библиотеки для его использования уже упакованы вместе с JDK.

Надеюсь, это поможет некоторым.

+0

Нет. Я не хочу загружать файл blend. Но файл экспортируется с использованием библиотеки java (часть моего движка). Фактически, я использую XML и связанные с ним инструменты Java. –

+0

Знаете ли вы, как использовать Jython из Blender? –

+0

Кто-нибудь уже тестировал execnet с Blender? –

0

Итак, что я получаю, так это то, что вы хотите как построить, так и прочитать свой собственный тип файла? Возможно, на основе XML? Единственный, чтобы включить вашу собственную библиотеку в блендер, - это через python. Я знаю, что у людей есть встроенные расширения python и плагины для блендера (включая экспортера анимации).

Люди обычно используют только свой собственный тип файла со своим собственным инструментом (например, если вы создали программу, например, блендер). Потому что, скажем, кто-то предпочитает использовать другое программное обеспечение для 3D-моделирования, они тогда не смогут использовать ваш движок. В идеале, инструменты и механизм рендеринга работают независимо друг от друга. Blender уже может экспортировать несколько стандартных типов файлов, которые обеспечивают гораздо большую гибкость.

Я бы не создал библиотеку для экспорта настраиваемого типа файла, если только вы не создаете собственный инструмент. Это только побудит других использовать другой движок, а не ваш.

Кстати, этот вопрос относится к stackexchange, а не stackoverflow.

+0

Я уже создал библиотеку, и теперь я хочу интегрировать ее в блендер. Обмен или продажа двигателя не имеет большого значения. –

+0

Я не уверен, что это возможно. Из моего опыта блендер не структурирован именно так. – guyfleeman

Смежные вопросы