Advertisement
Guest User

jacy słoniocy

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