css3d_panorama_deviceorientation.html 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>three.js css3d - panorama - device orientation</title>
  5. <meta charset="utf-8">
  6. <meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
  7. <link type="text/css" rel="stylesheet" href="main.css">
  8. </head>
  9. <body>
  10. <div id="info"><a href="http://threejs.org" target="_blank" rel="noopener">three.js</a> css3d - panorama - device orientation.<br/>cubemap by <a href="http://www.humus.name/index.php?page=Textures" target="_blank" rel="noopener">Humus</a>.</div>
  11. <script type="module">
  12. import * as THREE from '../build/three.module.js';
  13. import { DeviceOrientationControls } from './jsm/controls/DeviceOrientationControls.js';
  14. import { CSS3DRenderer, CSS3DObject } from './jsm/renderers/CSS3DRenderer.js';
  15. var camera, scene, renderer;
  16. var controls;
  17. init();
  18. animate();
  19. function init() {
  20. camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 1, 1000 );
  21. controls = new DeviceOrientationControls( camera );
  22. scene = new THREE.Scene();
  23. var sides = [
  24. {
  25. url: 'textures/cube/Bridge2/posx.jpg',
  26. position: [ - 512, 0, 0 ],
  27. rotation: [ 0, Math.PI / 2, 0 ]
  28. },
  29. {
  30. url: 'textures/cube/Bridge2/negx.jpg',
  31. position: [ 512, 0, 0 ],
  32. rotation: [ 0, - Math.PI / 2, 0 ]
  33. },
  34. {
  35. url: 'textures/cube/Bridge2/posy.jpg',
  36. position: [ 0, 512, 0 ],
  37. rotation: [ Math.PI / 2, 0, Math.PI ]
  38. },
  39. {
  40. url: 'textures/cube/Bridge2/negy.jpg',
  41. position: [ 0, - 512, 0 ],
  42. rotation: [ - Math.PI / 2, 0, Math.PI ]
  43. },
  44. {
  45. url: 'textures/cube/Bridge2/posz.jpg',
  46. position: [ 0, 0, 512 ],
  47. rotation: [ 0, Math.PI, 0 ]
  48. },
  49. {
  50. url: 'textures/cube/Bridge2/negz.jpg',
  51. position: [ 0, 0, - 512 ],
  52. rotation: [ 0, 0, 0 ]
  53. }
  54. ];
  55. var cube = new THREE.Object3D();
  56. scene.add( cube );
  57. for ( var i = 0; i < sides.length; i ++ ) {
  58. var side = sides[ i ];
  59. var element = document.createElement( 'img' );
  60. element.width = 1026; // 2 pixels extra to close the gap.
  61. element.src = side.url;
  62. var object = new CSS3DObject( element );
  63. object.position.fromArray( side.position );
  64. object.rotation.fromArray( side.rotation );
  65. cube.add( object );
  66. }
  67. renderer = new CSS3DRenderer();
  68. renderer.setSize( window.innerWidth, window.innerHeight );
  69. document.body.appendChild( renderer.domElement );
  70. //
  71. window.addEventListener( 'resize', onWindowResize, false );
  72. }
  73. function onWindowResize() {
  74. camera.aspect = window.innerWidth / window.innerHeight;
  75. camera.updateProjectionMatrix();
  76. renderer.setSize( window.innerWidth, window.innerHeight );
  77. }
  78. function animate() {
  79. requestAnimationFrame( animate );
  80. controls.update();
  81. renderer.render( scene, camera );
  82. }
  83. </script>
  84. </body>
  85. </html>