Я знаю, что это было задано раньше, и я прочитал все вопросы и ответы, которые мне удалось найти, но ничего не работает.
Я запускаю это на локальном сервере (IIS). Я пытаюсь загрузить изображение из imgur, а затем использовать его как текстуру для объекта с помощью кода:
var savedImage = /[^?]*$/.exec(location.search)[0];
if (savedImage != "") { savedImageLoad("http://i.imgur.com/" + savedImage + ".jpg"); };
function savedImageLoad(image) {
var mapOverlay = new THREE.ImageUtils.loadTexture(image);
sphere.material = new THREE.MeshBasicMaterial({map: mapOverlay, needsUpdate: true});;
sphere.geometry.buffersNeedUpdate = true;
sphere.geometry.uvsNeedUpdate = true;
}
Но это дает ошибку:
Uncaught SecurityError: Failed to execute 'texImage2D' on 'WebGLRenderingContext': The cross-origin image at http://i.imgur.com/uBD0g95.jpg may not be loaded.
Я попытался разместить THREE.ImageUtils.crossOrigin = "anonymous";
или некоторые изменения в начале моего кода в конце и в других разных точках. Я добавил web.config с
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Methods" value="GET,PUT,POST,DELETE,OPTIONS" />
<add name="Access-Control-Allow-Headers" value="Content-Type" />
</customHeaders>
</httpProtocol>
</system.webServer>
</configuration>
но это не сработало. Это также не работает на сайте, размещенном на bitbucket.org, который мне говорит, что в моем коде отсутствует что-то.
Кажется, что он не работает в строке sphere.material = new THREE.MeshBasicMaterial({map: mapOverlay, needsUpdate: true});;
, как если бы я прокомментировал это, тогда нет ошибки (но тогда сетка не обновляется).
Я действительно в недоумении, что еще попробовать здесь, и любая помощь будет оценена.