three.js, текстуры не будут загружаться в codepen

#javascript #three.js #textures #texture-mapping

Вопрос:

Я начинаю учиться three.js, я делаю это на codepen.io. Проблема в том, что я пытаюсь добавить текстуру в свою boxgeometry, но она не появляется, в чем проблема с моим кодом?

 const cubetexture = new THREE.TextureLoader().load('https://i.stack.imgur.com/9vixO.png');

const geometry = new THREE.BoxGeometry( 10, 10, 10 )
const material = new THREE.MeshBasicMaterial( { map: cubetexture } );
const cube = new THREE.Mesh( geometry, material );
cube.rotateY(Math.PI / 3);
scene.add(cube)
 

Ответ №1:

Ваше изображение блокируется, потому что Imgur не указывает политику CORS. По соображениям безопасности современные браузеры откажутся загружать изображение, как видно из консоли разработчика:

Консоль Chromium, отображающая неудачную выборку изображения

В этом случае самым простым решением было бы повторно загрузить свое изображение в Imgur через основной сайт и использовать URL-адрес оттуда. i.stack.imgur.com (изображения, загруженные через Stackoverflow) не отправляет необходимые заголовки CORS, но i.imgur.com (изображения, загруженные через основной сайт) отправляет.

Комментарии:

1. Проблема в том, что я пытаюсь использовать изображение примера three.js сопоставление, и это не сработало

2. Современные версии three.js предполагается, что эта проблема с CORS будет решена автоматически, но лично я не смог заставить ее работать, если вы об этом говорите — возможно, это проблема с codepen.io