cube-parameters
Version:
A sophisticated 3D model viewer built with React, TypeScript, and Three.js, featuring advanced visualization tools, measurement capabilities, and lighting controls.
26 lines (20 loc) • 784 B
text/typescript
import * as THREE from 'three';
import { createRaycaster, getIntersectableObjects } from '../utils/raycastUtils';
export const performRaycast = (
x: number,
y: number,
renderer: THREE.WebGLRenderer,
camera: THREE.PerspectiveCamera,
scene: THREE.Scene
) => {
const { raycaster, mouse, dispose } = createRaycaster();
const rect = renderer.domElement.getBoundingClientRect();
mouse.x = ((x - rect.left) / rect.width) * 2 - 1;
mouse.y = -((y - rect.top) / rect.height) * 2 + 1;
raycaster.setFromCamera(mouse, camera);
const intersectableObjects = getIntersectableObjects(scene);
const intersects = raycaster.intersectObjects(intersectableObjects, true);
const result = intersects.length > 0 ? intersects[0].object : null;
dispose();
return result;
};