Конвертировать 3D модель в SceneJS JSON, включая текстуру - PullRequest
9 голосов
/ 09 октября 2011

Motive
Я пытаюсь создать небольшое демонстрационное приложение, используя 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 Ответ

7 голосов
/ 11 октября 2011

Я на самом деле автор scenejs-pycollada.Дайте мне посмотреть, смогу ли я вам помочь:)

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

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

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

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

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

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

...