Yksinkertainen kameraongelma:
Minulla on pisteitä, joilla x,y ja z -koordinaatit. Piirrän niitä näytölle 3d :nä. Pisteet ovat 3d-maailmassa kiinteitä, mutta kamera liikkuu vapaasti. Kameralla on x, y ja z -koordinaatit, joita käytetään myös pisteiden paikan laskemiseen.
Kovasti kummastuttaa, kuinka kamerasi z-suuntainen liike toimii, näyttää enemmän zoomilta kuin liikkeeltä :u
1) Määrittele "pyörityskulmat". Eulerin kulmia et halua käyttää jos käännyt kaikkien kolmen akselin ympäri, mutta yhden akselin (tässä esimerkissä y-akselin) ympäri kääntyessä lasket pisteen koordinaatit kameran avaruudessa (p\x-cX, p\y-cY, p\z-cZ) ja sen jälkeen pyörität niitä seuraavasti: x' = cos(a)*x+sin(a)*z, z' = -sin(a)*x+cos(a)*z. (xz pyörittää y:n ympäri, xy z:n ympäri ja zy x:n ympäri, vaihdat vain muuttujia ja akseli vaihtuu) Tämä on tavallinen 2D-rotaatiomatriisi auki kirjoitettuna, halutessasi voit tehdä tuon myös kahdelle akselille (muista käyttää eri välimuuttujia, x:n ja z:n tulee olla samat samaa matriisia laskettaessa). Jos taas haluat kääntyä kaikkien akselien ympäri, törmäät tässä toteutustavassa gimbal lockiin, johon ainoa ratkaisu on kvaternioiden käyttö, niistä löytää hyvää lisäinfoa interwebistä.
2) Riippuu, mitä tällä tarkoitat. Meshin generointi pisteiden pohjalta onnistuu monellakin eri tavalla, esimerkiksi muodostamalla pisteistä jonkinlaisen etäisyysfunktion ja käyttämällä marching cubes -algoritmiä tai vaikka Delaunayn kolmiointialgoritmiä käyttäen, jolloin pisteistä tulee suoraan verteksejä. Jos taas hait sitä, että sinulla on jo tarvittava data meshin luomiseen mallinnustyökalusta tai generoituna, sen kun vain lisäät tyyppiisi tuen useammalle pisteelle ja piirrät niiden väliin vaikka kolmioita. Ne kannattaa tosin jollain tapaa järjestää syvyysjärjestykseen, jotta takana olevat kolmiot piirtyvät taakse.