Экспорт 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
, Вы можете использовать фрагменты кода из следующего примера для своего собственного проекта.