css3d_panorama_deviceorientation.html 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  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 {
  13. PerspectiveCamera,
  14. Object3D,
  15. Scene
  16. } from "../build/three.module.js";
  17. import { DeviceOrientationControls } from './jsm/controls/DeviceOrientationControls.js';
  18. import { CSS3DRenderer, CSS3DObject } from './jsm/renderers/CSS3DRenderer.js';
  19. var camera, scene, renderer;
  20. var controls;
  21. init();
  22. animate();
  23. function init() {
  24. camera = new PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 1, 1000 );
  25. controls = new DeviceOrientationControls( camera );
  26. scene = new Scene();
  27. var sides = [
  28. {
  29. url: 'textures/cube/Bridge2/posx.jpg',
  30. position: [ - 512, 0, 0 ],
  31. rotation: [ 0, Math.PI / 2, 0 ]
  32. },
  33. {
  34. url: 'textures/cube/Bridge2/negx.jpg',
  35. position: [ 512, 0, 0 ],
  36. rotation: [ 0, - Math.PI / 2, 0 ]
  37. },
  38. {
  39. url: 'textures/cube/Bridge2/posy.jpg',
  40. position: [ 0, 512, 0 ],
  41. rotation: [ Math.PI / 2, 0, Math.PI ]
  42. },
  43. {
  44. url: 'textures/cube/Bridge2/negy.jpg',
  45. position: [ 0, - 512, 0 ],
  46. rotation: [ - Math.PI / 2, 0, Math.PI ]
  47. },
  48. {
  49. url: 'textures/cube/Bridge2/posz.jpg',
  50. position: [ 0, 0, 512 ],
  51. rotation: [ 0, Math.PI, 0 ]
  52. },
  53. {
  54. url: 'textures/cube/Bridge2/negz.jpg',
  55. position: [ 0, 0, - 512 ],
  56. rotation: [ 0, 0, 0 ]
  57. }
  58. ];
  59. var cube = new Object3D();
  60. scene.add( cube );
  61. for ( var i = 0; i < sides.length; i ++ ) {
  62. var side = sides[ i ];
  63. var element = document.createElement( 'img' );
  64. element.width = 1026; // 2 pixels extra to close the gap.
  65. element.src = side.url;
  66. var object = new CSS3DObject( element );
  67. object.position.fromArray( side.position );
  68. object.rotation.fromArray( side.rotation );
  69. cube.add( object );
  70. }
  71. renderer = new CSS3DRenderer();
  72. renderer.setSize( window.innerWidth, window.innerHeight );
  73. document.body.appendChild( renderer.domElement );
  74. //
  75. window.addEventListener( 'resize', onWindowResize, false );
  76. }
  77. function onWindowResize() {
  78. camera.aspect = window.innerWidth / window.innerHeight;
  79. camera.updateProjectionMatrix();
  80. renderer.setSize( window.innerWidth, window.innerHeight );
  81. }
  82. function animate() {
  83. requestAnimationFrame( animate );
  84. controls.update();
  85. renderer.render( scene, camera );
  86. }
  87. </script>
  88. </body>
  89. </html>