Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.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中更改鼠标上方纹理的颜色_Javascript_Three.js_Textures_Mouseover - Fatal编程技术网

Javascript 在Three.js中更改鼠标上方纹理的颜色

Javascript 在Three.js中更改鼠标上方纹理的颜色,javascript,three.js,textures,mouseover,Javascript,Three.js,Textures,Mouseover,我已经能够实现MouseOver事件来更改应用程序中几个对象的颜色,但使用“disc.png”创建的纹理除外(这些是结果窗口中的红点)。我希望能够做相反的事情,只改变纹理的颜色。为了实现这一点,我需要更改代码的哪一部分 var渲染器、场景、摄影机; var控制; var统计; var摄像机控制; //var半径=7.7; var半径=15; var group=new THREE.Object3D(); var raycaster=new THREE.raycaster(); var mous

我已经能够实现MouseOver事件来更改应用程序中几个对象的颜色,但使用“disc.png”创建的纹理除外(这些是结果窗口中的红点)。我希望能够做相反的事情,只改变纹理的颜色。为了实现这一点,我需要更改代码的哪一部分

var渲染器、场景、摄影机;
var控制;
var统计;
var摄像机控制;
//var半径=7.7;
var半径=15;
var group=new THREE.Object3D();
var raycaster=new THREE.raycaster();
var mouse=new THREE.Vector3(),相交;
//初始化场景、摄影机和对象。
函数init(){
//要显示任何内容,您需要3件事情:(1)场景,(2)摄影机,(3)渲染器
场景=新的三个。场景();
摄像头=新的三个透视摄像头(45,window.innerWidth/window.innerHeight,0.11000);
renderer=new THREE.WebGLRenderer();
setClearColor(0x000000,1.0);
renderer.setSize(window.innerWidth、window.innerHeight);
renderer.shadowMapEnabled=true;
//火星需要(1)几何形状,(2)材料,(3)网格
var球化法=新的三种球化法(15,60,60);
var sphereMaterial=createMarsMaterial();
var marsMesh=新的三种网格(球墨法、球材料);
marsMesh.name='mars';
场景。添加(marsMesh);
//将摄影机定位并指向场景的中心
摄像机位置x=25;
摄像机位置y=26;
摄像机位置z=30;
摄像机。注视(场景。位置);
//添加控件
cameraControl=新的三个轨道控制(摄像头);
//为控件gui设置控件对象
控件=新函数(){
该转速=0.000;
};
//添加额外内容
addControlGui(控件);
addStatsObject();
//将渲染器的输出添加到html元素
document.body.appendChild(renderer.doElement);
//添加一个星形字段
var starsGeometry=新的3.Geometry();
对于(变量i=0;i<10000;i++){
var star=新的3.Vector3();
star.x=THREE.Math.randFloatSpread(2000);
star.y=THREE.Math.randFloatSpread(2000);
star.z=THREE.Math.randFloatSpread(2000);
星形几何。顶点。推(星形)
}
var starsmatary=new THREE.pointsmatary({color:0xF9F9CF})
var starField=新的三个点(starsGeometry,starsMaterial);
场景。添加(starField);
//开始制作动画
render();
}
函数createMarsMaterial(){
//4096是地图的最大宽度
var marsTexture=3.ImageUtils;
marsTexture.crossOrigin=“”;
marsTexture=3.ImageUtils.loadTexture(“https://tatornator12.github.io/classes/final-project/Using_Three_-_D3/mars.jpg");
var MARSMATERY=新的三个.MeshBasicMaterial();
marsMaterial.map=marsTexture;
归还材料;
}
函数addControlGui(controlObject){
var gui=new dat.gui();
添加(controlObject,‘旋转速度’,-0.01,0.01);
}
函数addStatsObject(){
统计数据=新统计数据();
stats.setMode(0);
stats.domElement.style.position='绝对';
stats.domeElement.style.left='0px';
stats.domElement.style.top='0px';
document.body.appendChild(stats.domeElement);
}
函数render(){
stats.update();
cameraControl.update();
scene.getObjectByName('mars').rotation.y+=control.rotationSpeed;
渲染器。渲染(场景、摄影机);
请求动画帧(渲染);
}
函数handleResize(){
camera.aspect=window.innerWidth/window.innerHeight;
camera.updateProjectMatrix();
renderer.setSize(window.innerWidth、window.innerHeight);
}
window.onload=init;
addEventListener('resize',handleResize,false);
addEventListener('mousemove',onMouseMove,false);
var着陆位置=”https://tatornator12.github.io/classes/final-project/Mars_LandingSites2.json";
d3.队列()
.defer(d3.json,登陆站点)
.等待(准备好);
函数就绪(错误,json){
如果(错误)抛出错误;
添加(graticule=线框(graticule10(),新的THREE.LineBasicMaterial({color:0xaaaaaa}));
forEach(函数(d){group.add(createDot(d))});
场景。添加(组);
d3.定时器(功能(t){
//groups.rotation.y=Math.sin(t/11000)*Math.PI/3-Math.PI/2;
//旋转组y=t/10000;
渲染器。渲染(场景、摄影机);
});
}
//将以度为单位的点[经度,纬度]转换为3.3矢量。
函数顶点(点){
var lambda=点[0]*Math.PI/180,
φ=点[1]*Math.PI/180,
cosPhi=数学cos(phi);
返回新的3.Vector3(
半径*余弦*数学余弦(λ),
半径*余弦*数学sin(λ),
半径*数学sin(φ)
);
}
函数createDot(功能){
var landingSitesGeometry=新的3.Geometry();
var位置=顶点(特征、几何、坐标);
着陆点几何.顶点.推力(位置);
var landingSitesMaterial=new THREE.PointsMaterial({大小:1.5,颜色:0xff0000,贴图:THREE.ImageUtils.loadTexture('https://raw.githubusercontent.com/mrdoob/three.js/master/examples/textures/sprites/disc.png“”,透明:true});
var dot=新的三个点(着陆点几何、着陆点材料);
点位置设置(位置x、位置y、位置z);
返回点;
}
//将球坐标系中的GeoJSON多线段转换为三段线线段。
功能线框(多重线框、材质){
var几何=新的三个几何体;
multilinestring.coordinates.forEach(函数(行){
d3.对(线、映射(顶点)、函数(a、b){
几何。顶点。推(a,b);
});
});
返回新的三条线段(几何体、材质);
}
//看https://github.com/d3/d3-geo/issues/95
函数分划10(){
varε=1e-6,
x1=180,x0=-x1,y1=80,y0=-y1,dx=10,dy=10,
X1=180,X0=-X1,Y1=90,Y0=-Y1,DX=90,DY=360,
x=分划(y0,y1,2.5),y=分划(x0,x1,2.5),
X=分划(Y0,Y1,2.5),Y=分划(X0,X1,2。