THREE.js Collada纹理没有加载

时间:2015-06-15 19:22:00

标签: html5 three.js cors collada

1)启动本地网络服务器

C:\Users\Public\Documents\Rick>http-server . -p 8832 --cors
Starting up http-server, serving . on: http://0.0.0.0:8832<br/>
Hit CTRL-C to stop the server<br/><br/>
**partial log** from (node.js) http-server . -p 8832 --cors<br/><br/>
[Mon, 15 Jun 2015 18:14:57 GMT] "GET /2015_03_19_Try6a3D_dae/2015_03_19_Try6a3D/scrn_ground.png" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML,  like Gecko) Chrome/43.0.2357.124 Safari/537.36"<br/><br/>

2)启动加载的html文件 2015_03_19_Try6a3D_dae / 2015_03_19_Try6a3D.dae

from collada.html (javascript console)<br/><br/>
Uncaught SecurityError: Failed to execute 'texImage2D' on 'WebGLRenderingContext': The cross-origin image at http://localhost:8832/2015_03_19_Try6a3D_dae/2015_03_19_Try6a3D/scrn_ground.png may not be loaded.<br/><br/>

我试图在这里发布加载dae的javascript,但无法正确格式化。

3)在纹理加载错误发生之前,会有一些短暂的闪现。此dae已在Sketchup中加载,其中显示所有纹理。当然,我很困惑,因为交叉原始加载必须首先加载2015_03_19_Try6a3D.dae。我很乐意发送任何人collada.html,2015_03_19_Try6a3D.dae,以及所有相关文件供他们使用。

1 个答案:

答案 0 :(得分:3)

我遇到了同样的问题。 ColladaLoader.js目前没有解决开箱即用的CORS问题。为了渲染纹理,它实现了Loader类或ImageLoader类(取决于具体情况)。如果你想在Collada引用的所有情况下避免跨源错误,两者都需要将CORS原点分配给''或'匿名'。

转到ColladaLoader.js中的这一行:

texture = loader.load( url );

在它正上方添加此行:

loader.crossOrigin = '';

然后在同一个脚本中转到这一行:

loader = new THREE.ImageLoader();

并在其下方添加此行:

loader.setCrossOrigin( '' );

瞧!在我做出这个改变之后,我的跨源错误就消失了。