OBJ + MTL загружается, но не отображается

Если я использую следующий код для загрузки файлов .obj и .mtl, загруженных с сайта https://poly.google.com/view/9NXf-SDxJny работает нормально, я вижу звезду в своей сцене.

return new Promise((resolve, reject) => 
    {
        let mtlLoader = new THREE.MTLLoader();
        mtlLoader.crossOrigin = true;
        mtlLoader.setPath(ASSETS_PATH);
        mtlLoader.load(filename + '.mtl', (materials) => 
        {           
            materials.preload();
            let objLoader = new THREE.OBJLoader();
                objLoader.setPath(ASSETS_PATH);

                objLoader.setMaterials(materials);
                objLoader.load(filename + '.obj', (obj) => 
                {   
                    this.obj = obj; 
                    resolve(true);
                });
        });
    });

Но когда я использую тот же код для загрузки obj и mtl с https://poly.google.com/view/4-OZNPuTqFq не отображается. Я не получаю никаких ошибок. Если я удалю строку objLoader.setMaterials(materials);, я увижу торт, но без материала. Так что это похоже на материальную проблему.

У меня есть codepen с полным кодом здесь https://codepen.io/steveg3003/pen/6f0d8c4a17ed12bea49b3391a6d80ce3?editors=0010

Спасибо


person steveg    schedule 02.11.2017    source источник
comment
Выдает ли THREE.OBJLoader2.setMaterials исключение или ошибку, которую вы видите в журнале консоли браузера? Можете ли вы увидеть, является ли массив материалов нулевым, прежде чем передать его?   -  person Timothy John Laird    schedule 02.11.2017
comment
Итак, если я переключусь на OBJLoader2, я увижу форму, но весь материал будет серым. И я получаю следующую ошибку › THREE.BufferGeometry.computeBoundingSphere(): Вычисленный радиус равен NaN. Атрибут position, вероятно, имеет значения NaN.   -  person steveg    schedule 02.11.2017
comment
Можете ли вы зайти в браузер и поставить точку останова, где вызывается calculateBoundingSphere (думаю, 4 места) в BufferGeometry.js? Он генерирует тот же текст ошибки, который вы видели, и я думаю, что он вызывается в какой-то момент, когда вызывается objloader2.load. Посмотрим, даст ли это какие-нибудь подсказки.   -  person Timothy John Laird    schedule 06.11.2017
comment
Есть новости по этому поводу? Я вижу ту же проблему с фреймом, и он использует three.js   -  person Omid    schedule 12.10.2018
comment
@Omid да, мне пришлось вручную изменить значение «d» внутри файла .mtl с 0 на 1. Кажется, это устанавливает прозрачность, и по какой-то причине по умолчанию материал был полностью прозрачным при загрузке из poly.google. ком   -  person steveg    schedule 20.10.2018


Ответы (2)


Что-то подобное было и у меня, только модель была вся черная. Мне пришлось открыть файл .mtl и изменить «Kd 0,00 0,00 0,00» на «Kd 1,00 1,00 1,00».

person phreakhead    schedule 25.11.2018

Поэтому решение для меня состояло в том, чтобы вручную изменить значение «d» внутри файла материала (.mtl) с 0,00000 до 1,00000.

person steveg    schedule 20.10.2018