Экспорт Makehuman.js Three.js с использованием THREE.OBJExporter - PullRequest
0 голосов
/ 06 сентября 2018

Я использую 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 Ответ

0 голосов
/ 06 сентября 2018

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

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

https://threejs.org/examples/#misc_exporter_gltf

...