Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/455.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Three.js-Can';不要加载纹理_Javascript_Image_Three.js_Textures - Fatal编程技术网

Javascript Three.js-Can';不要加载纹理

Javascript Three.js-Can';不要加载纹理,javascript,image,three.js,textures,Javascript,Image,Three.js,Textures,所以我要做的就是抓取我保存在文件夹中的纹理。我得到的错误是: “得到file:///E:/Html/Expo%20Sites/Good%20Site/tex/dirt.jpg net::找不到错误文件“ 我获取纹理,将其放入变量中,创建几何体,创建材质,然后创建对象并为其指定材质。我是Three.js库的新手,所以我可能遗漏了一些非常明显的东西。这是密码,如果你想看看的话 var mousePos = {x: 0.0, y: 0.0}; var windowCenterX = window.in

所以我要做的就是抓取我保存在文件夹中的纹理。我得到的错误是:
“得到file:///E:/Html/Expo%20Sites/Good%20Site/tex/dirt.jpg net::找不到错误文件“

我获取纹理,将其放入变量中,创建几何体,创建材质,然后创建对象并为其指定材质。我是Three.js库的新手,所以我可能遗漏了一些非常明显的东西。这是密码,如果你想看看的话

var mousePos = {x: 0.0, y: 0.0};
var windowCenterX = window.innerWidth / 2;
var windowCenterY = window.innerHeight / 2;  
var scene = new THREE.Scene();

var camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
var renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
renderer.shadowMapenabled = true;
renderer.shadowMapType = THREE.PCFSoftShadowMap;

document.body.appendChild(renderer.domElement);

var dirtTex = new THREE.ImageUtils.loadTexture('tex/dirt.jpg');

var geometry = new THREE.BoxGeometry( 1, 1, 1);
var floor = new THREE.BoxGeometry(10, 1, 10);

var material = new THREE.MeshLambertMaterial({map: dirtTex});

var cube = new THREE.Mesh(geometry, material);

var floor = new THREE.Mesh(floor, material);

var directionalLight = new THREE.DirectionalLight(0xCCFFCC, 1.0);

var hemiLight = new THREE.HemisphereLight(0xCCFFCC, 0xCCFFCC, 0.6); 

cube.position.z = -5;
cube.castShadow = true;
cube.recieveShadow = true;
scene.add(cube);

floor.position.z = -5;
floor.position.y = -3;
floor.castShadow = true;
floor.recieveShadow = true;
scene.add(floor);

directionalLight.position.set(0, 1, 0);
directionalLight.shadowDarkness = 1.0;
directionalLight.castShadow = true;
directionalLight.shadowCameraVisible = true;
directionalLight.shadowCameraRight =  5;
directionalLight.shadowCameraLeft = -5;
directionalLight.shadowCameraTop =  5;
directionalLight.shadowCameraBottom = -5;
scene.add(directionalLight);

hemiLight.castShadow = true;
scene.add(hemiLight);

function Update()
{
    requestAnimationFrame(Update);

    if(mousePos.x == null || 0)
        mousePos.x = 1;
    if(mousePos.y == null || 0)
        mousePos.y = 1;

    cube.rotation.x = mousePos.y / 500;
    cube.rotation.y = mousePos.x / 500;

    renderer.render(scene, camera);
}
Update();

document.onmousemove = function (e)
{
    if(e.pageX != null)
        mousePos.x = e.pageX;
    if(e.pageY != null)
        mousePos.y = e.pageY;
    mousePos.x = (mousePos.x - windowCenterX);
    mousePos.y = (mousePos.y - windowCenterY);
}

如果从外部文件加载模型或纹理,由于浏览器的 “同源策略”安全限制,从文件系统加载 将因安全异常而失败

有两种方法可以解决此问题:

1) 更改浏览器中本地文件的安全性

2) 从本地服务器运行文件


要进一步扩展玩家的答案,您必须下载某种本地服务器,运行它,然后转到浏览器中指向该服务器的任何位置

要做到这一点(因为我也感到困惑),您可以安装一个本地服务器(我使用node-下载node)

之后(假设您从此处开始使用节点),要将服务器cd安装到项目目录并在命令行中运行:

npm安装http服务器-g

要运行:

http服务器

然后转到默认的本地页面

http://localhost:8080/

您应该可以在那里看到您的项目。

它是否会在
var dirtTex=new THREE.ImageUtils.loadTexture('tex/dirt.jpg')一行中显示错误?嗯,好的,谢谢,我真的不知道那是什么意思。我应该在谷歌硬盘上放点什么吗?或者运行本地服务器,或者在服务器上托管所有内容,或者告诉你的浏览器允许访问本地资源。那么我该如何告诉浏览器允许访问本地资源呢?如果我让它允许这样做,其他人会允许访问吗?感谢您的耐心。根据您的浏览器,请查看我答案中的链接。此设置仅适用于您自己的浏览器。如果您将工作作为压缩文件分发,则用户需要更改其浏览器安全设置。如果您将其托管在服务器上,则无需配置即可工作。谢谢。如何将其托管在服务器上?在我的Google Drive帐户上向网络公开它是否等同于在服务器上托管它?很抱歉提出这些愚蠢的问题,我对网络(以及任何类似的东西)没有任何经验。