// 크로스 헤어
let mousePosition = new THREE.Vector2();
const crosshairs = new THREE.Group();
crosshairs.position.z = -1;
camera.add(crosshairs);
const crossMaterial = new THREE.LineBasicMaterial({
color: 0xfffff,
})
const lineGeometry = new THREE.BufferGeometry();
const lineVerts = [ 0, 0.05, 0, 0, 0.02, 0];
lineGeometry.setAttribute("position", new THREE.Float32BufferAttribute(lineVerts, 3))
for ( let i = 0; i < 4; i++){
const line = new THREE.Line(lineGeometry, crossMaterial);
line.rotation.z = i * 0.5 * Math.PI;
crosshairs.add(line)
}
// 십자선과 마우스 일치
const onMouseMove = (evt)=> {
w = window.innerWidth;
h = window.innerHeight;
let aspect = w/h;
let fudge = { x: aspect * 0.75, y: 0.75};
mousePosition.x = ((evt.clientX /w) * 2 -1) * fudge.x;
mousePosition.y = (-1 * (evt.clientY / h) *2 + 1) * fudge.y;
}
window.addEventListener("mousemove", onMouseMove, false)
function animate(t = 0) {
updateCamera(t);
requestAnimationFrame(animate);
crosshairs.position.set(mousePosition.x, mousePosition.y);
}
animate();
TWEEN (0) | 2024.11.21 |
---|---|
CSS3DRenderer 팩키지 (0) | 2024.11.21 |
crosshairs ( 십자선 ) 만들기 (1) | 2024.10.11 |
camera.updateProjectionMatrix() (3) | 2024.10.11 |
MeshNormalMaterial (0) | 2024.09.23 |