У меня проблема с загрузкой объектов в 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);
});
Извините, если он слишком длинный.
Возможно, объектный файл поврежден. И если так, то как я могу это исправить?
Редактировать: Это из-за отражения света?