feat: implement interactive material color change in vanilla three.js
This commit is contained in:
parent
d8be12d60b
commit
a0956743bd
@ -0,0 +1,35 @@
|
|||||||
|
import * as THREE from "three";
|
||||||
|
|
||||||
|
const scene = new THREE.Scene();
|
||||||
|
scene.background = new THREE.Color('white');
|
||||||
|
const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
|
||||||
|
camera.position.z = 5
|
||||||
|
|
||||||
|
const renderer = new THREE.WebGLRenderer();
|
||||||
|
renderer.setSize(window.innerWidth, window.innerHeight);
|
||||||
|
document.body.appendChild(renderer.domElement);
|
||||||
|
|
||||||
|
const geometry = new THREE.BoxGeometry();
|
||||||
|
const material = new THREE.MeshBasicMaterial({ color: 'red' });
|
||||||
|
const cube = new THREE.Mesh(geometry, material);
|
||||||
|
scene.add(cube);
|
||||||
|
|
||||||
|
function animate() {
|
||||||
|
requestAnimationFrame(animate);
|
||||||
|
cube.rotation.x += 0.01;
|
||||||
|
cube.rotation.y += 0.01;
|
||||||
|
renderer.render(scene, camera);
|
||||||
|
}
|
||||||
|
animate();
|
||||||
|
|
||||||
|
let isGreen = true;
|
||||||
|
|
||||||
|
window.addEventListener('click',()=>{
|
||||||
|
if (isGreen){
|
||||||
|
cube.material.color.set('pink');
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
cube.material.color.set('yellow');
|
||||||
|
}
|
||||||
|
isGreen = !isGreen;
|
||||||
|
})
|
||||||
Loading…
x
Reference in New Issue
Block a user