Преобразование 3D-модели в SceneJS JSON, включая текстуры

#json #textures #blender #scenejs

#json #Текстуры #блендер #scenejs

Вопрос:

Мотив
Я пытаюсь создать небольшое демонстрационное приложение с использованием WebGL. Я решил использовать SceneJS, потому что это казалось простой структурой и было бы более чем достаточно для этой цели.

Я загрузил пару моделей .blend (среди прочих — Amy Rose) и экспортировал их в виде файла Collada (.dae) с помощью Blender. Затем я использовал scenejs-pycollada для преобразования их в json-модель.

Я только что потратил пару часов на то, чтобы заставить работать конвертер scenejs-pycollada. По-видимому, заставить эти зависимости Python работать в Windows не так просто, если вы никогда раньше не использовали Python. 😉

Проблема
Но теперь я застрял (снова). Моя проблема в том, что модели не имеют никаких текстур или материалов.

Я использовал пример SceneJS с плоскостью Сеймура. Преобразованная мной модель едва видна. Он черный и, похоже, не реагирует на освещение в сцене. Если я загружаю плоскость и модель вместе, я вижу, что модель загружена, потому что ее руки и ноги торчат из плоскости.

Теперь я выполнил несколько руководств, которые позволили бы мне экспортировать текстуру в виде изображения PNG. Затем я изменил имя файла текстуры в модели JSON, чтобы оно соответствовало имени файла, но это не помогает.

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

Подойдет и любой другой метод загрузки моделей в SceneJS, если он работает.

Если у вас есть ссылка на бесплатную загрузку моделей body / figure JSON, это помогло бы на данный момент, но я скорее узнаю, как это работает. 🙂

Я использую

  • 64-разрядная версия Windows 7 Home Premium
  • Python 2.7 (Windows 32bit)
    Я выбрал 32-разрядную версию из-за, казалось бы, лучшей поддержки библиотек и более доступных установщиков. Сначала я перепутал 32 и 64 бита, и это вызвало у меня проблемы, но теперь, похоже, все работает (за исключением текстур, то есть).
  • Blender 2.59
  • SceneJS 0.8.0

Мой рабочий процесс
В Blender я экспортирую модели в файлы Collada (* .dae), а затем конвертирую их в Raw JSON с помощью scenejs-pycollada. Это дает мне файл JSON с двумя объектами в нем. Первая, похоже, является сценой, вторая — моделью. Я сохраняю вторую и помещаю ее в переменную Javascript, которая используется в коде примера SceneJS. Модель заканчивается свойствами , "type": "library", "parent": "Scene" , которые мне нужно удалить из кода, чтобы он вообще загружался.

Ответ №1:

На самом деле я автор scenejs-pycollada. Посмотрим, смогу ли я вам помочь 🙂

Я вижу, вы используете версию SceneJS 0.8… Ситуация довольно изменчива, поэтому, возможно, проще всего извлечь ветку SceneJS 2.0 из github и scenejs-pycollada из моего личного репозитория. В основном я ориентировался на SceneJS 0.9 для первого выпуска scenejs-pycollada, но эта версия так и не была официально выпущена. Кроме того, в долгосрочной перспективе вам не придется все переписывать, если вы просто переключитесь сейчас…

Проблемная компиляция Windows также является большой проблемой, я действительно хочу, чтобы разработчики numpy исправили это для вас, Windows, люди. Как только SceneJS 2.0 будет выпущен, я выпущу официальную версию scenejs-pycollada, которая поставляется со всеми необходимыми зависимостями для Windows.

Итак, не стесняйтесь комментировать этот ответ или обновлять свой вопрос. Я постараюсь следить за этим.

PS В качестве альтернативы, если вы действительно расстроены, у меня на самом деле есть второй экспортер Blender в https://github.com/rehno-lindeque/Blender-WebGL-exporter , но я не рекомендую использовать этот — он очень устарел. Единственный другой экспортер scenejs collada давно устарел.

P.P.S. В самом scenejs-pycollada есть также пример и некоторые тестовые модели. Если вам просто нужна быстрая модель для игры, ознакомьтесь https://github.com/rehno-lindeque/scenejs-pycollada/tree/master/example хотя, по общему признанию, это не самая красивая модель на свете.

P.P.P.S. На самом деле одна из причин, по которой модель Эми Роуз плохо работала для вас, заключается в том, что scenejs-pycollada еще не поддерживал несколько материалов. Я быстро добавляю некоторую поддержку для этого сегодня вечером.

Комментарии:

1. Спасибо! Похоже, это работает с вашей версией scenejs-pycollada и SceneJS 2.0. Также не нужно ничего перекомпилировать, так что это хорошо. 😉 Я не очень виню ребят из Numpy, в значительной степени я сам виноват в установке несовместимых версий различных библиотек. На данный момент я пытаюсь использовать GLGE, который кто-то рекомендовал. (он загружается. файлы dae без необходимости их преобразования). Сейчас мне нужно, чтобы моя демо-версия заработала, но я надеюсь, что скоро найду время для повторного изучения SceneJS. Еще раз спасибо.

2. Нет проблем, еще какие-нибудь ошибки, дайте мне знать 🙂