Конвертировать 3D модель в SceneJS JSON, включая текстуру
движущий
Я пытаюсь создать небольшое демонстрационное приложение, используя WebGL. Я решил использовать SceneJS, потому что он казался простой структурой и более чем достаточным для этой цели.
Я скачал несколько моделей.blend (среди прочих Эми Роуз) и экспортировал их в виде файла Collada (.dae) с помощью Blender. Затем я использовал scenejs-pycollada, чтобы преобразовать их в модель json.
Я просто потратил пару часов на то, чтобы заставить работать конвертер scenejs-pycollada. Очевидно, заставить работать эти зависимости Python в Windows не так просто, если вы никогда раньше не использовали Python.;)
проблема
Но сейчас я застрял (снова). Моя проблема в том, что у моделей нет текстур или материалов.
Я использовал Пример Плана Сеймура SceneJS. Модель, которую я конвертировал, едва видна. Он черный и, кажется, не реагирует на освещение сцены. Если я загружаю самолет и модель вместе, я вижу, что модель загружена, потому что ее руки и ноги торчат из плоскости.
Теперь я следовал за несколькими уроками, которые позволили бы мне экспортировать текстуру как изображение PNG. Затем я изменил имя файла текстуры в модели JSON, чтобы оно совпадало с именем файла, но это не помогает.
Поэтому я надеюсь, что кто-нибудь может помочь мне найти способ экспорта моделей Blender (или других распространенных 3D-моделей) в формат JSON, используемый SceneJS, включая текстуры.
Подойдет любой другой способ загрузки моделей в SceneJS, если он работает.
Если бы кто-то получил ссылку на бесплатную загрузку моделей JSON для тела и фигуры, это бы помогло, но я лучше узнаю, как это работает.:)
я использую
- Windows 7 Home Premium 64bit
- Python 2.7 (Windows 32bit)
Я выбрал 32-битную версию из-за, казалось бы, лучшей поддержки библиотек и большего количества доступных инсталляторов. Сначала я перепутал 32 и 64 бит, и это доставило мне неприятности, но теперь, кажется, все работает (кроме текстур). - Блендер 2.59
- SceneJS 0.8.0
Мой рабочий процесс
В Blender я экспортирую модели в файлы Collada (*.dae), а затем преобразую их в Raw JSON, используя scenejs-pycollada. Это дает мне файл JSON с двумя объектами в нем. Первая, кажется, сцена, вторая модель. Я оставляю второе и помещаю его в переменную Javascript, которая используется в коде примера SceneJS. Модель заканчивается со свойствами , "type": "library", "parent": "Scene"
который мне нужно удалить из кода, чтобы он вообще загрузился.
1 ответ
Я на самом деле автор scenejs-pycollada. Дай мне посмотреть, смогу ли я тебе помочь:)
Я вижу, вы используете версию 0.8 SceneJS... Ситуация была довольно нестабильной, поэтому на самом деле было бы проще всего извлечь ветку 2.0 SceneJS из github и scenejs-pycollada из моего личного репо. Я в основном ориентировался на SceneJS 0.9 для первого релиза scenejs-pycollada, но эта версия так и не была официально выпущена. Кроме того, в конечном итоге вам не придется переписывать все, если вы просто переключитесь сейчас...
Проблемная компиляция Windows - это тоже большая проблема, я очень хочу, чтобы программисты-девелоперы исправили бы это для вас. Как только SceneJS 2.0 будет выпущен, я выпущу официальную версию scenejs-pycollada, которая поставляется со всеми необходимыми зависимостями для Windows.
Так что не стесняйтесь комментировать этот ответ или обновить свой вопрос. Я постараюсь следить за этим.
PS В качестве альтернативы, если вы действительно расстроены, у меня есть второй экспортер блендера по адресу https://github.com/rehno-lindeque/Blender-WebGL-exporter, но я не рекомендую использовать этот - он очень устарел. Единственный другой экспортер сценической коллады давно устарел.
PPS Там же есть и пример и несколько тестовых моделей в самой scenejs-pycollada. Если вы просто хотите поиграть с быстрой моделью, посмотрите https://github.com/rehno-lindeque/scenejs-pycollada/tree/master/example хотя по общему признанию это не самая красивая модель.
PPPS На самом деле одна из причин, по которой модель Эми Роуз не работала на вас, заключается в том, что scenejs-pycollada еще не поддерживала несколько материалов. Я быстро добавляю поддержку сегодня вечером.