我正在使用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文件?
(当我尝试运行名为“webgl_loader_json_blender.html”的Three.js示例文件时,它使用了blender模型的加载,在运行本地apache服务器的Eclipse中,它能够在我运行时正确加载blender文件“ webgl_loader_json_blender.html“在Chrome浏览器中。”
答案 0 :(得分:2)
我不是专家,但你的浏览器“同源策略”安全限制似乎是个问题。从three.js存储库中检查此链接:https://github.com/mrdoob/three.js/wiki/How-to-run-things-locally
我经历过使用Mozilla Firefox而不是Chrome加载本地模型更容易。
所以答案是没有,服务器不需要加载模型。
祝你好运!