0

我正在尝试学习 ThreeCSG.js,这是 Three.js 的 javascript Constructive Solid Geometry 前端。我想我会先从网上复制一个最小的例子。我尝试使用网站上的 ThreeCSG.js 保存 Chandler Prall 令人惊叹的小 javascript Constructive Solid Geometry 示例的本地副本

https://stemkoski.github.io/Three.js/CSG.html

当我制作页面的本地副本时(使用 Chrome 的另存为网页,完成命令),我发现棋盘纹理文件丢失了。我收到以下 javascript 控制台错误:

Failed to load resource: net::ERR_FILE_NOT_FOUND

带有(丢失的)jpg文件的完整路径名。当我手动下载 jpg 文件并将其放在 Chrome 正在寻找 jpg 文件的位置时,我得到了一个不同的错误:

The cross-origin image at file:///C:/tmp/images/checkerboard.jpg may not be loaded.

我的浏览器是 Chrome 43.0.2357.134,Windows 7 64。我在 IE 上遇到了类似的问题。认为这可能是three.js 的错误/功能,我尝试了three.min.js 的最新版本,但出现语法错误。(该示例使用了旧版本的threecsg.js,并且API已更改。)

我究竟做错了什么?

4

4 回答 4

0

它不会下载图像目录,因此值得注意的是加载它并在代码中抛出错误

var floorTexture = new THREE.ImageUtils.loadTexture( 'images/checkerboard.jpg' );

您需要下载该图像并使用任何网络服务器来呈现 html 页面,因为它正在发出 ajax 请求来呈现该图像

于 2015-07-18T22:52:08.863 回答
0

您面临的问题称为CORS。您需要根据这篇 github wiki 文章配置您的浏览器:

如何在本地运行东西

在没有更多信息的情况下粘贴链接是不好的做法,但设置取决于您使用的浏览器。

另一种解决方案是在本地服务器上运行它,如何执行此操作也在第二个链接中进行了说明。

于 2015-07-19T00:38:40.373 回答
0

如果您使用的是 Chrome 并且它只是用于测试,那么有一个 Chrome 扩展程序将允许-控制-允许-来源

于 2015-07-19T01:43:07.357 回答
0

主要问题是您在本地获取文件。该文件需要从服务器获取。所以最好的选择是使用一些像 net beans 这样的 IDE 并将其作为 Web 应用程序执行

于 2018-06-11T11:09:47.567 回答