1.2 Vårt första 3d Objekt Extended

Nu när vi vet hur vi skapar ett objekt med vertices så kan vi experimentera lite...det är ju så man lär sig ;)
Vi slänger in lite fler vertices i vår array. Genom att dra streck mellan vertices så kan vi rita bokstäver. Så vi öppnar vår cls3DAxis.cs class och går till vår metod där vi skapar vår VertexArray. Vi utökar vår array till 22 vertices istället för 6 dessutom för att slippa göra ändringar överallt så gör vi istället en int variabel som lagrar vertexcount...

int vertexCount = 22;
VertexPositionColor[] vertices = new VertexPositionColor[vertexCount];

När vi skapar vår vertexBuffer så måste den också veta hur många vertices arrayen innehåller så vi byter ut 6an och skriver dit det nya värdet istället...

vertexBuffer = new VertexBuffer(device, typeof(VertexPositionColor), vertexCount, BufferUsage.WriteOnly);

Så... nu tänkte jag att vi ska skriva 3 st bokstäver längst ut på varje axel. Eftersom varje axel är 1 float lång så kan vi även lägga till en float axelLängd = 1f så det blir lättare att läsa koden... Vi ska skriva X Y och Z längst ut på varje axel.

Om du minns PrimitiveType.LineList som vi skrev in i Drawfunktionen... iaf eftersom vi använder PrimitiveType.LineList så vet devicen att den ska rita streck mellan två punkter. Så den läser arrayen och tar Vertices två och två och drar streck mellan dem... Exempel om du har en penna och ska skriva så får du instruktioner om att du bara ska lyfta upp pennan efter varje streck och inte hålla pennan nere hela tiden... Skulle vi ha en PrimitiveType.LineList så är det samma sak som att du får instruktionen att rita ett X utan att lyfta på pennan. Det ungefär skulle se ut såhär:
\ /
/_\

istället för:

\ /
/ \

För att skapa Xet längst ut på X axeln så skriver vi:

float axelLängd = 1f;

//X
vertices[6] = new VertexPositionColor(new Vector3(axelLängd - 0.1f, 0.05f, 0.0f), Color.White);
vertices[7] = new VertexPositionColor(new Vector3(axelLängd - 0.05f, 0.2f, 0.0f), Color.White);
vertices[8] = new VertexPositionColor(new Vector3(axelLängd - 0.05f, 0.05f, 0.0f), Color.White);
vertices[9] = new VertexPositionColor(new Vector3(axelLängd - 0.1f, 0.2f, 0.0f), Color.White);


Inte allt för svårt att förstå... vi skapar 4 st punkter som bildar ett X längst ut på X-axeln.

Y-bokstaven är lite svårare eftersom den innehåller 3 st streck. Tänk att du ska skriva bokstaven Y. Då drar du 3 streck. Och varje streckdragning dras från punkt A till punkt B. Datorn kommer att dra ett streck mellan 10-11, 12-13 och 14-15 eftersom vi har PrimitiveType.LineList.

//Y bokstaven dras med 3 streck
vertices[10] = new VertexPositionColor(new Vector3(0.075f, axelLängd - 0.125f, 0.0f), Color.White);
vertices[11] = new VertexPositionColor(new Vector3(0.075f, axelLängd - 0.2f, 0.0f), Color.White);

vertices[12] = new VertexPositionColor(new Vector3(0.075f, axelLängd - 0.125f, 0.0f), Color.White);
vertices[13] = new VertexPositionColor(new Vector3(0.1f, axelLängd - 0.05f, 0.0f), Color.White);

vertices[14] = new VertexPositionColor(new Vector3(0.075f, axelLängd - 0.125f, 0.0f), Color.White);
vertices[15] = new VertexPositionColor(new Vector3(0.05f, axelLängd - 0.05f, 0.0f), Color.White);


Vår Z bokstav har också 3 st streckdragningar längst ut på Z axeln:


//Z
vertices[16] = new VertexPositionColor(new Vector3(0.0f, 0.05f, axelLängd-0.01f), Color.White);
vertices[17] = new VertexPositionColor(new Vector3(0.0f, 0.05f, axelLängd-0.05f), Color.White);
vertices[18] = new VertexPositionColor(new Vector3(0.0f, 0.05f, axelLängd-0.1f), Color.White);
vertices[19] = new VertexPositionColor(new Vector3(0.0f, 0.2f, axelLängd-0.05f), Color.White);
vertices[20] = new VertexPositionColor(new Vector3(0.0f, 0.2f, axelLängd-0.1f), Color.White);
vertices[21] = new VertexPositionColor(new Vector3(0.0f, 0.2f, axelLängd-0.05f), Color.White);


Sådär då, nu har vi skapat våra fina bokstäver... vi justerar kameran lite så att vi kan se lite bättre...

(I loadcontent)
effect.View = Matrix.CreateLookAt(new Vector3(-2.0f, 1.0f, -2.0f), Vector3.Zero, Vector3.Up);

Allt är ju färdiginställt så vi drar en F5 ;)



(^_^)


Kommentarer

Kommentera inlägget här:

Namn:
Kom ihåg mig?

E-postadress: (publiceras ej)

URL/Bloggadress:

Kommentar:

Trackback
RSS 2.0