【发布时间】:2020-01-06 23:41:21
【问题描述】:
我有一个本地文件,我尝试在其中加载这样的纹理:
var texture = THREE.ImageUtils.loadTexture( 'image.jpg' );
var cubeGeo = new THREE.CubeGeometry( 50, 50, 50 );
var cubeMat = new THREE.MeshBasicMaterial( { map: texture } );
var cube = new THREE.Mesh( cubeGeo, cubeMat );
scene.add( cube );
图像未显示(立方体为黑色)。 当我将整个文件夹移动到服务器并从那里加载时,会显示图像。
我的问题是,为什么当文件在服务器上而不是在我的计算机上时它可以工作?所有文件都已复制,因此丢失文件不是问题。我也尝试了绝对路径,但仍然没有结果。我必须更改计算机上的某些设置吗? 我正在使用 Chrome 32.0.1700.76 m(撰写本文时的最新版本)在 Windows 7 上尝试此操作,并且我正在使用 THREE.js r64。没有使用其他库。
【问题讨论】:
-
通过双击加载到桌面的文件和加载到服务器的文件在功能上存在很大差异。通常这是安全限制的问题,尤其是 Internet Explorer,但服务器通常具有可用的进程,而这些进程在桌面双击时不可用。这就是我们拥有服务器而不仅仅是连接桌面的原因。
-
哦,我很确定 loadTexture 使用 url 来访问纹理,并且只能从服务器获得。 WampServer 非常适合 Windows 并且易于安装。您可以将文件放在它的 www 目录中,然后使用 localhost/ 在浏览器中访问它们
-
查看thisthree.js wiki 文章是否对您有帮助 - 并检查您的控制台是否有错误。
-
@WestLangley:谢谢,
--allow-file-access-from-files解决了它。显然浏览器可以防止加载本地文件。
标签: javascript image three.js textures local