three.js - цвета не отображаются при попытке загрузить объект - PullRequest
0 голосов
/ 11 декабря 2019

У меня проблема с загрузкой объектов в three.js. Как я уже сказал, цвета не будут отображаться, а объект будет черно-белым!

Вот мой код:

Начало работы (я не совсем уверен, что этот раздел работает нормально, поэтомуЯ положил его сюда.)

const
    width = window.innerWidth - 300,
    height = window.innerHeight,
    scene = new THREE.Scene(),
    camera = new THREE.PerspectiveCamera(90, width / height, 1, 1000),
    renderer = new THREE.WebGLRenderer(),
    controls = new THREE.OrbitControls(camera, renderer.domElement),
    light = new THREE.AmbientLight(0xffffff, .5),
    loader = new THREE.OBJLoader();

camera.position.z = 50;
scene.add(camera);

controls.update();

scene.add(light);

renderer.setSize(width, height);
document.body.appendChild(renderer.domElement);

function animate() {
    requestAnimationFrame(animate);
    controls.update();
    renderer.render(scene, camera);
}

animate();

$(window).resize(function () {
    camera.aspect = width / height;
    camera.updateProjectionMatrix();
    renderer.setSize(width, height);
});

Загрузка объекта

function onProgress(xhr) {
    if (xhr.lengthComputable) {
        const percentComplete = xhr.loaded / xhr.total * 100;
        console.log(Math.round(percentComplete, 2) + '% downloaded');
    }
}

function onError() {
}

const manager = new THREE.LoadingManager();
manager.addHandler(/\.dds$/i, new THREE.DDSLoader());

new THREE.MTLLoader(manager)

    .setPath('http://localhost/X/assets/models/house/')
    .load('CH_building1.mtl', function (materials) {

        materials.preload();
        new THREE.OBJLoader(manager)
            .setMaterials(materials)

            .setPath('http://localhost/X/assets/models/house/')
            .load('CH_building1.obj', function (object) {

                object.position.y = -10;

                scene.add(object);
            }, onProgress, onError);
    });

Извините, если он слишком длинный.

Возможно, объектный файл поврежден. И если так, то как я могу это исправить?

Редактировать: Это из-за отражения света?

...