Annonces Google
Serveur IRC
Serveur : irc.portlane.se
Canal : #AmigaNG
Activité du Site

Pages vues depuis 25/07/2007 : 25 247 922

  • Nb. de membres 187
  • Nb. d'articles 1 270
  • Nb. de forums 19
  • Nb. de sujets 20
  • Nb. de critiques 24

Top 10  Statistiques

Index du forum »»  Création-Développement »» Mathématiques et caméras 3D

Mathématiques et caméras 3D#598

5Contributeur(s)
AmiDARKartblinkCreolsMonsieur-BelettElwood
3 Modérateur(s)
K-LElwoodcorto
AmiDARK AmiDARKicon_post
J'ai une ch'tite question ...
j'arrive plus à retrouver l'algorithme.

J'ai une caméra aux coordonnées : XCam, YCam, ZCam
Et aux angles de rotation : XRot, YRot, ZRot

Je veux faire pointer la caméra sur un point aux coordonnées 3D : XPos, YPos, ZPos...
Je me souvient plus comment calculer les angles XRot, YRot, ZRot pour que la caméra, à la position XCam, YCam, ZCam, regarde l'objet à la coordonnée XPos, YPos, ZPos ...

J'ai un peu cherché sur le net sans succès :( ( ou alors, je devais être fatigué hier soir à 2h du mat :p)

@ +
artblink artblinkicon_post
Tu vas trop loin pour moi la... désolé peut pas t'aider

Respect
AmiDARK AmiDARKicon_post
loool

J'ai tellement l'habitude d'utiliser des systèmes automatisés que je commence à en oublier mes maths :p

@ +
AmiDARK AmiDARKicon_post
Yes !

Ca y est :

Pour X : Cos( X ) * Sin( Y ) * Vitesse;
Y : Sin( X ) * Vitesse;
Z : Cos( X ) * Cos( Y ) * Vitesse:

Et ça y est mon Move Camera est ok
Maintenant j'ai toutes ces fonctions caméras codées :
void DEPositionCamera( float XPos, float YPos, float ZPos );
void DERotateCamera( float XAngle, float YAngle, float ZAngle );
void DEXRotateCamera( float XAngle );
void DEYRotateCamera( float YAngle );
void DEZRotateCamera( float ZAngle );
void DEPointCamera( float XPos, float YPos, float ZPos );
void DEMoveCamera( float Distance );
void DESetCameraRange( int NearValue, int FarValue );
void DESetCameraView( int Left, int Top, int Right, int Bottom );
void DESetCameraRotationXYZ();
void DESetCameraRotationZYX();
void DESetCameraFov( float fieldOfViewAngle );
void DEAutocamON();
void DEAutocamOFF();
void DETurnCameraLeft( float AngleValue );
void DETurnCameraRight( float AngleValue );
void DEPitchCameraUp( float AngleValue );
void DEPitchCameraDown( float AngleValue );
void DERollCameraLeft( float AngleValue );
void DERollCameraRight( float AngleValue );
void SetCameraToObjectOrientation( int ObjectID );
void DEBackdropOn();
void DEBackdropOff();
void DEColorBackdrop( int RGBColor );
float DECameraPositionX() ;
float DECameraPositionY() ;
float DECameraPositionZ() ;
float DECameraAngleX() ;
float DECameraAngleY() ;
float DECameraAngleZ() ;
void DEMakeCamera( int CameraID );
void DEDeleteCamera( int CameraID );
void DESetCurrentCamera( int CameraID );
void DEPositionCameraEx( int CameraID, float XPos, float YPos, float ZPos );
void DERotateCameraEx( int CameraID, float XAngle, float YAngle, float ZAngle );
void DEXRotateCameraEx( int CameraID, float XAngle );
void DEYRotateCameraEx( int CameraID, float YAngle );
void DEZRotateCameraEx( int CameraID, float ZAngle );
void DESetCameraRangeEx( int CameraID, float NearValue, float FarValue );
void DESetCameraViewEx( int CameraID, int Left, int Top, int Right, int Bottom );
void DESetCameraRotationXYZEx( int CameraID );
void DESetCameraRotationZYXEx( int CameraID );
void DESetCameraFovEx( int CameraID, float FieldOfViewAngle );
void DEBackdropOnEx( int CameraID );
void DEBackdropOffEx( int CameraID );
void DEBackdropColorEx( int CameraID, int RGBColor );
float DECameraPositionXEx( int CameraID );
float DECameraPositionYEx( int CameraID );
float DECameraPositionZEx( int CameraID );
float DECameraAngleXEx( int CameraID );
float DECameraAngleYEx( int CameraID );
float DECameraAngleZEx( int CameraID );

Voila, pour les caméras, me reste 32 commandes prévues à faire :p

@ +
AmiDARK

Message édité par : AmiDARK / 11-01-2010 00:40
Creols Creolsicon_post
Chapeau, AmiDARK ! :=!

Ma géométrie dans l'espace est trop ancienne (1950) pour t'être utile :-(
0
Monsieur-Belett Monsieur-Beletticon_post
@AmiDARK

Je suis curieux de voir le résultat :-)
www.triplea.fr
artblink artblinkicon_post
J'essaye tes formules sur hollywood se soir... on verra si sa morche... lol

Respect
Elwood Elwoodicon_post
Content que tu aies trouvé car avec mon Bac D (Biologie) j'aurai pas pu aider beaucoup. :-)
--
Philippe Ferrucci
Avec une Sam460 et AmigaOS 4.1, je suis eco-responsable. Cool !
AmiDARK AmiDARKicon_post
Ouais :p
J'essayerais de mettre en ligne une petite démo ou l'on pourra déplacer la caméra dans une map en 3D histoire de montrer le système en fonctionnement...

@ +
AmiDARK.
AmiDARK AmiDARKicon_post
@ArtBlink :
En fait l'algo que j'ai mis plus tôt sert à déplacer la caméra dans l'espace

pour l'orientation d'une caméra vers un point 3D de l'espace c'est ça :

Camera position X1, Y1, Z1
Point dans l'espace X2, Y2, Z2

float dx = ( X1 - X2 ); float dy = ( Y1 - Y2 ); float dz = ( Z1 - Z2 );
float AngleX = AtanFull( dy, sqrt( ( dx * dx ) + ( dz * dz ) ) );
float AngleY = AtanFull( dx, dz )
float AngleZ = 0.0f

En gros c'est ça ... Reste un bug à fixer quand on arrive au top/bottom mais l'algo en gros c'est celui là ;)

@ +
AmiDARK
Petites Annonces

0 annonce(s) publiée(s)

Consulter

AmigaOS 4.1

Laissez-vous tenter par
AmigaOS 4.1
AmiTheme

AmiTheme