måndag 13 oktober 2008

En första början

Det är ju en fördel om man kan förflytta sig i sin 3d-miljö så steg ett blir att skapa en "kamera" dvs en visuell effekt av att man "förflyttar sig" över världen.
Jag har altså skapat denna kamera utifrån matriser. Vi kan säga att en matris i stort sett är en liten finurlig tabell med i detta fall 12 tal fördelat på 4 rader och 4 columner. Med detta 4x4 matrix kan utföra beräkningar och magiskt :)

Min "kamera" är igentligen en blandning utav 3 st 4x4 matriser,
en matris som skapar mitt unika kameraperspektiv min "projection matrix"
en matris för kamerans vy, min "View matrix"
och en matrix för kamerans position och orientering i min värld, min "World Matrix"

Jag har sedan lagt till nödvändiga funktioner för att påverka kamerans position och riktning mha tangentbordet, för att fritt kunna förflytta min "kamera" över världen. :D

Efter jag skapat det grundläggande funktionerna för initsiering, uppdatering av logisk data, och funktion för uppdatering av bildskärmen, skapar jagen nu klass Camera och ett tillhörande Interface ICamera, fördelen med att låta kameraklassen ärva från ett interface är att jag kan implentera hur många kameror jag vill utan andra klasser som uppdateras i kameran påverkas!
Så länge den nya kameran förljer kriterierna för interfacet.

Interfacet deklarerar variabler:


public interface ICamera
{
Matrix ViewMatrix { get;}
Matrix ProjectionMatrix { get;}
Vector3 Position { get;}

}

det räcker för tillfället ;)

Min första kamera kommer fungera som en flygande FPSkamera och följa musen och tangenterna WASD.

Interfacet ICamera skapa jag dessutom som en "komponent" som blir åtkomlig från spelets basklass. Det gör det lättare att kasta runt adressen till kameran till alla objekt som kommer behöva den för att räkna ut hur den ska ritas.

Inga kommentarer: