3

我正在使用 Three.js 开发一个基于 Web 的 3D WebGL 应用程序。我正在尝试使用以下代码加载“Blender”模型 JS 文件:

var loader = new THREE.JSONLoader();
    var jsonLoader = new THREE.JSONLoader();
    jsonLoader.load( "../build/MySampleModel.js", addModelToScene );
    // addModelToScene function is called back after model has loaded

    var ambientLight = new THREE.AmbientLight(0x111111);
    scene.add(ambientLight);

    function addModelToScene( geometry, materials ) 
    {
        var material = new THREE.MeshFaceMaterial( materials );
        meshObj = new THREE.Mesh( geometry, material );
        meshObj.scale.set(10,10,10);
        meshObj.add( android );
    }      

当我在 Chrome 浏览器中对此进行测试时,它不会加载模型并给出以下错误:

THREE.WebGLRenderer 59dev three.min.js:417
XMLHttpRequest cannot load file:///Users/xxxx/Desktop//THREE_JS_3DWEB/Dev/three.js-dev/build/MySampleModel.js. Cross origin requests are only supported for HTTP. three.min.js:211
THREE.JSONLoader: [../build/HouseModel.js] seems to be unreachable or file there is empty three.min.js:210
Uncaught Error: NETWORK_ERR: XMLHttpRequest Exception 101 three.min.js:211

我没有在我的机器上运行任何本地服务器。是否需要运行本地服务器才能在基于 Three.js 的项目中加载 Blender 模型 JS 文件?

(当我尝试在运行本地 apache 服务器的 Eclipse 中运行名为“webgl_loader_json_blender.html”的 Three.js 示例文件时,它使用加载搅拌机模型,当我运行“webgl_loader_json_blender.html”时,它能够正确加载搅拌机文件" 在 Chrome 浏览器中。)

4

1 回答 1

2

我不是专家,但您的问题似乎与浏览器的“同源策略”安全限制有关。从 three.js 存储库中检查此链接:https ://github.com/mrdoob/three.js/wiki/How-to-run-things-locally

我体验过使用 Mozilla Firefox 而不是 Chrome 加载本地模型更容易。

所以答案是否定的,服务器不需要加载模型。

祝你好运!

于 2013-06-24T22:20:44.220 回答