Plus de rotation en 3D

Vous avez une idée pour améliorer ou modifier PureBasic ? N'hésitez pas à la proposer.
comtois
Messages : 5190
Inscription : mer. 21/janv./2004 17:48
Contact :

Plus de rotation en 3D

Message par comtois »

Bon je cherche encore à comprendre à quoi correspond les rotations en PB.

Dans l'aide de Darkbasic j'ai lu ça :
ROTATE OBJECT
Cette commande effectue une rotation à l'objet 3D spécifié par rapport aux trois axes de l'espace. Le numéro de l'objet doit être
spécifié sous forme d'un nombre entier. Cette méthode de rotation est appelée Rotation de Euler et est différente de la Rotation Libre.
Les angles de Euler définissent une rotation en X, Y et Z, et il faut utiliser les commandes ROTATION ZYX sur un Objet de Euler pour
retrouver une Rotation Libre. Les paramètres d'angle doivent être spécifiés sous forme de nombres réels.

SYNTAXE
ROTATE OBJECT Numéro d'Objet, AngleX, AngleY, AngleZ
Je dirais que la commande RotateEntity() s'apparente à cette commande de DarkBasic ? Ou je me trompe ?
SET OBJECT ROTATION XYZ
Cette commande rétablit l'ordre de rotation normal pour l'objet 3D spécifié. Les angles de rotation sont appliqués d'abord sur l'axe X,
puis l'axe Y et enfin l'axe Z. Le paramètre doit être spécifié sous forme de nombre entier.

SYNTAXE
SET OBJECT ROTATION XYZ Numéro d'Objet
Est-ce que RotateEntity() fonctionne selon ce principe ? ou dans un autre ordre ? Est-ce qu'on pourrait avoir un peu plus d'infos dans l'aide ?

Peut-être qu'il nous manque une batterie de commandes de ce type ? :
PITCH OBJECT DOWN
Cette commande effectue une rotation de tangage vers le bas pour l'objet 3D spécifié. La rotation est indépendante des axes
d'orientation, ce qui donne une liberté totale de mouvement à l'objet. La valeur de l'angle peut être positive ou négative. Le numéro de
l'objet doit être spécifié sous forme d'un nombre entier et l'angle sous forme d'un nombre réel.

SYNTAXE
PITCH OBJECT DOWN Numéro d'Objet, Valeur
TURN OBJECT LEFT : TURN OBJECT LEFT Numéro d'Objet, Valeur
TURN OBJECT RIGHT : TURN OBJECT RIGHT Numéro d'Objet, Valeur
PITCH OBJECT UP : PITCH OBJECT UP Numéro d'Objet, Valeur
PITCH OBJECT DOWN : PITCH OBJECT DOWN Numéro d'Objet, Valeur
ROLL OBJECT LEFT : ROLL OBJECT LEFT Numéro d'Objet, Valeur
ROLL OBJECT RIGHT : ROLL OBJECT RIGHT Numéro d'Objet, Valeur
et il y a aussi ce genre de commande pour les 3 axes , par contre la doc ne dit pas de quel axe il s'agit , l'axe de la caméra ? de la scène ? de l'objet 3D ?
XROTATE OBJECT
Cette commande effectue une rotation de l'objet 3D spécifié selon l'axe des X. Le numéro de l'objet doit être spécifié sous forme de
nombre entier, l'angle de rotation sous forme de nombre réel.

SYNTAXE
XROTATE OBJECT Numéro d'Objet, AngleX
Tout ça pour dire que si les fonctions de rotations pouvaient s'étoffer un peu plus dans une prochaine version , ça serait le bienvenu :)
En attendant , dans la doc de la v4 pourrais-tu préciser pourquoi il faut faire RotateEntity(#Entity,AngleX,0,0) pour tourner sur l'axe des Y?

Voir aussi ce post pour avoir un aperçu des problèmes que je rencontre
avec RotateEntity() , sans doute parce que je fais quelque chose de faux , il va falloir que je reprenne tout ça calmement quand j'en saurai plus sur le fonctionnement du RotateEntity() de PureBasic :)

http://purebasic.hmt-forum.com/viewtopi ... 5&start=36
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.