Three.js - применение текстуры к сетке Collada дает неожиданный результат - PullRequest
0 голосов
/ 07 октября 2018

Следуя примеру Three.js ColladaLoader , я экспортировал модель содовой банки Cinema4D (, состоящую из 4 ячеек ) в файл .dae.Я хочу добавить текстуру в одну из ячеек, тело банки.

В Cinema4D я уже сделал текстуру на основе UV-карты сетки (сферической).Однако, когда я пытаюсь применить текстуру к сетке, она просто показывает сплошную белую заливку.Я добавил весь код в этот Codepen .Соответствующий код ниже, отредактированный для краткости:

loader = new THREE.ColladaLoader();
loader.load('can.dae', function (collada) {
    can = collada.scene;

    can.traverse(function (node) {
        var textureLoader

        if (node.name == 'wrapper') {
            textureLoader = new THREE.TextureLoader();

            textureLoader.load('wrapper.png', function (texture) {
                node.material = new THREE.MeshBasicMaterial({
                    map: texture
                });

                node.material.needsUpdate = true;
            });
        }
    });

    scene.add(can); 
});

Иллюстрация результата.Как видите, обертка банки - это не красный wrapper.png , а сплошная белая заливка.Я пробовал экспериментировать с режимами отображения и обтекания, но безрезультатно.Любая помощь очень ценится!

enter image description here

К вашему сведению: я уже исключил проблемы с CORS.

1 Ответ

0 голосов
/ 08 октября 2018

Я добавил куб в ваш загрузчик и дал ему этот материал, и он сработал .. поэтому подразумевается, что вашей сетке банок не назначены правильные UV-координаты .. Возможно, в вашем авторинге используется автоматическое цилиндрическое отображениепрограммное обеспечение, которое не экспортирует ультрафиолетовые лучи?В каком программном обеспечении вы пишете?

            scene.add(new THREE.Mesh(new THREE.BoxGeometry(1,1,1),node.material));

https://codepen.io/manthrax/pen/ePBZbZ?editors=1001

...