123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348 |
- <!DOCTYPE html>
- <head>
- <title>恒硕科技产业园</title>
- <meta charset="utf-8" />
- <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
- <meta id="jdouview" name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no" />
- <meta name="format-detection" content="telephone=no">
- <style>
- body {
- background-color: #000000;
- margin: 0;
- cursor: move;
- overflow: hidden;
- }
- .bg_section {
- width: 1026px;
- height: 1026px;
- background-size: cover;
- position: absolute;
- }
- .bg_section .bg {
- position: absolute;
- width: 1026px;
- height: 1026px;
- }
- .btn1 {
- position: absolute;
- width: 74px;
- height: 96px;
- top: 20%;
- left: 40%;
- -webkit-transform: perspective(600px);
- background: url("images/btn1.png");
- background-size: 100% 100%;
- }
- .btn2 {
- position: absolute;
- width: 71px;
- height: 91px;
- top: 30%;
- left: 50%;
- -webkit-transform: perspective(600px);
- background: url("images/btn2.png");
- background-size: 100% 100%;
- }
- .controlBtn {
- width: 60px;
- height: 60px;
- position: fixed;
- z-index: 99999;
- left: 8%;
- top: 5%;
- }
- .controlIcon {
- background: url("images/controlIcon.png");
- background-size: 100% 100%;
- }
- .controlIconae {
- background: url("images/controlIconae.png");
- background-size: 100% 100%;
- }
- @-webkit-keyframes bounceant1 {
- 0% {
- -webkit-transform: translateY(0)
- }
- 50% {
- -webkit-transform: translateY(-12px)
- }
- 100% {
- -webkit-transform: translateY(0px)
- }
- }
- @keyframes bounceant1 {
- 0% {
- transform: translateY(0)
- }
- 50% {
- transform: translateY(-12px)
- }
- 100% {
- transform: translateY(0px)
- }
- }
- .bounceant1 {
- -webkit-animation: bounceant1 3s infinite;
- animation: bounceant1 3s infinite
- }
- </style>
- </head>
- <body>
- <!-- <div id="controlBtn" class="controlBtn controlIconae"></div> -->
- <!-- 陀螺仪开启按钮 -->
- <div id="pano">
- <!-- 正方体的六个面 -->
- <div id="bg_section_0" class="bg_section bg_section_4 scale_test">
- <img class="bg" src="images/pic.right.jpg">
- <!-- <div class="btn1 bounceant1"></div> -->
- <!-- 可点击按钮1 -->
- </div>
- <div id="bg_section_1" class="bg_section bg_section_5 scale_test">
- <img class="bg" src="images/pic.left.jpg">
- </div>
- <div id="bg_section_2" class="bg_section bg_section_2 scale_test">
- <img class="bg" src="images/pic.top.jpg">
- </div>
- <div id="bg_section_3" class="bg_section bg_section_3 scale_test">
- <img class="bg" src="images/pic.bottom.jpg">
- </div>
- <div id="bg_section_4" class="bg_section bg_section_1 scale_test">
- <img class="bg" src="images/pic.front.jpg">
- <!-- <div class="btn2 bounceant1"></div> -->
- <!-- 可点击按钮2 -->
- </div>
- <div id="bg_section_5" class="bg_section bg_section_0 scale_test">
- <img class="bg" src="images/pic.back.jpg">
- </div>
- </div>
- <script src="js/zepto.min.js"></script>
- <script src="js/three.min.js"></script>
- <script src="js/CSS3DRenderer.min.js"></script>
- <script src="js/DeviceOrientationControls.js"></script>
- <script>
- var camera, scene, renderer;
- var geometry, material, mesh;
- var target = new THREE.Vector3();
- var lon = 266.59, lat = -18.99;
- var phi = 0, theta = 0;
- var touchX, touchY;
- init();
- animate();
- function init() {
- /**
- * 添加相机
- * @type {THREE.PerspectiveCamera}
- */
- camera = new THREE.PerspectiveCamera(
- 98, // 相机视角的夹角
- window.innerWidth / window.innerHeight, // 相机画幅比
- 1, // 最近焦距
- 1000 // 最远焦距
- );
- /**
- * 创建场景
- * @type {THREE.Scene}
- */
- scene = new THREE.Scene();
- /**
- *正方体的6个面的资源及相关(坐标、旋转等)设置
- */
- var flipAngle = Math.PI, // 180度
- rightAngle = flipAngle / 2, // 90度
- tileWidth = 512;
- var sides = [{
- url: "images/panorama.right.jpg",
- position: [-tileWidth, 0, 0],
- rotation: [0, rightAngle, 0]
- }, {
- url: "images/panorama.left.jpg",
- position: [tileWidth, 0, 0],
- rotation: [0, -rightAngle, 0]
- }, {
- url: "images/panorama.top.jpg",
- position: [0, tileWidth, 0],
- rotation: [rightAngle, 0, Math.PI]
- }, {
- url: "images/panorama.bottom.jpg",
- position: [0, -tileWidth, 0],
- rotation: [-rightAngle, 0, Math.PI]
- }, {
- url: "images/panorama.front.jpg",
- position: [0, 0, tileWidth],
- rotation: [0, Math.PI, 0]
- }, {
- url: "images/panorama.back.jpg",
- position: [0, 0, -tileWidth],
- rotation: [0, 0, 0]
- }];
- for (var i = 0; i < sides.length; i++) {
- var side = sides[i];
- var element = document.getElementById("bg_section_" + i);
- element.width = 1026;
- element.height = 1026; // 2 pixels extra to close the gap.
- // 添加一个渲染器
- 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); // 将场景到加入页面中
- initDevices();
- initMouseControl();
- }
- // 初始化控制器
- function initMouseControl() {
- // mouseControl = new THREE.OrbitControls(camera);
- 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);
- }
- var controlsBtn = document.getElementById("controlBtn"); // 控制陀螺仪开关的按钮
- var isDeviceing = false; // 陀螺仪状态
- controlsBtn.addEventListener("touchend", controlDevice, true);
- isDeviceing == true ? $("#controlBtn").addClass("controlIconae") : $("#controlBtn").addClass("controlIcon");
- // 初始化陀螺仪
- function initDevices() {
- deviceControl = new THREE.DeviceOrientationControls(camera);
- }
- /* 控制陀螺仪 */
- function controlDevice(event) {
- if (isDeviceing == true) {
- isDeviceing = false;
- //关闭陀螺仪
- $("#controlBtn").removeClass("controlIcon").addClass("controlIconae");
- } else {
- isDeviceing = true;
- //开启陀螺仪
- $("#controlBtn").removeClass("controlIconae").addClass("controlIcon");
- }
- }
- /**
- * 窗体大小改变
- */
- 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;
- console.log("#debug#🚀 ~ file: index.html:295 ~ onDocumentMouseWheel ~ camera.fov:", camera.fov)
- 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.2;
- lat += (touch.screenY - touchY) * 0.2;
- console.log("#debug#🚀 ~ file: index.html:310 ~ onDocumentTouchMove ~ lon:", lon)
- console.log("#debug#🚀 ~ file: index.html:312 ~ onDocumentTouchMove ~ lat:", lat)
- touchX = touch.screenX;
- touchY = touch.screenY;
- }
- /**
- * 实时渲染函数
- */
- function animate() {
- requestAnimationFrame(animate);
- // lon = Math.max(-180, Math.min(180, lon));//限制固定角度内旋转
- // lon += 0.1;//自动旋转
- lat = Math.max(-85, Math.min(85, lat)); //限制固定角度内旋转
- phi = THREE.Math.degToRad(85 - lat);
- theta = THREE.Math.degToRad(lon + 180);
- target.x = Math.sin(phi) * Math.cos(theta);
- target.y = Math.cos(phi);
- target.z = Math.sin(phi) * Math.sin(theta);
- camera.lookAt(target);
- camera.updateProjectionMatrix();
- isDeviceing == false ? initMouseControl() : deviceControl.update();
- renderer.render(scene, camera);
- }
- $('.btn1').on('click', function () {
- alert('第一个按钮被点击了');
- });
- $('.btn2').on('click', function () {
- alert('第二个按钮被点击了');
- });
- </script>
- </body>
- </html>
|