import React, { useRef, useEffect } from ‘react’;
import * as BABYLON from ‘@babylonjs/core’;
const BabylonViewer = () => {
const canvasRef = useRef(null);
let scene, camera, engine;
useEffect(() => {
engine = new BABYLON.Engine(canvasRef.current, true);
scene = new BABYLON.Scene(engine);
camera = new BABYLON.ArcRotateCamera(‘camera’, 0, Math.PI / 4, 10, BABYLON.Vector3.Zero(0,1,0), scene);
camera.attachControl(canvasRef.current, true);
camera.radius = 10; // Increase the distance from the center of the scene
const light = new BABYLON.HemisphericLight('light', new BABYLON.Vector3(0, 1, 0), scene);
engine.runRenderLoop(function () {
scene.render();
});
window.addEventListener('resize', function () {
engine.resize();
});
return () => {
window.removeEventListener('resize', function () {
engine.resize();
});
scene.dispose();
engine.dispose();
// light._addToSceneRootNodes();
};
}, );
const handleFileChange = (event) => {
const file = event.target.files[0];
const reader = new FileReader();
reader.onload = function () {
BABYLON.SceneLoader.Load(‘’, reader.result, engine, function (loadedScene) {
scene = loadedScene;
camera = scene.activeCamera;
camera.attachControl(canvasRef.current, true);
camera.radius = 5; // Adjust the camera's radius here
console.log(camera.radius);
});
};
reader.readAsDataURL(file);
};
return (
<canvas ref={canvasRef} style={{ width: '100%', height: 'calc(100vh - 40px)' }} />
</div>
);
};
export default BabylonViewer