720度全景展示

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>BFW NEW PAGE</title>
    <script id="bfwone" data="dep=three|CSS3DRenderer.min&err=0" type="text/BfwJavascript" src="http://repo.bfw.wiki/bfwrepo/js/bfwone.js"></script>


    <style>
        body {
            background-color: #000000;
            margin: 0;
            cursor: move;
            overflow: hidden;
        }
        .surface {
            width: 1026px;
            height: 1026px;
            background-size: cover;
            position: absolute;
        }
        .surface .bg {
            position: absolute;
            width: 1026px;
            height: 1026px;
        }

        .m {
            width: 200px;
            padding: 20px;
            position: fixed;
            z-index: 999;
            font-weight: bold;
            color: #FFFFFF;
        }
    </style>
</head>
<body>
    <div class="m">
        720度全景展示
    </div>
    <div>
        <div id="surface_0" class="surface">
            <img class="bg" src="http://editor.bfw.wiki/bfwrepo/image/posx.jpg" alt="">
        </div>
        <div id="surface_1" class="surface">
            <img class="bg" src="http://editor.bfw.wiki/bfwrepo/image/negx.jpg" alt="">
        </div>
        <div id="surface_2" class="surface">
            <img class="bg" src="http://editor.bfw.wiki/bfwrepo/image/posy.jpg" alt="">
        </div>
        <div id="surface_3" class="surface">
            <img class="bg" src="http://editor.bfw.wiki/bfwrepo/image/negy.jpg" alt="">
        </div>
        <div id="surface_4" class="surface">
            <img class="bg" src="http://editor.bfw.wiki/bfwrepo/image/posz.jpg" alt="">
        </div>
        <div id="surface_5" class="surface">
            <img class="bg" src="http://editor.bfw.wiki/bfwrepo/image/negz.jpg" alt="">
        </div>
    </div>
    <script type="text/BfwJavascript">
        var camera, scene, renderer;
        var geometry, material, mesh;
        var target;
        var lon = 90,
        lat = 0;
        var phi = 0,
        theta = 0;
        var touchX, touchY;

        bready(function() {
            target = new THREE.Vector3();
            init();
            animate();
        });

        function init() {
            camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 1, 1000);
            scene = new THREE.Scene();
            var sides = [{
                position: [-512, 0, 0],
                rotation: [0, Math.PI / 2, 0]
            }, {
                position: [512, 0, 0],
                rotation: [0, -Math.PI / 2, 0]
            }, {
                position: [0, 512, 0],
                rotation: [Math.PI / 2, 0, Math.PI]
            }, {
                position: [0, -512, 0],
                rotation: [-Math.PI / 2, 0, Math.PI]
            }, {
                position: [0, 0, 512],
                rotation: [0, Math.PI, 0]
            }, {
                position: [0, 0, -512],
                rotation: [0, 0, 0]
            }];
            for (var i = 0; i < sides.length; i++) {
                var side = sides[i];
                var element = document.getElementById("surface_" + i);
                element.width = 1026;
                var object = new THREE.CSS3DObject(element);
                object.position.fromArray(side.position);
                object.rotation.fromArray(side.rotation);
                scene.add(object);
            }
            renderer = new THREE.CSS3DRenderer();
            renderer.setSize(window.innerWidth, window.innerHeight);
            document.body.appendChild(renderer.domElement);
            document.addEventListener('mousedown', onDocumentMouseDown, false);
            document.addEventListener('wheel', onDocumentMouseWheel, false);
            document.addEventListener('touchstart', onDocumentTouchStart, false);
            document.addEventListener('touchmove', onDocumentTouchMove, false);
            window.addEventListener('resize', onWindowResize, false);
        }

        function animate() {
            requestAnimationFrame(animate);
            lat = Math.max(-85, Math.min(85, lat));
            phi = THREE.Math.degToRad(90 - lat);
            theta = THREE.Math.degToRad(lon);
            target.x = Math.sin(phi) * Math.cos(theta);
            target.y = Math.cos(phi);
            target.z = Math.sin(phi) * Math.sin(theta);
            camera.lookAt(target);
            renderer.render(scene, camera);
        }

        function onWindowResize() {
            camera.aspect = window.innerWidth / window.innerHeight;
            camera.updateProjectionMatrix();
            renderer.setSize(window.innerWidth, window.innerHeight);
        }
        function onDocumentMouseDown(event) {
            event.preventDefault();
            document.addEventListener('mousemove', onDocumentMouseMove, false);
            document.addEventListener('mouseup', onDocumentMouseUp, false);
        }

        function onDocumentMouseMove(event) {
            var movementX = event.movementX || event.mozMovementX || event.webkitMovementX || 0;
            var movementY = event.movementY || event.mozMovementY || event.webkitMovementY || 0;
            lon -= movementX * 0.1;
            lat += movementY * 0.1;
        }

        function onDocumentMouseUp(event) {
            document.removeEventListener('mousemove', onDocumentMouseMove);
            document.removeEventListener('mouseup', onDocumentMouseUp);
        }

        function onDocumentMouseWheel(event) {
            camera.fov += event.deltaY * 0.05;
            camera.updateProjectionMatrix();
        }

        function onDocumentTouchStart(event) {
            event.preventDefault();
            var touch = event.touches[0];
            touchX = touch.screenX;
            touchY = touch.screenY;
        }

        function onDocumentTouchMove(event) {
            event.preventDefault();
            var touch = event.touches[0];
            lon -= (touch.screenX - touchX) * 0.1;
            lat += (touch.screenY - touchY) * 0.1;
            touchX = touch.screenX;
            touchY = touch.screenY;
        }
    </script>
</body>
</html>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值