-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbeans.js
120 lines (93 loc) · 3.08 KB
/
beans.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
import * as THREE from './js/three.module.js';
import {OrbitControls} from "./js/OrbitControls.js";
import {GLTFLoader} from './js/GLTFLoader.js';
var scene, renderer;
var camera;
var mesh;
let darkTheme = 1;
let rotating = 0;
function changeTheme() {
if (darkTheme === 0) {
darkTheme = 1;
console.log('🌙 Theme was changed to Dark Mode.')
document.getElementById('themebtn').innerHTML = "☀️"
} else {
darkTheme = 0
console.log('☀️ Theme was changed to Light Mode.')
document.getElementById('themebtn').innerHTML = "🌙"
}
}
function rotateCan() {
if (rotating === 0) {
rotating = 1;
console.log('🔄 Display mode was enabled.')
document.getElementById('rotatebtn').innerHTML = "🚫"
} else {
rotating = 0
console.log('🚫 Display mode was disabled.')
document.getElementById('rotatebtn').innerHTML = "🔄"
}
}
document.getElementById('themebtn').addEventListener('click', changeTheme, true);
document.getElementById('rotatebtn').addEventListener('click', rotateCan, true);
var isMouseDown = false;
function init() {
scene = new THREE.Scene();
camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
camera.position.z = 25;
camera.position.y = 15;
renderer = new THREE.WebGLRenderer({
antialias: true
});
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);
renderer.setClearColor(0xffffff, 1);
renderer.outputEncoding = THREE.sRGBEncoding;
let controls = new OrbitControls(camera, renderer.domElement);
var light = new THREE.DirectionalLight("#c1582d", 1);
var ambient = new THREE.AmbientLight("#85b2cd");
light.position.set(0, -70, 100).normalize();
scene.add(light);
scene.add(ambient);
var texture = new THREE.Texture();
var loader = new GLTFLoader();
// const size = 75;
// const divisions = 20;
// const gridHelper = new THREE.GridHelper( size, divisions );
// scene.add( gridHelper );
loader.load('./models/beans.gltf', function (gltf) {
mesh = gltf.scene;
mesh.scale.set(1, 1, 1);
scene.add(mesh);
}, );
render();
}
function render() {
requestAnimationFrame(render);
renderer.render(scene, camera);
if (darkTheme == 1) {
renderer.setClearColor(0x121212, 1);
}
if (darkTheme == 0) {
renderer.setClearColor(0xffffff, 1);
}
if (mesh) {
if (rotating == 1) {
mesh.rotation.z += 0.01
mesh.rotation.y -= 0.01
mesh.rotation.x -= 0.01
}
if (rotating == 0) {
mesh.rotation.z = 0;
mesh.rotation.y = 0;
mesh.rotation.x = 0;
}
}
}
window.addEventListener('DOMContentLoaded', init);
window.addEventListener('resize', onWindowResize, false);
function onWindowResize() {
camera.aspect = window.innerWidth / window.innerHeight;
camera.updateProjectionMatrix();
renderer.setSize(window.innerWidth, window.innerHeight);
}