这是简单效果

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>场景切换示例</title>
    <style>
        body {
            margin: 0;
            overflow: hidden;
        }
        #container {
            width: 100%;
            height: 100%;
            position: absolute;
        }
    </style>
</head>
<body>
    <div id="container"></div>

    <script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/110/three.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/tween.js/18.6.4/Tween.min.js"></script>
    <script>
        // 创建场景
        var scene = new THREE.Scene();

        // 创建相机
        var camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
        camera.position.z = 5;

        // 创建渲染器
        var renderer = new THREE.WebGLRenderer();
        renderer.setSize(window.innerWidth, window.innerHeight);
        document.getElementById('container').appendChild(renderer.domElement);

        // 创建几何体
        var geometry = new THREE.TorusKnotGeometry(1, 0.4, 100, 16);

        // 创建材质
        var material = new THREE.MeshBasicMaterial({ color: 0x00ff00, wireframe: true });

        // 创建网格对象
        var mesh = new THREE.Mesh(geometry, material);

        // 将网格对象添加到场景中
        scene.add(mesh);

        // 创建动画循环
        function animate() {
            requestAnimationFrame(animate);

            // 使几何体旋转起来
            mesh.rotation.x += 0.01;
            mesh.rotation.y += 0.01;

            // 改变几何体的大小
            var scale = Math.sin(Date.now() * 0.001) * 0.2 + 1.0;
            mesh.scale.set(scale, scale, scale);

            // 改变几何体的颜色
            var color = new THREE.Color();
            color.setHSL((Date.now() * 0.0005) % 1, 1, 0.5);
            mesh.material.color = color;

            // 渲染场景和相机
            renderer.render(scene, camera);
        }

        // 监听窗口大小变化事件
        window.addEventListener('resize', function() {
            camera.aspect = window.innerWidth / window.innerHeight;
            camera.updateProjectionMatrix();
            renderer.setSize(window.innerWidth, window.innerHeight);
        });

        // 启动动画循环
        animate();

        // 场景切换动画
        function switchScene() {
            var tween = new TWEEN.Tween(mesh.position)
                .to({ x: Math.random() * 10 - 5, y: Math.random() * 10 - 5, z: Math.random() * 10 - 5 }, 1000)
                .easing(TWEEN.Easing.Quadratic.Out)
                .start();
        }

        // 监听场景切换事件
        document.addEventListener('click', switchScene);
    </script>
</body>
</html>

结果截图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值