Algorithme de transformation 3D
Bonjour,
Voilà alors j'ai un problème concernant mon algorithme pour faire de la 3D, par avance je n'utilise aucune fonctions du gpu pour faire la 3D.
Et j'aimerais gardé cette aspect simple/facile, plutôt que faire appel au fonctions matriciel, fonction lookat() et j'en passe et des meilleurs :aie:.
Je passe donc tout par cpu, alors voiçi l'algorithme:
- Au départ, j'ai un vecteur point correspondant à un point de mon objet.
- Object_Management:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| - J'addition ce vecteur avec un autre vecteur appeller obj_position[4]
- Puis je passe ce vecteur à travers mes equation de rotations:
X-axe
1y = (1y * cos(phi_x)) - (1z * sin(phi_x))
1z = (1z * cos(phi_x)) + (1y * sin(phi_x))
Y-axe
End.1z = 1z' = (1z * cos(phi_y)) - (1x * sin(phi_y))
1x = (1x * cos(phi_y)) + (1z * sin(phi_y))
Z-axe
End.1x = 1x' = (1x * cos(phi_z)) - (1y * sin(phi_z))
End.1y = 1y' = (1y * cos(phi_z)) + (1x * sin(phi_z))
- J'addition le vecteur sortie avec un autre vecteur appeller obj_repere[4] |
- Camera_Management:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| - J'addition le vecteur sortie avec un autre vecteur appeller world_repere[4]
- J'addition le vecteur sortie avec un autre vecteur appeller cam_repere[4]
- Je passe ce vecteur à travers mes equation de rotations une nouvelles fois:
X-axe
1y = (1y * cos(phi_x)) - (1z * sin(phi_x))
1z = (1z * cos(phi_x)) + (1y * sin(phi_x))
Y-axe
End.1z = 1z' = (1z * cos(phi_y)) - (1x * sin(phi_y))
1x = (1x * cos(phi_y)) + (1z * sin(phi_y))
Z-axe
End.1x = 1x' = (1x * cos(phi_z)) - (1y * sin(phi_z))
End.1y = 1y' = (1y * cos(phi_z)) + (1x * sin(phi_z)) |
- Screen_Management :
Code:
1 2 3 4 5 6
| - J'affiche ce vecteur à l'ecran en le mettant dans un tableaux grace à l'equation:
x = (x * distance) / z
y = (y * distance) / z
screen[repere - (x * BPP + PITCH * y)] = color |
Et pour gérée le déplacement de la camera, je change le vecteur cam_repere[] selon sur l'axe où je veut me déplacer, mais si je veut m'avancer selon l'axe forward de la camera, je me retrouve vite coincés.
Merci d'avance.