ik ben bezig met mijn eigen mini 3d engine en stoot
op een probleem waar ik nu al een hele tijd mijn
hoofd overbreek. Ik heb google ondertussen al helemaal
afgegoogeld en kan niets vinden dat ik kan gebruiken.
Mijn beperkte wiskunde kennis zal hier waarschijnlijk
ook iets mee te maken hebben
Ik van plan om een soort fps (a la quake of whatever)
te maken met mijn engine. Lukte aardig tot ik dus bij
het stuk collision detection kwam. Ik heb objecten in mijn 3d wereld
die dus afzonderlijk moeten kunnen bewegen(in object space) onafhankelijk van
de camera (world space). Hiervoor heb ik een matrix class gemaakt
en doe het dus op de volgende manier:
CMatrix4x4 matrix;
glPushMatrix;
glLoadMatrix(matrix.matrix);
matrix.rotate(angle,x,y,z);
matrix.translate(x,y,z);
flMultMatrix(matrix.matrix);
drawObject(object1);
glPopMatrix;
Dit doe ik dus voor al mijn objecten waardoor ze dus afzonderlijk
in mijn 3d wereld rondbewegen.
Het probleem vormt zich bij de collision detection. Ik gebruik dus
bounding spheres om de collision te berekenen met de camera en
tussen de verschillende objecten onderling. Nu wanneer ik de
verteces inlaad van een object in een 1D array dan staan deze
op positie 0 en werkt de collision detection vrij goed.
Maar wanneer ik ze doormiddel van bovenstaande code verplaats naar hun eigen
positie gaat de collision det. de mist in omdat het object
natuurlijk voor de camera(world space) nog altijd op positie 0
staan terwijl ze in object space op een andere plaats staan.
Ik weet dat probleem zich situeert in het converteren van de
ene space naar de andere en weet dus niet hoe je dit doet?
Ik hoop dat mijn uitleg wat duidelijk is.
op een probleem waar ik nu al een hele tijd mijn
hoofd overbreek. Ik heb google ondertussen al helemaal
afgegoogeld en kan niets vinden dat ik kan gebruiken.
Mijn beperkte wiskunde kennis zal hier waarschijnlijk
ook iets mee te maken hebben
Ik van plan om een soort fps (a la quake of whatever)
te maken met mijn engine. Lukte aardig tot ik dus bij
het stuk collision detection kwam. Ik heb objecten in mijn 3d wereld
die dus afzonderlijk moeten kunnen bewegen(in object space) onafhankelijk van
de camera (world space). Hiervoor heb ik een matrix class gemaakt
en doe het dus op de volgende manier:
CMatrix4x4 matrix;
glPushMatrix;
glLoadMatrix(matrix.matrix);
matrix.rotate(angle,x,y,z);
matrix.translate(x,y,z);
flMultMatrix(matrix.matrix);
drawObject(object1);
glPopMatrix;
Dit doe ik dus voor al mijn objecten waardoor ze dus afzonderlijk
in mijn 3d wereld rondbewegen.
Het probleem vormt zich bij de collision detection. Ik gebruik dus
bounding spheres om de collision te berekenen met de camera en
tussen de verschillende objecten onderling. Nu wanneer ik de
verteces inlaad van een object in een 1D array dan staan deze
op positie 0 en werkt de collision detection vrij goed.
Maar wanneer ik ze doormiddel van bovenstaande code verplaats naar hun eigen
positie gaat de collision det. de mist in omdat het object
natuurlijk voor de camera(world space) nog altijd op positie 0
staan terwijl ze in object space op een andere plaats staan.
Ik weet dat probleem zich situeert in het converteren van de
ene space naar de andere en weet dus niet hoe je dit doet?
Ik hoop dat mijn uitleg wat duidelijk is.