Clean start: remove large .spp files from history
This commit is contained in:
74
js/scene.js
Normal file
74
js/scene.js
Normal file
@@ -0,0 +1,74 @@
|
||||
import * as THREE from 'three';
|
||||
import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js';
|
||||
import { RGBELoader } from 'three/examples/jsm/loaders/RGBELoader.js';
|
||||
import { setupLights, setupRoomLights, setupLEDStrip } from './lights.js';
|
||||
import { camera } from './camera.js';
|
||||
|
||||
const canvas = document.getElementById('scene');
|
||||
|
||||
export const scene = new THREE.Scene();
|
||||
scene.background = new THREE.Color(0x222222);
|
||||
|
||||
export const renderer = new THREE.WebGLRenderer({
|
||||
canvas,
|
||||
antialias: true
|
||||
});
|
||||
|
||||
renderer.setSize(window.innerWidth, window.innerHeight);
|
||||
renderer.setPixelRatio(window.devicePixelRatio);
|
||||
renderer.outputColorSpace = THREE.SRGBColorSpace;
|
||||
renderer.toneMapping = THREE.ACESFilmicToneMapping;
|
||||
renderer.toneMappingExposure = 0.3;
|
||||
|
||||
// Свет
|
||||
setupLights(scene);
|
||||
|
||||
// ===== HDRI =====
|
||||
const rgbeLoader = new RGBELoader();
|
||||
rgbeLoader.load(
|
||||
'textures/hdri_1.exr',
|
||||
(texture) => {
|
||||
texture.mapping = THREE.EquirectangularReflectionMapping;
|
||||
scene.environment = texture;
|
||||
scene.background = texture;
|
||||
console.log('HDRI загружен: textures/hdri_1.exr');
|
||||
},
|
||||
undefined,
|
||||
(error) => {
|
||||
console.error('HDRI LOAD ERROR', error);
|
||||
}
|
||||
);
|
||||
|
||||
// ===== ROOM =====
|
||||
export let room = null; // Экспортируем для вращения
|
||||
const loader = new GLTFLoader();
|
||||
loader.load(
|
||||
'models/room.glb',
|
||||
(gltf) => {
|
||||
room = gltf.scene;
|
||||
|
||||
// Центрируем модель по Y (только вверх/вниз)
|
||||
const box = new THREE.Box3().setFromObject(room);
|
||||
const centerY = (box.min.y + box.max.y) / 2;
|
||||
room.position.y = -centerY;
|
||||
|
||||
// Инициализируем свет комнаты
|
||||
setupRoomLights(room);
|
||||
|
||||
// LED-ленты на ceilinglight_001 - ceilinglight_004
|
||||
setupLEDStrip(room);
|
||||
|
||||
scene.add(room);
|
||||
},
|
||||
undefined,
|
||||
(error) => {
|
||||
console.error('GLB LOAD ERROR', error);
|
||||
}
|
||||
);
|
||||
|
||||
// Resize
|
||||
window.addEventListener('resize', () => {
|
||||
renderer.setSize(window.innerWidth, window.innerHeight);
|
||||
camera.aspect = window.innerWidth / window.innerHeight;
|
||||
camera.updateProjectionMatrix();
|
||||
});
|
||||
Reference in New Issue
Block a user