mercoledì 17 febbraio 2010

ancora Engine 3D

Bene bene bene
dopo mesi di nulla facenza se non si considera  HTLM... alla fine ho ricominciato ad "impastare le mani" con il C++

ho trasportato l'engine vecchio da Code::Block ad Visual C++ EX ed. 2008
ed è risultato più complicato del previsto
inoltre ho riscritto gran parte del loader dei modelli 3D....
e cambiato ancora un altra volta l'algoritmo delle ombre...

in aggiunta ho inserito 4 semplici funzioni per la gestione dei tasti della finestra

(WindowKey(), KeyDown(), KeyHit())
e mi sembra anche per il mouse ho inserito altre 2 funzioni

inoltre ho inserito l'engine fisico newton nel progetto (anche se non ancora usabile)

cmq ecco a voi una DEMO! Per provare l'engine

http://www.megaupload.com/?d=341ZM6KM


l'immagine del suddetto esempio:


Ed ecco il codice che vine usato per questa demo:


#include "NewTonWp.hpp"
#include "engine3d.hpp"


#include <iostream>

int main3DEngine(){

    set3DEngine("G1",1024,720,32,FALSE);

    AmbientLightColor(128,128,128);

    ILight* light=createLight(1);
    EntityPosition(light,tV3(50,100,50));
    LightColor(light,255,255,255);
    pointLight(light,TRUE);
    LightRange(light,1100);
    LightConeAngles(light,180);
    EntityRotate(light,tV3(90,0,0));

    ICamera *objCamera=CreateCamera();
    EntityPosition(objCamera,tV3(0,4,-6));
    objCamera->CameraView(0.0f,0.0f,1.0f,1.0f);
    EntityRotate(objCamera,tV3(-30,180,0));
    CameraLight(objCamera,TRUE);
    setFogCamera(objCamera,50.0,100.0,
                           0.0,0.0,0.0);
    shadowMode(objCamera,1);

        IMesh* piramide1=load3DS("..\\media\\donut.3ds");
        EntityPosition(piramide1,tV3(-2,0.1,-2));
        EntityTurn(piramide1,tV3(90,0,0));
        EntityScale(piramide1,tV3(.10,.10,.10));
        normalMesh(piramide1);
normalMesh(piramide1);
        createCastShadow(piramide1);

        IMesh* piramide=load3DS("..\\media\\sh4.3ds");
        EntityPosition(piramide,tV3(0,-1,1.0));
        EntityTurn(piramide,tV3(0,0,0));
        EntityScale(piramide,tV3(.88,.88,.88));
        normalMesh(piramide);
        createCastShadow(piramide);

IMesh* gfloor=load3DS("..\\media\\vista2.3ds");
        normalMesh(gfloor);
        EntityPosition(gfloor,tV3(0.0,-2,1));
        EntityScale(gfloor,tV3(2.25,2.25,2.25));
       // EntityRotate(gfloor,tV3(90,0,0));
normalMesh(gfloor);
        createCastShadow(gfloor);
float CAMERASPEED=0.1;
float lightCaunt=0;
tV3 lightPos;

    /* programa main loop */
    while ((!KeyDown( VK_ESCAPE ))&&(!WindowKey( 0 )))
    {

            if(KeyDown(VK_UP)) EntityMove(piramide,tV3(0.0,CAMERASPEED,0.0));
            if(KeyDown(VK_DOWN)) EntityMove(piramide,tV3(0.0,-CAMERASPEED,0.0));

            if(KeyDown(VK_RIGHT)) EntityTurn(piramide,tV3(0.0,1.0,0));
            if(KeyDown(VK_LEFT)) EntityTurn(piramide,tV3(0.0,-1.0,0));

            if(KeyHit(' ')) shadowMode(objCamera,!objCamera->ZFail);

EntityTurn(piramide1,tV3(0,1,0));

lightPos.x=cos(lightCaunt*3.14/180)*50;
lightPos.y=abs(cos(lightCaunt*3.14/180))*80;
lightPos.z=cos(lightCaunt*3.14/180)*50;

EntityPosition(light,lightPos);
ShadowPos=lightPos;
lightCaunt+=0.30;
            Rander();

    }

    return free3DEngine();
}

HTLM

Ecco una parte del codice fatto a scuola in HTLM e CSS:

_________________________________________





Pagina 1:

<htlm>
  <head>
    <title>La Mia Pagina HTLM</title>
    <style>
    body{
      font-size: 12px;
      line-height: 18px;
      background: green;
      background-image:url(halo.jpg);      
      background-repeat: repeat-y;

      }
#pagina{margin-left: 10px; margin-right: 10px; margin-top: 50px; background-color: white;}
  
#header{border: solid 5px red; font-size: 40px; height:700px; padding:5;}
#centro{border: solid 5px yellow; height:200px; padding:20;}
#footer{border: solid 5px blue;}
   #sinistra{float:left;}  
   #destra{float:right;}  
  select{font-size: 40px;}
    </style>
    <body>
    <!-- COMMENTO -->
<div id="pagina">
  
<div id="header">
     <h1>Si inizia a studiare HTLM</h1>
      <a href="pagina2.html">vai a pagina 2</a> 
<p>Oggi abbiamo iniziato il nuovo modulo</p>
                
             <div id="sinistra">
              <image src="halo.jpg" width="900px" height="500px" />
             </div>
             <div id="destra">
              <image src="haloreach.jpg" width="300px" height="500px" />
             </div> 
</div>
    
<div id="centro">
    
        <div id="sinistra">
          <h2>HTLM, pagine:</h2>
          <ol>
            <li>p1</li>
            <li>p2</li>
            <li>p3</li>
            <li>p4</li>
            <li>p5</li>
          </ol>
         </div> 
         
      <div id="destra">  
        <h2>Che X ti piace?</h2>
         <select>
           <option>x1</option>
           <option>x2</option>
           <option>x3</option>
           <option>x4</option>
           <option>x5</option>
         </select>
</div>
     
</div>
    
<div id="footer">
     <h3>con h3</h3>
<p>il fondo della pagg</p>
    
</div>
    
</div>
    </body>
  </head>
</htlm>
_____________________________________________


Pagina 2:



<html>
    <head>
            <title>La mia seconda pagina.....in quest anno!</title>
            <style>
            table{border: thin solid black;border-collapse: collapse;padding:20;}
            td,th{border: thin dotted black;padding:20;}
            th{background-color:#66FFFF}
            </style>
            <body>
            <div id="pagina">
                    <div id="tabellina">
                      <table>
                              <tr> <th>Studenti</th><th>età</th></tr>
                              <tr> <th>Cavalierini</th><th>9 maggio 1991</th></tr>
                              <tr> <th>Ceccarini</th><th>25 maggio 1990</th></tr>
                              <tr> <th>Ceccarini</th><th>7 gennaio 1990</th></tr>
                              <tr> <th>Palazzetti</th><th>26 dicembre 1991</th></tr>
                      </table>
                    </div>
                   <a href="pagina1.html">vai a pagina 1</a> 
            </div>
           </body>
    </head>
</html>