[ speciebsp @ 26.03.2005. 23:41 ] @
Ovdje imam jedan kôd iz tutorijala sa stranice 32bits.co.uk u kojem covjek objasnjava kako iz heightmape dobiti 3D teren... medjutim ovo zaista nikako nemogu da sazvakam: Code: int z = 128; float tu, tv; int nArrayIndex = 0; for(int nIndexY=0;nIndexY<bmpHeight;nIndexY+=2) { tv = (float)(((float)nIndexY/(float)2)/(float)128); for(int nIndexX=0;nIndexX<bmpWidth;nIndexX+=2) { int x=nIndexX-128; tu = (float)(((float)nIndexX/(float)2)/(float)128); cvs[((nIndexY/2) * 128)+(nIndexX/2)].X = (float)x; cvs[((nIndexY/2) * 128)+(nIndexX/2)].Y=(float)data[nIndexY,nIndexX]; cvs[((nIndexY/2) * 128)+(nIndexX/2)].Z=(float)z; cvs[((nIndexY/2) * 128)+(nIndexX/2)].Tu=tv; cvs[((nIndexY/2) * 128)+(nIndexX/2)].Tv=tu; int col=data[nIndexY,nIndexX]*7; cvs[((nIndexY/2) * 128)+(nIndexX/2)].Color = Color.FromArgb(255, col,col,col).ToArgb(); } z-=2; } for(int nIndexY=0; nIndexY<128; nIndexY++) { for(int nIndexX=0; nIndexX<127; nIndexX++) { Inds[nArrayIndex]= (short)(((nIndexY+1) * 128)+nIndexX); Inds[nArrayIndex+1]=(short)((nIndexY * 128)+nIndexX); Inds[nArrayIndex+2]=(short)(((nIndexY+1) * 128)+nIndexX+1); Inds[nArrayIndex+3]=(short)(((nIndexY+1) * 128)+nIndexX+1); Inds[nArrayIndex+4]=(short)((nIndexY * 128)+nIndexX); Inds[nArrayIndex+5]=(short)((nIndexY * 128)+nIndexX+1); nArrayIndex+=6; } } Interesuje me dali mi ko moze objasniti na koji tacno nacin kreira vertexe na osnovu koda iznad? Znam da drugi dio koda sluzi za kreiranje indexa i to je to :) Napomena: data[] niz sadrzi vrijednosti pixela bitmape, tj. vrijednosti boja (0-255)! Hvala unaprijed! |