Three.js - 无法将本地图像用于 loadTexture

Three.js - Cannot use local image for loadTexture

我试图在 Three.js 中使用本地图像进行 loadTexture,但出现以下错误: 未捕获的安全错误:无法在 'WebGLRenderingContext' 上执行 'texImage2D':位于 .... 的跨源图像可能无法加载。

我在 apache tomcat(本地)上有一个 java 应用程序 运行ning,它为我的图像提供以下 url:http://localhost:8084/sve/img/wood-texture.jpg

这是我的java脚本代码,我在其中尝试加载图像:

var woodTexture = new THREE.ImageUtils.loadTexture('http://localhost:8084/sve/img/wood-texture.jpg');

我正在使用 Google Chrome(版本 40.0.2214.111 m)运行 我的 Three.js 程序。我也尝试这样启动 chrome:chrome.exe --allow-file-access-from-files。但是我得到了同样的错误。

有人对此有任何解决方案吗?

确保纹理由与您的 three.js 应用相同的服务器提供服务可能是最简单的。

如果您仍然需要它来自另一个服务器(在您的示例中另一个端口上的 Java 应用程序),您需要让 Java 应用程序设置一些 CORS headers .

例如:"Access-Control-Allow-Origin: *"

有关详细信息,请参阅 https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS