Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.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 为什么灯光位置不更新?_Javascript_Three.js - Fatal编程技术网

Javascript 为什么灯光位置不更新?

Javascript 为什么灯光位置不更新?,javascript,three.js,Javascript,Three.js,我正在使用three.js渲染移动的圆柱体: let渲染器、摄影机、场景、灯光、圆柱体; 初始化(); 制作动画(); 函数初始化(){ renderer=new THREE.WebGLRenderer({alpha:true,antialas:true}); renderer.setSize(window.innerWidth、window.innerHeight); document.body.appendChild(renderer.doElement); 摄像头=新的三个透视摄像头(4

我正在使用three.js渲染移动的圆柱体:

let渲染器、摄影机、场景、灯光、圆柱体;
初始化();
制作动画();
函数初始化(){
renderer=new THREE.WebGLRenderer({alpha:true,antialas:true});
renderer.setSize(window.innerWidth、window.innerHeight);
document.body.appendChild(renderer.doElement);
摄像头=新的三个透视摄像头(45,窗。内宽/窗。内高);
场景=新的三个。场景();
灯光=新的三个。聚光灯();
场景。添加(灯光);
圆柱体=新的三个网格();
cylinder.material=新的三个.MeshToonMaterial({颜色:#007700“});
圆柱体几何体=新的三个圆柱体几何体(3,3,12,25)
场景.添加(圆柱体);
}
函数animate(){
气缸位置z-=1;
圆柱旋转x-=三个数学degToRad(2);
light.position.x=圆柱体.position.x;
灯位置y=气缸位置y+100;
light.position.z=圆柱体.position.z;
camera.position.x=圆柱体.position.x;
camera.position.y=圆柱体.position.y+10;
camera.position.z=圆柱体.position.z+30;
摄像机.观察(气缸.位置);
请求动画帧(动画);
渲染器。渲染(场景、摄影机);
}
正文{
宽度:100%;
身高:100%;
保证金:0;
填充:0;
边界:0;
背景:#aaccaa;
}
帆布{
显示:块;
}

如果不设置聚光灯的目标,就会发生这种情况

文件说:

.目标

聚光灯从其位置指向target.position。目标的默认位置是(0,0,0)

注意:要将目标位置更改为默认位置以外的任何位置,必须使用将其添加到场景中

因此,这意味着当您使用圆柱体移动灯光时,它(灯光)指向场景的中心,这是默认设置

将圆柱体指定为灯光的目标,您将获得所需的结果

让渲染器、摄影机、场景、灯光、光位置、圆柱体;
初始化();
制作动画();
函数初始化(){
renderer=new THREE.WebGLRenderer({alpha:true,antialas:true});
renderer.setSize(window.innerWidth、window.innerHeight);
document.body.appendChild(renderer.doElement);
摄像头=新的三个透视摄像头(45,窗。内宽/窗。内高);
场景=新的三个。场景();
圆柱体=新的三个网格();
cylinder.material=新的三个.MeshToonMaterial({颜色:#007700“});
圆柱体几何体=新的三个圆柱体几何体(3,3,12,25)
场景.添加(圆柱体);
灯光=新的三个。聚光灯();
lightPosition=新的三个矢量3(0,100,0);
light.target=圆柱体;
场景。添加(灯光);
}
函数animate(){
气缸位置z-=1;
圆柱旋转x-=三个数学degToRad(2);
灯。位置。复制(气缸。位置)。添加(灯位置);
camera.position.x=圆柱体.position.x;
camera.position.y=圆柱体.position.y+10;
camera.position.z=圆柱体.position.z+30;
摄像机.观察(气缸.位置);
请求动画帧(动画);
渲染器。渲染(场景、摄影机);
}
正文{
宽度:100%;
身高:100%;
保证金:0;
填充:0;
边界:0;
背景:#aaccaa;
}
帆布{
显示:块;
}

如果不设置聚光灯的目标,就会发生这种情况

文件说:

.目标

聚光灯从其位置指向target.position。目标的默认位置是(0,0,0)

注意:要将目标位置更改为默认位置以外的任何位置,必须使用将其添加到场景中

因此,这意味着当您使用圆柱体移动灯光时,它(灯光)指向场景的中心,这是默认设置

将圆柱体指定为灯光的目标,您将获得所需的结果

让渲染器、摄影机、场景、灯光、光位置、圆柱体;
初始化();
制作动画();
函数初始化(){
renderer=new THREE.WebGLRenderer({alpha:true,antialas:true});
renderer.setSize(window.innerWidth、window.innerHeight);
document.body.appendChild(renderer.doElement);
摄像头=新的三个透视摄像头(45,窗。内宽/窗。内高);
场景=新的三个。场景();
圆柱体=新的三个网格();
cylinder.material=新的三个.MeshToonMaterial({颜色:#007700“});
圆柱体几何体=新的三个圆柱体几何体(3,3,12,25)
场景.添加(圆柱体);
灯光=新的三个。聚光灯();
lightPosition=新的三个矢量3(0,100,0);
light.target=圆柱体;
场景。添加(灯光);
}
函数animate(){
气缸位置z-=1;
圆柱旋转x-=三个数学degToRad(2);
灯。位置。复制(气缸。位置)。添加(灯位置);
camera.position.x=圆柱体.position.x;
camera.position.y=圆柱体.position.y+10;
camera.position.z=圆柱体.position.z+30;
摄像机.观察(气缸.位置);
请求动画帧(动画);
渲染器。渲染(场景、摄影机);
}
正文{
宽度:100%;
身高:100%;
保证金:0;
填充:0;
边界:0;
背景:#aaccaa;
}
帆布{
显示:块;
}