Init Commit

This commit is contained in:
2026-05-26 08:27:41 +08:00
commit 83647f6e77
20 changed files with 367 additions and 0 deletions
+118
View File
@@ -0,0 +1,118 @@
import * as THREE from 'three';
import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';
import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
import { UltraHDRLoader } from 'three/addons/loaders/UltraHDRLoader.js';
import { GUI } from 'three/addons/libs/lil-gui.module.min.js';
const scene = new THREE.Scene();
const sizes = {
width: window.innerWidth,
height: window.innerHeight,
}
//console.log(sizes.width + "x" + sizes.height);
//RENDERER
const renderer = new THREE.WebGLRenderer({antialias:true});
renderer.setSize( sizes.width, sizes.height );
renderer.setPixelRatio(Math.min(window.devicePixelRatio, 2));
renderer.toneMapping = THREE.ACESFilmicToneMapping;
renderer.toneMappingExposure = 1.5;
renderer.outputColorSpace = THREE.SRGBColorSpace;
renderer.shadowMap.enabled = true;
renderer.shadowMap.type = THREE.PCFShadowMap;
document.body.appendChild( renderer.domElement );
//CAMERA
const camera = new THREE.PerspectiveCamera( 65, sizes.width / sizes.height, 0.1, 1000 );
camera.position.x = 0;
camera.position.y = 2;
camera.position.z = 7.5;
const controls = new OrbitControls( camera, renderer.domElement );
controls.enableDamping = true;
controls.dampingFactor = 0.05; // Friction
controls.screenSpacePanning = false; // Vertical panning along screen
controls.update();
//RESIZING
function handleResize(){
sizes.width = window.innerWidth;
sizes.height = window.innerHeight;
camera.aspect = sizes.width/sizes.height;
camera.updateProjectionMatrix();
renderer.setSize( sizes.width, sizes.height );
renderer.setPixelRatio(Math.min(window.devicePixelRatio, 2));
}
window.addEventListener("resize", handleResize);
//MODEL LOADER
let core_logo_mesh;
const loader = new GLTFLoader();
loader.load( 'models/MBS-2408 Oreophryne anulata.glb', function ( glb ) {
core_logo_mesh = glb.scene;
scene.add( glb.scene );
}, undefined, function ( error ) {
console.error( error );
} );
//ENVIRONMENT
const env_loader = new UltraHDRLoader();
const env_texture = await env_loader.loadAsync( 'assets/studio_small_08_4k.jpg' );
env_texture.mapping = THREE.EquirectangularReflectionMapping;
scene.background = new THREE.Color(0xe6e6e6);
// scene.background = env_texture;
// scene.backgroundBlurriness = 0.5;
scene.environment = env_texture;
// console.log(scene.environment);
//LIGHTS
const ambient_light = new THREE.AmbientLight( 0xFFFFFF , 0.1); // soft white light
scene.add( ambient_light );
const sun = new THREE.DirectionalLight( 0xFFFFFF, 0.5);
sun.castShadow = true;
scene.add( sun );
// const helper = new THREE.DirectionalLightHelper( sun, 5 );
// scene.add( helper );
//EFFECTS PASS
// const composer = new EffectComposer( renderer );
// const renderPass = new RenderPass(scene, camera);
// composer.addPass(renderPass);
// const bloomPass = new UnrealBloomPass(
// new THREE.Vector2(sizes.width, sizes.height),
// 0.35, // strength
// 1, // radius
// 1 // threshold
// );
// composer.addPass(bloomPass);
renderer.setAnimationLoop( animate );
function animate( time ) {
//cube.rotation.x = time / 2000;
//cube.rotation.y = time / 1000;
controls.update();
//core_logo_mesh.rotation.y = time / 1000;
renderer.render( scene, camera );
//console.log(camera.position);
// if (core_logo_mesh){
// core_logo_mesh.rotation.y = time / 1500;
// }
//composer.render();
}