three实现三维卧室代码

代码语言:html

所属分类:三维

代码描述:three实现三维卧室代码,可切换白天与夜晚

代码标签: three 三维 卧室 代码

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Cozy Isometric Room</title>
    <style>
        * { margin: 0; padding: 0; box-sizing: border-box; }
        body { 
            overflow: hidden; 
            background: #1a1a2e;
            font-family: 'Segoe UI', sans-serif;
        }
        canvas { display: block; }
        #info {
            position: absolute;
            bottom: 20px;
            left: 50%;
            transform: translateX(-50%);
            color: #f0e6d3;
            background: rgba(30, 25, 40, 0.7);
            padding: 10px 24px;
            border-radius: 20px;
            font-size: 13px;
            backdrop-filter: blur(10px);
            border: 1px solid rgba(240, 230, 211, 0.15);
            pointer-events: none;
        }
        #toggle {
            position: absolute;
            top: 20px;
            right: 20px;
            color: #f0e6d3;
            background: rgba(30, 25, 40, 0.7);
            padding: 8px 18px;
            border-radius: 16px;
            font-size: 13px;
            backdrop-filter: blur(10px);
            border: 1px solid rgba(240, 230, 211, 0.15);
            cursor: pointer;
            transition: all 0.3s;
        }
        #toggle:hover { background: rgba(60, 50, 80, 0.8); }
    </style>
</head>
<body>
    <div id="info">🖱️ Drag to orbit · Scroll to zoom · Click lamp to toggle</div>
    <div id="toggle" onclick="toggleDayNight()">🌙 Night Mode</div>

    <script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r128/three.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/three@0.128.0/examples/js/controls/OrbitControls.js"></script>
    <script>
        let scene, camera, renderer, controls;
        let clock = new THREE.Clock();
        let isNight = false;
        let lampLight, lampGlow, ambientLight, dirLight;
        let steamParticles = [];
        let floatingParticles = [];
        let candleFlames = [];
        let plantLeaves = [];
        let catTail, catBody;
        let bookPages = [];
        let curtainMeshes = [];
        let raindrops = [];
        let raycaster = new THREE.Raycaster();
        let mouse = new THREE.Vector2();
        let lampClickTarget;

        // Color palette
        const colors = {
            wall: 0xf5e6d3,
            wallAccent: 0xe8d5c0,
            floor: 0xc4956a,
            floorDark: 0xa87d5a,
            wood: 0x8B6914,
            woodDark: 0x654321,
            woodLight: 0xDEB887,
            fabric: 0xc2185b,
            fabricLight: 0xe91e63,
            cushion: 0xff7043,
            cushionAlt: 0x5c6bc0,
            blanket: 0x4db6ac,
            lamp: 0xffd54f,
            lampShade: 0xfff8e1,
            book1: 0x1565c0,
            book2: 0xc62828,
            book3: 0x2e7d32,
            book4: 0x6a1b9a,
            book5: 0xff8f00,
            plant: 0x4caf50,
            plantDark: 0x2e7d32,
            pot: 0xd84315,
            potLight: 0xe64a19,
            rug: 0x7b1fa2,
            rugAccent: 0xce93d8,
            mug: 0xfafafa,
            coffee: 0x3e2723,
            cat: 0xff8a65,
            catDark: 0xbf360c,
            frame: 0x5d4037,
            canvas: 0xfff3e0,
            candle: 0xfff8e1,
            flame: 0xff9800,
            window: 0x87ceeb,
            windowNight: 0x1a237e,
            curtain: 0xe8d5c0,
        };

        init();
        animate();

        function init() {
            // Scene
            scene = new THREE.Scene();
            scene.background = new THREE.Color(0x2d2240);
            scene.fog = new THREE.FogExp2(0x2d2240, 0.015);

            // Camera - Isometric-like perspective
            camera = new THREE.PerspectiveCamera(35, window.innerWidth / window.innerHeight, 0.1, 1000);
            camera.position.set(12, 10, 12);
            camera.lookAt(0, 1, 0);

            // Renderer
            renderer = new THREE.WebGLRenderer({ antialias: true, alpha: true });
            renderer.setSize(window.innerWidth, window.innerHeight);
            renderer.setPixelRatio(Math.min(window.devicePixelRatio, 2));
            renderer.shadowMap.enabled = true;
            renderer.shadowMap.type = THREE.PCFSoftShadowMap;
            renderer.toneMapping = THREE.ACESFilmicToneMapping;
            renderer.toneMappingExposure = 1.2;
            document.body.appendChild(renderer.domElement);

            // Controls
            controls = new THREE.OrbitControls(camera, renderer.domElement);
            controls.enableDamping = true;
            controls.dampingFactor = 0.05;
            controls.minDistance = 8;
            controls.maxDistance = 25;
            controls.maxPolarAngle = Math.PI / 2.2;
            controls.target.set(0, 1.5, 0);
            controls.update();

            // Lighting
            setupLighting();

            // Build room
            buildRoom();
            buildFloor();
            buildBed();
            buildDesk();
            buildChair();
            buildBookshelf();
            buildWindow();
            buildCurtains();
            buildRug();
            buildLamp();
        .........完整代码请登录后点击上方下载按钮下载查看

网友评论0