Three.TextureLoader не загружает файлы изображений
Так что я какое-то время возился с THREE и Node, и до сих пор я загружал текстуры с помощью класса TextureLoader следующим образом:
var loader = new THREE.TextureLoader;
loader.crossOrigin = '';
function createSphere ( radius , segments , rings ) {
var geometry = new THREE.SphereGeometry(radius , segments , rings);
var material = new THREE.MeshPhongMaterial({
map: loader.load('./images/...'),
bumpMap: loader.load('./images/...'),
ect...
});
return new THREE.Mesh ( geometry, material )
}
Это работало нормально, и затем я решил, что вместо загрузки текстур при создании материала, который я хотел бы предварительно загрузить всеми своими текстурами, я сделал небольшую утилиту для этого:
var loader = new THREE.TextureLoader;
loader.crossOrigin = '';
var textureMap = {
earthTex : {file : 'earth_no_ice_clouds.jpg', message : 'Loading Global Land Masses'},
earthBumpTex : {file : 'earth_bump.jpg', message : 'Loading Global Depth'},
earthSpecTex : {file : 'earth_specular.png', message : 'Loading Water'},
earthCloudTex : {file : 'earth_clouds.png', message : 'Loading Clouds'},
earthCultureTex : {file : 'earth_cultural.png', message :'Loading Country Borders'},
earthLookUpTex : {file : 'earth_lookup.jpg', message :'Loading Country Projections'},
moonTex : {file : 'moon.jpg', message :'Loading Lunar Surface'},
moonBumpTex : {file : 'moon_bump.jpg', message : 'Loading Lunar Depth'},
skyDomeTex : {file : 'galaxy_3.png', message : 'Loading Galaxy'}
};
Object.size = function(obj) {
var size = 0, key;
for (key in obj) {
if (obj.hasOwnProperty(key)) size++;
}
return size;
}
function loadTextures( ) {
var path = "./images/";
var size = Object.size(textureMap);
var count = 0;
for(var key in textureMap) {
var textureItem = textureMap[key];
var texture = loader.load(path + textureItem.file);
console.log(texture);
}
}
loadTextures();
Всякий раз, когда я запускаю это в своем браузере (Chrome) с открытыми инструментами разработчика, объект THREE.texture, который в конечном итоге регистрируется, имеет свойство image, установленное в «undefined», и свойство src, установленное в «». Я не понимаю, почему это происходит, и я не изменил ни пути к моим файлам .png или .jpg, ни местоположение файла, в котором я использую свой TextureLoader.
Когда я пытаюсь запустить первый фрагмент кода сверху, также возникает ошибка, и теперь я не могу загрузить какие-либо текстуры в свое приложение.
Любая помощь в понимании того, почему это произошло внезапно, будет принята с благодарностью.
РЕДАКТИРОВАТЬ
Я отредактировал первый блок кода в попытке прояснить мою проблему. Я не использовал обещания или обратные вызовы или что-то подобное раньше. Я просто вызывал свою функцию 'createSphere' и подобные функции из моей функции инициализации сцены. Раньше он работал нормально, и у меня не было проблем с загрузкой текстур.
Теперь, используя ту же структуру программы, что и раньше, первый блок кода не работает.