Three.js ColladaLoader не смог загрузить модель: некоторые элементы не имеют вершин

Я попытался импортировать модели из 3D-моделей, но некоторые модели не загружаются (ошибка в ColladaLoader.js (строка 2808) Uncaught TypeError: невозможно прочитать свойство 'input', равное нулю). Я столкнулся с этой ошибкой с множеством разных моделей из 3D-склада.

Я подготовил скрипку (elcsiga / rep1z1xt / 4), она загружает модель из другого домена через ajax (нарушение CORS), однако это сработало у меня в Chrome.

Полностью рабочий пример (не удается загрузить модель): http://projecthost.hu/webview/jsfiddle/metro.html

Точно такой же код с моделью монстра из репозитория three.js (работает): http://projecthost.hu/webview/jsfiddle/monster.html

Модель collada доступна здесь: projecthost.hu/webview/jsfiddle/metro.dae Сначала я попытался загрузить ее как файл .kmz, разархивировать и напрямую использовать в нем файл .dae. Кроме того, я попытался загрузить файл .skp, открыл его в Sketchup и экспортировал в формат .dae, но получил ту же ошибку в ColladaLoader.js.

Эти модели содержат неподдерживаемую геометрию или это ошибка загрузчика Collada?

Спасибо.


person elcsiga    schedule 03.12.2014    source источник
comment
Похоже, вы определили проблему: vertices = null. Если вы можете определить с помощью отладчика, проблема ли это в модели или в загрузчике, это будет очень полезно. Отладка с неминифицированной версией three.js.   -  person WestLangley    schedule 03.12.2014


Ответы (2)


Модель не имеет вершин, поэтому Загрузчик не может создать геометрию. (может я ошибаюсь)

Вы создали модель с помощью Google SketchUp, верно? https://github.com/mrdoob/three.js/wiki/Using-SketchUp-Models

person mcode    schedule 07.12.2014

найти

var vertexData = sources[ this.vertices.input['POSITION'].source ].data;

в ColladaLoader.js замените его на

var vertexData = [];
if (this.vertices && this.vertices.input['POSITION'].source) {
    vertexData = sources[ this.vertices.input['POSITION'].source ].data;
}

это может решить мою проблему, избегая пустых вершин. Это может потерять некоторую информацию о файле dae, но это не повредит функции ColladaLoader.js.

person user1087079    schedule 17.07.2017