Advertisement
Guest User

Untitled

a guest
Jan 22nd, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <!doctype html>
  2. <html>
  3. <head>
  4.     <title>Podstawy three.js</title> <!-- tytuł strony  -->
  5.     <meta charset="ISO-8859-2"> <!-- wybrany zestaw znaków umożliwia korzystanie z polskich znaków-->
  6. </head>
  7. <body style="margin: 0;">
  8.  
  9. <script src="js/three.js"></script> <!-- ładowanie biblioteki z katalogu js-->
  10. <script src="js/OrbitControls.js"></script>
  11. <!-- dodajemy dodatek do biblioteki który umożliwia sterowanie myszą -->
  12.  
  13. <script>
  14.     var scena, kamera, renderer;
  15.     var kontrolaKamery; //zmienna globalna odpowiadająca za sterowanie kamerą
  16.     var kameraLustrzana;
  17.  
  18.  
  19.     //dodajemy model
  20.     var malpa; //zmienna do dodania modelu
  21.  
  22.  
  23.     init();
  24.     animate();
  25.  
  26.     function init()
  27.     {
  28.         // scena
  29.         scena = new THREE.Scene();
  30.         // kamera
  31.         kamera = new THREE.PerspectiveCamera( 45, window.innerWidth/window.innerHeight, 0.1, 20000);
  32.         scena.add(kamera);
  33.         //kamera.position.set(0,150,2000);
  34.         kamera.position.set(0,150,0);
  35.         kamera.lookAt(scena.position);
  36.  
  37.         //kamera do cube mappingu
  38.         kameraLustrzana = new THREE.CubeCamera( 0.1, 5000, 512 );
  39.         //parametry: near, far, cubeResolution – rozdzielczość kamery; im mniejsza wartość tym mniej dokładne odwzorowanie otoczenia i wrażenie bardziej matowej powierzchni.
  40.         scena.add( kameraLustrzana );
  41.  
  42.         //renderer
  43.         renderer = new THREE.WebGLRenderer( {antialias:true} );
  44.         renderer.setSize(window.innerWidth, window.innerHeight);
  45.         document.body.appendChild(renderer.domElement);
  46.  
  47.         //sterowanie kamerą przy pomocy myszy
  48.         kontrolaKamery = new THREE.OrbitControls( kamera, renderer.domElement );
  49.  
  50.         //dodajemy materiały na każdą ze ścian sześcianu
  51.         var tablicaMaterialow = [];
  52.         //tutaj dajemy po prostu ściany w różnych kolorach
  53.         /*tablicaMaterialow.push(new THREE.MeshBasicMaterial( { color: 0xff0000, side:
  54.                 THREE.BackSide }));
  55.         tablicaMaterialow.push(new THREE.MeshBasicMaterial( { color: 0x00ff00, side:
  56.                 THREE.BackSide }));
  57.         tablicaMaterialow.push(new THREE.MeshBasicMaterial( { color: 0x0000ff, side:
  58.                 THREE.BackSide }));
  59.         tablicaMaterialow.push(new THREE.MeshBasicMaterial( { color: 0xffff00, side:
  60.                 THREE.BackSide }));
  61.         tablicaMaterialow.push(new THREE.MeshBasicMaterial( { color: 0xff00ff, side:
  62.                 THREE.BackSide }));
  63.         tablicaMaterialow.push(new THREE.MeshBasicMaterial( { color: 0x00ffff, side:
  64.                 THREE.BackSide }));
  65. */
  66.         //tutaj już tekstury z folderu, zdjęciowe
  67.         tablicaMaterialow.push(new THREE.MeshBasicMaterial( {
  68.             map: THREE.ImageUtils.loadTexture( 'tekstury/px.jpg' ),side: THREE.BackSide }));
  69.         tablicaMaterialow.push(new THREE.MeshBasicMaterial( {
  70.             map: THREE.ImageUtils.loadTexture( 'tekstury/nx.jpg' ),side: THREE.BackSide }));
  71.         tablicaMaterialow.push(new THREE.MeshBasicMaterial( {
  72.             map: THREE.ImageUtils.loadTexture( 'tekstury/py.jpg' ),side: THREE.BackSide }));
  73.         tablicaMaterialow.push(new THREE.MeshBasicMaterial( {
  74.             map: THREE.ImageUtils.loadTexture( 'tekstury/ny.jpg' ),side: THREE.BackSide }));
  75.         tablicaMaterialow.push(new THREE.MeshBasicMaterial( {
  76.             map: THREE.ImageUtils.loadTexture( 'tekstury/pz.jpg' ),side: THREE.BackSide }));
  77.         tablicaMaterialow.push(new THREE.MeshBasicMaterial( {
  78.             map: THREE.ImageUtils.loadTexture( 'tekstury/nz.jpg' ),side: THREE.BackSide }));
  79.         //materiał odbity
  80.         var materialLustrzany = new THREE.MeshBasicMaterial( {
  81.             envMap: kameraLustrzana.renderTarget } );
  82.  
  83.         //sześcian skyboxu
  84.         var skyboxGeometria = new THREE.CubeGeometry( 1000, 1000, 1000);
  85.         //var skyboxMaterial = new THREE.MeshLambertMaterial( {
  86.         //    color: 0x00ff00, side: THREE.BackSide });
  87.         var skyboxMaterial = new THREE.MeshFaceMaterial( tablicaMaterialow );
  88.         //dodajemy skybox do sceny
  89.         var skybox = new THREE.Mesh( skyboxGeometria, skyboxMaterial );
  90.         scena.add( skybox );
  91.  
  92.         //światło
  93.         //var swiatloPunktowe = new THREE.PointLight( 0xffffff, 2, 1000 );
  94.         //scena.add(swiatloPunktowe);
  95.         // swiatloPunktowe.position.set(100,100,100);
  96.  
  97.         //ładujemy model
  98.         var zrodlo = "monkey.js";
  99.         var loader = new THREE.JSONLoader(); //ładujemy model
  100.         loader.load( zrodlo, function(geometriaModelu){
  101.             //var malpaMaterial = new THREE.MeshBasicMaterial({color: 0x00ff00}); //tutaj malpa będzie zielona
  102.             //malpa = new THREE.Mesh(geometriaModelu, malpaMaterial);
  103.             malpa = new THREE.Mesh(geometriaModelu,materialLustrzany);
  104.             malpa.position.set(0,0,0);
  105.             malpa.scale.set(10,10,10);
  106.             scena.add(malpa);
  107.         } );
  108.         /* UWAGA! po wyjściu z funkcji anonimowej wszystkie zmienne użyte
  109.          w jej wnętrzu staną się niedostępne, więc jeśli nie zostałaby utworzona zmienna globalna
  110.          przechowująca odwołanie do modelu, model zostałby dodany do sceny i wyświetlany, ale nie
  111.          można by się do niego w żaden sposób odwołać */
  112.  
  113.  
  114.         //kamerę lustrzaną ustawiamy w środku modelu który ma odbijać obraz
  115.        //kameraLustrzana.position = malpa.position;
  116.  
  117.     }
  118.  
  119.     function animate()
  120.     {
  121.         requestAnimationFrame( animate );
  122.         render();
  123.         kontrolaKamery.update();
  124.  
  125.         //obracanie modelu
  126.        malpa.rotation.x+=0.01;
  127.     }
  128.  
  129.     function render()
  130.     {
  131.         renderer.render( scena, kamera );
  132.  
  133.         //instrukcja uaktualniająca obraz z kamery lustrzanej
  134.       malpa.visible=false; //ukrywamy model
  135.       kameraLustrzana.updateCubeMap( renderer, scena );
  136.       malpa.visible=true; //z powrotem uwidaczniamy model
  137.  
  138.     }
  139.  
  140. </script>
  141.  
  142. </body>
  143. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement