dir.by  
  Поиск  
Компьютер, программы
Three.js - JavaScript библиотека для рисования графики 3D на страницах HTML
 Пример "Летающие кубики" библиотека Three.js 
посмотрели 7465 раз
обновлено: 22 ноября 2018
Пример смотрим, тестируем
Исходный код
  JavaScript  
<!DOCTYPE html>
<html lang="en">

     <head>
          <title>three.js webgl - layers</title>
          <meta charset="utf-8">
          <meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
          <style>
               body
               {
                    font-family: Monospace;
                    background-color: #f0f0f0;
                    margin: 0px;
                    overflow: hidden;
               }

               #info
               {
                    position: absolute;
                    top: 10px;
                    width: 100%;
                    text-align: center;
                    z-index: 0; // to not conflict with dat.gui
                    display:block;
               }
          </style>
     </head>

     <body>

          <!-- подключаем библиотеку three.js -->
          <script src="https://dir.by/example_lib/tree_js/three.js"></script>

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

          <script>
               var container, stats;
               var camera, scene, renderer;

               var radius = 100, theta = 0;

               init();
               animate();

               function init()
               {
                    container = document.createElement( 'div' );
                    document.body.appendChild( container );

                    camera = new THREE.PerspectiveCamera( 70, window.innerWidth / window.innerHeight, 1, 10000 );
                    camera.layers.enable( 0 ); // enabled by default
                    camera.layers.enable( 1 );
                    camera.layers.enable( 2 );

                    scene = new THREE.Scene();
                    scene.background = new THREE.Color( 0xf0f0f0 );

                    var light = new THREE.PointLight( 0xffffff, 1 );
                    light.layers.enable( 0 );
                    light.layers.enable( 1 );
                    light.layers.enable( 2 );

                    scene.add( camera );
                    camera.add( light );

                    var colors = [ 0xff0000, 0x00ff00, 0x0000ff ];
                    var geometry = new THREE.BoxBufferGeometry( 20, 20, 20 );
                    var layer;

                    for ( var i = 0; i < 300; i ++ )
                    {
                         layer = ( i % 3 );

                         var object = new THREE.Mesh( geometry, new THREE.MeshLambertMaterial( { color: colors[ layer ] } ) );

                         object.position.x = Math.random() * 800 - 400;
                         object.position.y = Math.random() * 800 - 400;
                         object.position.z = Math.random() * 800 - 400;

                         object.rotation.x = Math.random() * 2 * Math.PI;
                         object.rotation.y = Math.random() * 2 * Math.PI;
                         object.rotation.z = Math.random() * 2 * Math.PI;

                         object.scale.x = Math.random() + 0.5;
                         object.scale.y = Math.random() + 0.5;
                         object.scale.z = Math.random() + 0.5;

                         object.layers.set( layer );

                         scene.add( object );
                    }

                    raycaster = new THREE.Raycaster();

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

                    window.addEventListener( 'resize', onWindowResize, false );
               }

               function onWindowResize()
               {
                    camera.aspect = window.innerWidth / window.innerHeight;
                    camera.updateProjectionMatrix();

                    renderer.setSize( window.innerWidth, window.innerHeight );
               }

               function animate()
               {
                    requestAnimationFrame( animate );

                    render();
               }

               function render()
               {
                    theta += 0.1;

                    camera.position.x = radius * Math.sin( THREE.Math.degToRad( theta ) );
                    camera.position.y = radius * Math.sin( THREE.Math.degToRad( theta ) );
                    camera.position.z = radius * Math.cos( THREE.Math.degToRad( theta ) );
                    camera.lookAt( scene.position );

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

     </body>
</html>
На заметку!
Пример локально работает!

Запускаем пример на вашем компьютере:
1) Создайте новый файл my.html
2) Скопируйте исходный код в my.html файл
3) Запустите в браузере my.html
 
← Предыдущая тема
Что такое Three.js и как скачать?
 
Следующая тема →
Пример "Американская горка (roller coaster)" библиотека Three.js
 
Ваши Отзывы ... комментарии ...
   
Вашe имя
Ваш комментарий (www ссылки может добавлять только залогиненный пользователь)

Экскурсии по Москве Экскурсии по Москве: пешеходные, автобусные и речные прогулки на любой вкус
Анонс! Ярмарка вакансий для молодежи, работа (учащихся, которые хотели бы подработать в свободное время, а также выпускники)|||Минск, Витебск, Гомель, Гродно, Могилев, Борисов, Полоцк, Брест, Барановичи, Пинск с 13 по 17 апреля 2026
  Объявления  
  Объявления  
 
Что такое Three.js и как скачать?
Пример "Летающие кубики" библиотека Three.js
Пример "Американская горка (roller coaster)" библиотека Three.js
Пример "Вращающийся куб с текстурой (rotate cube)" библиотека Three.js
Пример "Мы сами крутим картинку svg (svg image)" библиотека Three.js
Пример "Луна вращается вокруг земли (moon rotate around earth)" библиотека Three.js
Пример "Рисуем картину 3D кубиками (interactive voxel painter)" библиотека Three.js
Пример "Шарики с эффектом отражения (effects anaglyph)" библиотека Three.js
Создаем свой файл .js Файл содержит объект с экспортными переменными и функциями

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