ShopGenV2 / viteGradio /src /multiple3D.jsx
ClaireOzzz's picture
Upload 55 files
a8f64d2
raw
history blame
No virus
5.36 kB
// import React, { useEffect, useRef } from 'react';
// import * as THREE from 'three';
// import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
// const ThreeJSComponent = () => {
// const canvasRef = useRef(null);
// const scenes = [];
// useEffect(() => {
// let canvas, renderer;
// const init = () => {
// canvas = canvasRef.current;
// const content = document.getElementById('content');
// if (!canvas || !content) {
// console.error('Canvas or content element not found');
// return;
// }
// const geometries = [
// new THREE.BoxGeometry( 1, 1, 1 ),
// new THREE.SphereGeometry( 0.5, 12, 8 ),
// new THREE.DodecahedronGeometry( 0.5 ),
// new THREE.CylinderGeometry( 0.5, 0.5, 1, 12 )
// ];
// for ( let i = 0; i < 40; i ++ ) {
// const scene = new THREE.Scene();
// // make a list item
// const element = document.createElement( 'div' );
// element.className = 'list-item';
// const sceneElement = document.createElement( 'div' );
// element.appendChild( sceneElement );
// const descriptionElement = document.createElement( 'div' );
// descriptionElement.innerText = 'Scene ' + ( i + 1 );
// element.appendChild( descriptionElement );
// // the element that represents the area we want to render the scene
// scene.userData.element = sceneElement;
// content.appendChild( element );
// const camera = new THREE.PerspectiveCamera( 50, 1, 1, 10 );
// camera.position.z = 2;
// scene.userData.camera = camera;
// const controls = new OrbitControls( scene.userData.camera, scene.userData.element );
// controls.minDistance = 2;
// controls.maxDistance = 5;
// controls.enablePan = false;
// controls.enableZoom = false;
// scene.userData.controls = controls;
// // add one random mesh to each scene
// const geometry = geometries[ geometries.length * Math.random() | 0 ];
// const material = new THREE.MeshStandardMaterial( {
// color: new THREE.Color().setHSL( Math.random(), 1, 0.75, THREE.SRGBColorSpace ),
// roughness: 0.5,
// metalness: 0,
// flatShading: true
// } );
// scene.add( new THREE.Mesh( geometry, material ) );
// scene.add( new THREE.HemisphereLight( 0xaaaaaa, 0x444444, 3 ) );
// const light = new THREE.DirectionalLight( 0xffffff, 1.5 );
// light.position.set( 1, 1, 1 );
// scene.add( light );
// scenes.push( scene );
// }
// renderer = new THREE.WebGLRenderer({ canvas, antialias: true });
// renderer.setClearColor(0xffffff, 1);
// renderer.setPixelRatio(window.devicePixelRatio);
// };
// const updateSize = () => {
// const width = canvas.clientWidth;
// const height = canvas.clientHeight;
// if (canvas.width !== width || canvas.height !== height) {
// renderer.setSize(width, height, false);
// }
// };
// const animate = () => {
// render();
// requestAnimationFrame(animate);
// };
// const render = () => {
// updateSize();
// canvas.style.transform = `translateY(${window.scrollY}px)`;
// renderer.setClearColor( 0xffffff );
// renderer.setScissorTest( false );
// renderer.clear();
// renderer.setClearColor( 0xe0e0e0 );
// renderer.setScissorTest( true );
// // ... (rest of the render function)
// scenes.forEach((scene) => {
// // so something moves
// scene.children[ 0 ].rotation.y = Date.now() * 0.001;
// // get the element that is a place holder for where we want to
// // draw the scene
// const element = scene.userData.element;
// // get its position relative to the page's viewport
// const rect = element.getBoundingClientRect();
// // check if it's offscreen. If so skip it
// if ( rect.bottom < 0 || rect.top > renderer.domElement.clientHeight ||
// rect.right < 0 || rect.left > renderer.domElement.clientWidth ) {
// return; // it's off screen
// }
// // set the viewport
// const width = rect.right - rect.left;
// const height = rect.bottom - rect.top;
// const left = rect.left;
// const bottom = renderer.domElement.clientHeight - rect.bottom;
// renderer.setViewport( left, bottom, width, height );
// renderer.setScissor( left, bottom, width, height );
// const camera = scene.userData.camera;
// //camera.aspect = width / height; // not changing in this example
// //camera.updateProjectionMatrix();
// //scene.userData.controls.update();
// renderer.render( scene, camera );
// });
// };
// init();
// animate();
// // Cleanup function
// return () => {
// // Perform cleanup here if needed
// };
// }, []); // Run once on mount
// return (
// <>
// <canvas ref={canvasRef} id="c"></canvas>
// {/* Additional React components or UI can be added here */}
// </>
// );
// };
// export default ThreeJSComponent;