-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.js
125 lines (84 loc) · 4.07 KB
/
main.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
const scene = new THREE.Scene();
const light = new THREE.PointLight()
light.position.set(45, 7.5, 75)
scene.add(light)
const camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.1, 1000 );
const renderer = new THREE.WebGLRenderer({antialias: true });
renderer.setSize( window.innerWidth, window.innerHeight );
renderer.setPixelRatio(window.devicePixelRatio);
document.body.appendChild( renderer.domElement );
const geometry = new THREE.SphereGeometry( 15, 50 ,50 );
const material = new THREE.MeshPhongMaterial( { wireframe: false,map: new THREE.TextureLoader().load('./img/moon_color.jpg')
,bumpMap:new THREE.TextureLoader().load('./img/moon_dis.jpg') ,
bumpScale: 0.5
} );
const sphere = new THREE.Mesh( geometry, material );
scene.add( sphere );
const geometry1 = new THREE.SphereGeometry( 500, 50 ,50 );
const material1 = new THREE.MeshBasicMaterial( {
map: new THREE.TextureLoader().load('./img/stars.jpg'),
side: THREE.BackSide
} );
const sphere1 = new THREE.Mesh( geometry1, material1 );
scene.add( sphere1 );
const group = new THREE.Group();
group.add(sphere)
scene.add(group)
const starGeometry = new THREE.BufferGeometry();
const starMaterial = new THREE.PointsMaterial({
color: 0xffffff
});
const starVertices = [];
for (let i=0; i<100000; i++){
const x = (Math.random() - 0.5) * 2000;
const y = (Math.random() - 0.5) * 2000;
const z = -Math.random() * 3000;
starVertices.push(x, y, z);
}
starGeometry.setAttribute('position',
new THREE.Float32BufferAttribute(starVertices, 3)
);
const stars = new THREE.Points(starGeometry, starMaterial);
scene.add(stars)
camera.position.z = 45;
//controls
controls = new THREE.OrbitControls( camera, renderer.domElement);
controls.enableDamping = true;
function animate() {
requestAnimationFrame( animate );
stars.rotation.y += 0.0001;
sphere.rotation.y += 0.01;
addEventListener('dblclick', () => {
const fullscreenElement = document.fullscreenElement || document.webkitFullscreenElement;
if (!fullscreenElement) {
if (renderer.domElement.requestFullscreen) {
renderer.domElement.requestFullscreen();
} else if (renderer.domElement.webkitRequestFullscreen) {
renderer.domElement.webkitRequestFullscreen();
}
} else {
if (document.exitFullscreen) {
document.exitFullscreen();
} else if (document.webkitExitFullscreen) {
document.webkitExitFullscreen();
}
}
})
addEventListener('keydown', (event) => {
if (event.code === 'KeyW') {
camera.position.y += 0.001;
}
if (event.code === 'KeyS') {
camera.position.y -= 0.001;
}
if (event.code === 'KeyD') {
camera.position.x += 0.001;
}
if (event.code === 'KeyA') {
camera.position.x -= 0.001;
}
})
controls.update();
renderer.render( scene, camera );
};
animate();