ColladaLoader2.js — случайные цвета перезаписывают настройки файла .dae (three.js)

Я работаю с Three.js (r73) — из-за ошибки в ColladaLoader.js я перешел на ColladaLoader2.js. Однако, когда я загружаю файл .dae с помощью ColladaLoader2.js, вместо того, чтобы использовать цвет, определенный в файле .dae, он применяет случайный цвет. Цвета объекта случайным образом меняются каждый раз, когда я обновляю страницу. Кроме того, я заметил, что тени от источников света больше не применяются.

Вот два примера, иллюстрирующих этот вопрос. ЕДИНСТВЕННАЯ разница между этими двумя примерами заключается в том, что в одном используется ColladaLoader.js, а в другом — ColladaLoader2.js. Все остальное то же самое.

Пример 1 — ColladaLoader.js — файл .dae загружается и отображается так, как ожидалось (так же, как он выглядит в Blender, откуда был экспортирован файл .dae) http://ngndev.com/share/three/cl.html

Пример 2 — ColladaLoader.js — заметили цвет и отсутствие затенения? Это тот же файл .dae. Попробуйте обновить страницу. Цвет будет меняться каждый раз на какой-то случайный цвет. http://ngndev.com/share/three/cl-2.html

Кто-нибудь сталкивался с этим или есть решение?

Вот отрывок из примера, показывающего, как я добавляю .dae. По сути, я открываю .dae, просматриваю и затем добавляю его в сцену, если оно совпадает по имени.

var loader = new THREE.ColladaLoader();
    loader.options.convertUpAxis = true;

//Load in the part
loader.load('e3d-ppppp7.dae', function (collada){
    voxel = collada.scene;
    voxel.traverse(function (child){
        if (child.name.match("^e3d-")) {
            scene.add( child );
        }
    });
}); 

person J Thompson    schedule 11.01.2016    source источник
comment
ColladaLoader2 находится в разработке. Попробуйте обновленную версию в ветке r.74dev. Если вы обнаружите ошибку, вы можете сообщить об ошибке на сайте three.js.   -  person WestLangley    schedule 11.01.2016
comment
Спасибо @WestLangley - меня направили к обновленному файлу ColladaLoader2.js, и это решило проблему. К сожалению, моя ось вверх теперь отброшена (как вы увидите, обновив пример № 2 выше). Я пробовал добавлять и удалять loader.options.convertUpAxis = true; но это не решило проблему.   -  person J Thompson    schedule 11.01.2016
comment
В качестве обходного пути попробуйте повернуть геометрию в обратном вызове загрузчика. mesh.geometry.rotateX( - Math.PI / 2 ).   -  person WestLangley    schedule 11.01.2016
comment
Я реализовал этот обходной путь, и он сработал успешно. В случае, если это полезно для кого-либо еще - я импортирую множество объектов THREE.Group и THREE.Mesh, поэтому мне пришлось настроить обходной путь, чтобы применить его к обоим случаям (геометрия дополнительно вложена в ситуацию с группой). Спасибо за быстрые ответы @WestLangley   -  person J Thompson    schedule 11.01.2016


Ответы (1)


ColladaLoader2 разрабатывается для замены ColladaLoader. Попробуйте версию для разработки three.js (в данном случае r.74dev).

Если вы обнаружите ошибку в новом загрузчике, будет полезно, если вы сообщите об этом. См. рекомендации three.js, чтобы узнать, как сообщить об ошибке.

три.js р.73

person WestLangley    schedule 11.01.2016