1

我刚刚开始使用 JSC3D。

我已按照文档中的入门指南进行操作:https ://code.google.com/p/jsc3d/wiki/GettingStarted

代码看起来不错,但我的文件似乎没有加载,加载栏只是冻结。

 <!DOCTYPE HTML>
<HTML>
<HEAD>
<TITLE>Loader</TITLE>
<script type="text/javascript" src="jsc3d/jsc3d.js"></script>
<script type="text/javascript" src="jsc3d/jsc3d.webgl.js"></script>
<script type="text/javascript" src="jsc3d/jsc3d.touch.js"></script>
</HEAD>

<BODY>
<div style="width:800px; margin:auto; position:relative;">
    <canvas id="cv" style="border: 1px solid;" width="750" height="400">
        It seems you are using an outdated browser that does not support canvas :-(
    </canvas>
</div>

<script type="text/javascript">
        var viewer = new JSC3D.Viewer(document.getElementById('cv'));
        viewer.setParameter('SceneUrl',         'cube.obj');
        viewer.setParameter('ModelColor',       '#CAA618');
        viewer.setParameter('BackgroundColor1', '#E5D7BA');
        viewer.setParameter('BackgroundColor2', '#383840');
        viewer.setParameter('RenderMode',       'flat');
        viewer.init();
        viewer.update();
    </script>

</BODY>
</HTML>

有谁知道我哪里出错了?

问候,

乙先生

编辑:不在 chrome 中测试时似乎工作正常。在 chrome 中加载外部文件可能是一个问题。

4

2 回答 2

0

首先,如果您显示实时 URL 将更容易帮助:)

我认为您对 JS jsc3d 苍蝇的路径有疑问:

<script type="text/javascript" src="jsc3d/jsc3d.js"></script>
<script type="text/javascript" src="jsc3d/jsc3d.webgl.js"></script>
<script type="text/javascript" src="jsc3d/jsc3d.touch.js"></script>

当路径正确时(使用您的 html 代码),这对我很有效。您可以检查页面源代码中的路径,看看是否正确。

我希望我对你有帮助!

于 2014-10-18T23:43:43.583 回答
0

JSC3D 演示(例如Statue)在从服务器查看时工作正常,但是当从本地文件系统运行相同的代码时,它无法在 IE 或 Chrome 中加载模型。(IE 没有说明加载,Chrome 显示进度条并挂起)。其他查看器信息(背景颜色、背景图像、BMW演示的选项控件等)正确显示。Avatar演示在 html 文件中而不是外部文件中包含模型定义,当存储在本地文件系统上时可以正常运行。

Chrome 揭示了这个问题——浏览器认为本地文件系统上的 HTML 文件试图从本地文件系统加载对象是跨站点脚本攻击并阻止加载:

XMLHttpRequest cannot load file:///X:/jsc3d/demos/bank/Western_Bank.obj. Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https, chrome-extension-resource.JSC3D.ObjLoader.loadObjFile @ jsc3d.js:5117
jsc3d.js:5111 The XMLHttpRequest progress event property 'position' is deprecated. Please use 'loaded' instead.
jsc3d.js:5111 The XMLHttpRequest progress event property 'totalSize' is deprecated. Please use 'total' instead.
jsc3d.js:5117 Uncaught NetworkError: Failed to execute 'send' on 'XMLHttpRequest': Failed to load 'file:///X:/jsc3d/demos/bank/Western_Bank.obj'.

例程 JSC3D.ObjLoader.loadObjFile(jsc3d.js 第 5071-5118 行)使用 xhr 加载对象,而不管对象文件的协议方案如何。

如何使用 Javascript 打开本地磁盘文件?描述了如何从本地磁盘读取文件,并且为了处理本地文件 loadObjFile() 显然需要修改以包含一个特殊情况,使用FileReader而不是xhr当目标文件 URL 引用本地文件系统时。

根据Chrome FileReader的说法,即使 jsc3d 被修改为使用 FileReader,它在默认情况下显然仍然无法工作。浏览器需要使用 --allow-file-access-from-files 开关启动。

于 2015-10-27T20:05:55.143 回答