Page 1 sur 7
Physque pour Dreamotion3D
Publié : sam. 07/oct./2006 13:17
par tmyke
Comme promis pour ce WE, voici le petit module physque pour Dreamotion3D.
Comme pour le moteur graphique lui-meme, il s'agit de la première Beta,
et donc le module ne contient que les fonctions phyiques de base.
Les fonctions évoluées arriveront petit à petit dans les semaines et mois
a venir:
- gestion des véhicules,
- Ragdoll,
- particules,
- eau et fluide,
- etc...
Les samples fournis sont de petit pgm très 'basic', juste la pour
démontrer l'utilisation des principales fonctions physiques. Pas
toujours très beaux, certe, mais dans la plupart des cas assez
explicites. Pour la doc, elle est cette fois au format HTML, et en
anglais (pour la diffusion futur vers le monde Anglo-Saxon), désolé
pour les anglophobes...
http://www.dreamotion3d.com/PureBasic/PhysXPB.zip
rappel du lien pour le moteur 3D a proprement dit:
http://www.dreamotion3d.com/PureBasic/modulePB.zip
Publié : sam. 07/oct./2006 14:28
par erix14
Excellent, ça devient très facile de faire de la 3D.

Publié : sam. 07/oct./2006 15:20
par wolfjeremy
Pas mal.
Le rendu de la carte est plutot bon en plus (la map où on fait tomber des cube)
Et il y a la fonction CylindricalJoint qui m'interesse pas mal.
J'attend de voir les fluide.
Publié : sam. 07/oct./2006 15:54
par Anonyme
C'est du super boulot ! chapeau

Publié : sam. 07/oct./2006 16:16
par comtois
j'ai ce message d'erreur
---------------------------
PureBasic0.exe - Point d'entrée introuvable
---------------------------
Le point d'entrée de procédure ?Move@CEntity@@QAGXMMM@Z est introuvable dans la bibliothèque de liaisons dynamique Dreamotion3D.dll.
---------------------------
OK
---------------------------
j'ai bien copié les dll dans le répertoire system32, et la lib dans le répertoire PureLibraries/windows/Libraries/
et bien sûr j'avais déjà installé Dreamotion3D, qui fonctionne bien.
J'utilise PB4, j'ai directx9c
J'ai oublié quelque chose ?
Publié : sam. 07/oct./2006 16:22
par tmyke
Essais en re-téléchargeant la dernière version de DM3D, car ils y a eu
quelques aménagment depuis, et il vaut mieux avoir la dernière version
du moteur graphique dans ce cas ...
(re-load juste la partie module, dont j'ai mis le lien en haut du post)
Publié : sam. 07/oct./2006 16:44
par comtois
C'était ça
C'est vraiment excellent , tout fonctionne sauf le 8, j'ai une erreur à la ligne 56, invalid memory access.
J'ai vu que tu avais organisé la doc du moteur physique, si tu pouvais faire la même chose pour le moteur graphique, c'est à dire séparer les commandes pour la gestion des entitys, des meshs, des terrains, bref faire des familles de commandes pour accéder plus rapidement.
Je vais tenter de reprendre mes codes 3D avec ton moteur, je suis curieux de voir ce que ça donne.
Publié : sam. 07/oct./2006 16:49
par tmyke
Pour l'erreur ligne 56, c'est que tu dois selectionner dans la boite de dialogue
un fichier qui n'est pas un fichier 3D reconnu par DM3D, c-à-d un fichier
de type '.x' '.3ds' ou 'b3d'.
Pour la doc du moteur graphique, je suis dessus de temps en temps, et j'avance
donc doucement, je sais que c'est très pénalisant de ne pas pouvoir s'appuyer
sur une doc digne de ce nom ...
Publié : sam. 07/oct./2006 16:53
par comtois
oui je viens de prendre le temps de regarder plus attentivement d'où venait l'erreur et je revenais te dire que c'était une fausse alerte, j'avais testé trop vite
tout fonctionne. Bravo.
Publié : sam. 07/oct./2006 17:06
par flaith
Impressionnant
Joli boulot

Publié : dim. 08/oct./2006 10:21
par comtois
pour infos
- tu peux utiliser KeyboardMode(#PB_Keyboard_International).
- ExaminKeyboard() ne sert à rien avant le repeat, il est déjà dans la boucle.
ExamineMouse() et les commandes MouseX() and co sont en principe à utiliser dans le mode plein écran.
Et en mode plein écran ,il faut afficher un sprite aux coordonnées de la souris.
Si tu es en mode fenêtré il faut utiliser WindowMouseX() ans co.
Publié : dim. 08/oct./2006 10:50
par tmyke
Merci pour tes conseil Comtois, je vais corriger en conséquence le
code de mes petits samples...

Publié : dim. 08/oct./2006 11:19
par comtois
va pas trop vite, en fait comme tu utilises OpenWindowedScreen(), il me semble que cet écran se comporte comme dans le mode plein écran.
Mais il y a une fenêtre, alors comment la souris se gère dans ce cas ?
C'est pour ça que je ne fais que du plein écran ,pour ne pas me casser la tête avec ça
Si d'autres pouvaient donner leurs avis à ce sujet , ça serait intéressant.
Publié : dim. 08/oct./2006 17:39
par tmyke
En mode fenetre je n'ai pas trop compris la subtilité entre
MouseX() et WindowMouseX(n)
Et en mode plein ecran, j'ai un pointeur de souris quand meme,
c'est le sablier, mais il est actif.

L'avantage du pointeur type 'sprite', c'est qu'il est surement plus
facile a personnaliser.
Par contre j'ai un autre petit soucis, quand je passe par le mode fenetre, si je
ne met pas la ligne en début de code:
InitSprite() il me sort comme message d'erreur a l'execution
InitSprite() must be called before use the 'Sprite' command
alors que je n'utilise pas de sprite dans mon code...
Publié : dim. 08/oct./2006 17:55
par Backup
tmyke a écrit :Et en mode plein ecran, j'ai un pointeur de souris quand meme,c'est le sablier, mais il est actif.
le code suivant te permet de choisi un curseur different
Procedure change_curseur(type)
; IDC_APPSTARTING : curseur standard + sablier
; IDC_ARROW : curseur standard
; IDC_CROSS : croix
; IDC_IBEAM : texte
; IDC_ICON : Seulement Windows NT : Icône vide
; IDC_NO : Cercle barré (sens interdit)
; IDC_SIZE : Seulement Windows NT: 4 flèches : nord sud est ouest
; IDC_SIZEALL : Même chose que IDC_SIZE
; IDC_SIZENESW : 2 flèches : nordest et sudouest
; IDC_SIZENS : 2 flèches : nord et sud
; IDC_SIZENWSE : 2 flèches : nordouest et sudest
; IDC_SIZEWE : 2 flèches : ouest et sud
; IDC_UPARROW : 1 flèche : nord
; IDC_WAIT : Sablier
hcur= LoadCursor_ (0, type )
SetCursor_ (hcur ) ;
EndProcedure
change_curseur( #IDC_CROSS ) ; pour activer la croix
change_curseur( #IDC_WAIT ) ; pour activer le sablier