Экспорт Makehuman.js Three.js с использованием THREE.OBJExporter

Я использую https://github.com/makehuman-js/makehuman-js

Пример экспортирует сетку из источника. Поэтому я пытаюсь получить его со сцены, где он изменился.

Когда я пытаюсь экспортировать свою сцену в файл obj, он пуст:

     var objscene = new THREE.OBJExporter().parse( self.scene );
     var output = JSON.stringify( objscene, null, 2 );               
     saveAs (new Blob([output], {type : 'text/plain;charset=utf-8'} ), 'Avatar.obj');

Я могу сосчитать объекты на сцене. Есть четыре.

 var scene_size = app.scene.children.length; 
     var i = 0;
     while(i < scene_size){ 
        alert(app.scene.children[i]) 
        i = i + 1;
    }

Однако у них нет имен, поэтому я добавляю имя к своему основному человеческому объекту.

// HUMAN
this.human = new makehuman.Human(this.resources);
this.human.name = 'human';

Так что теперь я могу получить имя объекта с именем человека.

     var scene_size = app.scene.children.length; 
     var i = 0;
     while(i < scene_size){ 
        var thisone = app.scene.children[i]
        alert(thisone.name) 
        i = i + 1;
     }

Итак, я могу продемонстрировать, что объекты существуют. Я назначу имена другим объектам позже. Я не могу понять, почему мой экспорт пуст. Размер файла составляет 1 КБ, и в нем есть только "", когда я открываю его в редакторе.

Любое понимание будет оценено. Я стучал в течение недели, и я в растерянности... Спасибо!

1 ответ

Решение

OBJExporter.parse() не возвращает объект JSON. Так что нет смысла использовать JSON.stringify() в данном контексте. Посмотрите на фактический результат в этом примере (вы увидите, что это просто обычная строка).

В любом случае, я рекомендую использовать GLTFExporter вместо того, чтобы glTF это рекомендуемый формат three.js, Вы можете использовать фрагменты кода из следующего примера для своего собственного проекта.

https://threejs.org/examples/

Другие вопросы по тегам