dir.by  
Поиск >>

Компьютер, программы
→
Three.js - JavaScript library for drawing graphics 3D in the pages HTML
 Example "The moon revolves around the earth (moon rotate around earth)" library Three.js 
посмотрели 8655 раз
обновлено: 14 October 2020
Example we look, we test
Approaching, moving away from the ground - scrolling with the mouse
Rotation - press the left mouse key and move the mouse
Source code
  Html  
<!DOCTYPE html>
<html>
     <head>
          <meta charset="utf-8">
          <meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
          <title>three.js css2d - label</title>
          <style>
               body
               {
                    background-color: #000;
                    margin: 0;
                    overflow: hidden;
               }

               #info
               {
                    position: absolute;
                    top: 0px;
                    width: 100%;
                    color: #FFF;
                    padding: 5px;
                    font-family: Monospace;
                    font-size: 13px;
                    text-align: center;
                    z-index: 1;
               }

               .label
               {
                    color: #FFF;
                    font-family: sans-serif;
                    padding: 2px;
                    background: rgba( 0, 0, 0, .6 );
               }
          </style>
     </head>

     <body>
          <!-- connect the library three.js -->
          <script src="https://dir.by/example_lib/tree_js/three.js"></script>

          <!-- additional libraries -->
          <script src="https://dir.by/example_lib/tree_js/OrbitControls.js"></script>
          <script src="https://dir.by/example_lib/tree_js/CSS2DRenderer.js"></script>

          <div id="info"><a href="http://threejs.org" target="_blank" rel="noopener">three.js</a> - three.js css2d - label</div>

          <script>
               var camera, scene, renderer, labelRenderer;

               var clock = new THREE.Clock();
               var textureLoader = new THREE.TextureLoader();

               var earth, moon;

               init();
               animate();

               function init() {

                    var EARTH_RADIUS = 1;
                    var MOON_RADIUS = 0.27;

                    camera = new THREE.PerspectiveCamera( 45, window.innerWidth / window.innerHeight, 1, 1000 );
                    camera.position.set( 10, 5, 20 );

                    var controls = new THREE.OrbitControls( camera );

                    scene = new THREE.Scene();

                    var dirLight = new THREE.DirectionalLight( 0xffffff );
                    dirLight.position.set( 0, 0, 1 );
                    scene.add( dirLight );

                    var axesHelper = new THREE.AxesHelper( 5 );
                    scene.add( axesHelper );

                    var earthGeometry = new THREE.SphereBufferGeometry( EARTH_RADIUS, 16, 16 );
                    var earthMaterial = new THREE.MeshPhongMaterial( {
                         specular: 0x333333,
                         shininess: 5,
                         map: textureLoader.load( 'https://dir.by/developer/three_js/example_moon_rotate_around_earth/images/earth_atmos_2048.jpg' ),
                         specularMap: textureLoader.load( 'https://dir.by/developer/three_js/example_moon_rotate_around_earth/images/earth_specular_2048.jpg' ),
                         normalMap: textureLoader.load( 'https://dir.by/developer/three_js/example_moon_rotate_around_earth/images/earth_normal_2048.jpg' ),
                         normalScale: new THREE.Vector2( 0.85, 0.85 )
                    } );
                    earth = new THREE.Mesh( earthGeometry, earthMaterial );
                    scene.add( earth );

                    var moonGeometry = new THREE.SphereBufferGeometry( MOON_RADIUS, 16, 16 );
                    var moonMaterial = new THREE.MeshPhongMaterial( {
                         shininess: 5,
                         map: textureLoader.load( 'https://dir.by/developer/three_js/example_moon_rotate_around_earth/images/moon_1024.jpg' )
                    } );
                    moon = new THREE.Mesh( moonGeometry, moonMaterial );
                    scene.add( moon );

                    var earthDiv = document.createElement( 'div' );
                    earthDiv.className = 'label';
                    earthDiv.textContent = 'Earth';
                    earthDiv.style.marginTop = '-1em';
                    var earthLabel = new THREE.CSS2DObject( earthDiv );
                    earthLabel.position.set( 0, EARTH_RADIUS, 0 );
                    earth.add( earthLabel );

                    var moonDiv = document.createElement( 'div' );
                    moonDiv.className = 'label';
                    moonDiv.textContent = 'Moon';
                    moonDiv.style.marginTop = '-1em';
                    var moonLabel = new THREE.CSS2DObject( moonDiv );
                    moonLabel.position.set( 0, MOON_RADIUS, 0 );
                    moon.add( moonLabel );

                    renderer = new THREE.WebGLRenderer();
                    renderer.setPixelRatio( window.devicePixelRatio );
                    renderer.setSize( window.innerWidth, window.innerHeight );
                    document.body.appendChild( renderer.domElement );

                    labelRenderer = new THREE.CSS2DRenderer();
                    labelRenderer.setSize( window.innerWidth, window.innerHeight );
                    labelRenderer.domElement.style.position = 'absolute';
                    labelRenderer.domElement.style.top = 0;
                    document.body.appendChild( labelRenderer.domElement );
               }

               function animate()
               {
                    requestAnimationFrame( animate );

                    var elapsed = clock.getElapsedTime();

                    moon.position.set( Math.sin( elapsed ) * 5, 0, Math.cos( elapsed ) * 5 );

                    renderer.render( scene, camera );
                    labelRenderer.render( scene, camera );
               }
          </script>

     </body>
</html>
Note!
Example does not work locally, because the image upload error.

Access to Image at 'Access to Image at 'https://dir.by/developer/three_js/example_moon_rotate_around_earth/images/earth_atmos_2048.jpg' from origin 'null' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.
 
Error: Access to url at 'http://...' from origin 'null' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.
Решение!
На рабочем столе для иконки Google Chrome добавим парметры: --user-data-dir="C://Chrome dev session" --disable-web-security
Запустим Google Chrome нажав на иконку.
Введем url, ошибки нет.
 
← Previous topic
Example "We spin the picture ourselves svg (svg image)" library Three.js
 
Next topic →
Example "Drawing a picture with 3D cubes (interactive voxel painter)" library Three.js
 
Your feedback ... Comments ...
   
Your Name
Your comment (www links can only be added by a logged-in user)

 
• What the Three.js and how to download?
• Example "Flying cubes" library Three.js
• Example "Roller coaster (roller coaster)" library Three.js
• Example "Rotating cube with texture (rotate cube)" library Three.js
• Example "We spin the picture ourselves svg (svg image)" library Three.js
• Example "The moon revolves around the earth (moon rotate around earth)" library Three.js
• Example "Drawing a picture with 3D cubes (interactive voxel painter)" library Three.js
• Example "Reflection balls (effects anaglyph)" library Three.js
• Create your own file .js The file contains an object with export variables and functions

  Ваши вопросы присылайте по почте: info@dir.by