Dreamotion3D

Généralités sur la programmation 3D
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

Oui je me souviens qu'on avait déjà abordé ce sujet, j'ai eu la flemme de rechercher la conclusion , merci de me la rappeler :)


@Tmyke , je viens de tester ton installeur, ça fonctionne, sympa les nouveaux examples, notamment le BumpAirPlane.
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.
tmyke
Messages : 1554
Inscription : lun. 24/juil./2006 6:44
Localisation : vosges (France) 47°54'39.06"N 6°20'06.39"E

Message par tmyke »

Oui, mais un peux lourd pour les cartes un peu ancienne (ma 9700pro en bave
un peu dans certain couloir - moins de 57 fps)
:wink:
Force et sagesse...
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

bon encore un petit problem

pour des raison d'utilisation, je suis obligé d'executer plusieurs fois Dreamotion3d !!

mais j'ai une erreur de device !!

teste ce code, il va ouvrir une fenetre 3D avec un cube dedans

ensuite press ESCAPE, qui aura pour but de fermer la fenetre
et de renvoyer au debut ou une recréation de fenetre
et là BUG !! :D

le code :

Code : Tout sélectionner


IncludePath "D:\PureBasic\dobro\Exemple Perso\3Dreammotion\Samples\include\" ; mettre le bon chemin
IncludeFile "dreamotion3d.pbi"
#ecran=1
largeur_ecran=800
hauteur_ecran=600
titre$="coucou"

If InitSprite () = 0 Or InitKeyboard () = 0 Or InitMouse () = 0
    End
EndIf

debut: ; au deuxieme passage j'ai une erreur DEVICE INIT 



 OpenWindow(#ecran, 0, 0, largeur_ecran, hauteur_ecran,titre$,  #PB_Window_SystemMenu|#PB_Window_BorderLess |#PB_Window_ScreenCentered ) 
WindowID = WindowID(#ecran) 
OpenWindowedScreen(WindowID(#ecran) , 0, 0,largeur_ecran, hauteur_ecran, 0, 0,0) 
DM_Graphics3DGadget(largeur_ecran, hauteur_ecran, WindowID, 1)  ; <<<- cette fonction fait l'ecran 3D en gadget !!
*Camera = DM_CreateCamera()
DM_CameraClsColor(*Camera, 50, 50, 50)
DM_TranslateEntity(*Camera,0,0,-10)
*cube=DM_CreateCube()
DM_CreateLight(3)

Repeat
    ExamineKeyboard ()
    ExamineMouse ()
    
   
;      Render  c'es ce qui permet de voir le resultat !
DM_BeginScene() 
DM_RenderWorld() 
DM_EndScene() 

Until KeyboardReleased ( #PB_Key_Escape ) Or WindowEvent ()= #PB_Event_CloseWindow
 DM_ClearGraphics()
CloseWindow(#ecran)


Goto debut

tmyke
Messages : 1554
Inscription : lun. 24/juil./2006 6:44
Localisation : vosges (France) 47°54'39.06"N 6°20'06.39"E

Message par tmyke »

Vous faites des fois des truc auquel j'aurais jamais pensé... :?

M'enfin, c'est bien un bug, j'ai corrigé, du moins je pense, j'avoue n'avoir
jamais prévue de genre de redémarrage a chaud...

Le module (pas le package) est a jour...
:wink:


PS: avec le code que tu donne cela fonctionne maintenant, du coups pour arreter
j'ai du faire un bon vieux Ctrl-Alt-sup :lol:
Force et sagesse...
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

tmyke a écrit :Vous faites des fois des truc auquel j'aurais jamais pensé... :?

M'enfin, c'est bien un bug, j'ai corrigé, du moins je pense, j'avoue n'avoir
jamais prévue de genre de redémarrage a chaud...

Le module (pas le package) est a jour...
:wink:


PS: avec le code que tu donne cela fonctionne maintenant, du coups pour arreter
j'ai du faire un bon vieux Ctrl-Alt-sup :lol:
:D merci je regarde :D

ps : le redemarrage est obligé pour moi, puisque je passe sans arret
de l'editeur de code PUREGOLO au resultat (soit graphique 2D, soit 3D)
donc a un moment donné j'ouvre l'ecran pour montrer le résultat
puis apres vision, je referme, pour qu'au prochain essai (apres modification de code PUREGOLO) l'ecran s'ouvre a nouveau ect .. :D

tant mieux, il vaut mieux tout prévoir (et c'est pas facile :lol: )

ps: j'ai mis ce topic en annonce pour pas qu'il descende
et ^puisqu'il va durer dans le temps :D
si ça gene quelqu'un dite le :D
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

c'est quoi ce "coldet.dll" on le mets ou ?
faudra l'ajouter dans le désinstalleur :D


[REEDITION]

OK ça MARCHE Niquel !! :D

MERCI encore
tmyke
Messages : 1554
Inscription : lun. 24/juil./2006 6:44
Localisation : vosges (France) 47°54'39.06"N 6°20'06.39"E

Message par tmyke »

En fait le moteur graphique utilise deux DLL:

Dreamotion3D.dll : c'est le noyau du moteur, c'est le code que je passe mes loisir à écrire...

Coldet.dll : c'est une petite dll qui nous sert pour les collisions, c'est une lib externe, que je n'ai pas réussi
a intégrer en statique. Donc pour l'instant je la traine comme un boulet (un boulet sympa, car
niveau puissance de calc sur les collisions, c'est le top). Mais j'y travaille.

Elle est dans la mise a jour du module, car lors de l'init de DM3D, elle forcement appellée,
donc utile pour la petite animation 3D de l'install

sinon je l'avais rajouté dans le désinstalleur :wink:

PS: cool d'etre promu en 'annonce' :)
Force et sagesse...
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

tmyke a écrit :PS: cool d'etre promu en 'annonce' :)
Le travail que tu fais pour le bien de tous ici, le vaut bien :D
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

Pourquoi tu ne mets pas tes fichiers à télécharger sur ton site Dreamotion3D ?

ça ne doit pas être simple à maintenir à jour, tu as des liens partout ,sur ce forum, sur le forum anglais, peut-être ailleurs ?
ça serait quand même mieux de tout centraliser sur un seul site non ?
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.
tmyke
Messages : 1554
Inscription : lun. 24/juil./2006 6:44
Localisation : vosges (France) 47°54'39.06"N 6°20'06.39"E

Message par tmyke »

Les pack sont en ligne sur notre site depuis quelques jours. Mais je continuerais
a garder a jour les lien ici quand meme malgrés tout... :wink:

Quand au site anglais, je vais mettre le lien de notre site par contre.
Force et sagesse...
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

Bizarre, quand je vais sur ta page download j'ai ça :
No downloads yet, please check back soon
[EDIT]
Ok il faut être loggué pour voir quelque chose, pense aux visiteurs qui voudraient tester sans s'inscrire !

Autre remarque, laisse le choix, soit ton installateur soit un simple zip y'en a pas mal qui détestent ces installeurs qui font ce qu'ils veulent sans le moindre contrôle.
Dernière modification par comtois le ven. 02/févr./2007 13:16, modifié 2 fois.
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.
tmyke
Messages : 1554
Inscription : lun. 24/juil./2006 6:44
Localisation : vosges (France) 47°54'39.06"N 6°20'06.39"E

Message par tmyke »

Faut etre loggué pour avoir accès ...
Force et sagesse...
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

oui je viens de le voir et j'ai édité mon message, tu peux le relire j'ai ajouté d'autres commentaires :)
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.
tmyke
Messages : 1554
Inscription : lun. 24/juil./2006 6:44
Localisation : vosges (France) 47°54'39.06"N 6°20'06.39"E

Message par tmyke »

comtois a écrit :Autre remarque, laisse le choix, soit ton installateur soit un simple zip y'en a pas mal qui détestent ces installeurs qui font ce qu'ils veulent sans le moindre contrôle.
je prend note et je met cela en ligne dès que possible
Force et sagesse...
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

j'ai pas compris comment marche le "lines 3d" sur Dream :? 8O
a propos, croit tu possible de faire l'equivalent d'un Linexy
LineXY(x1, y1, x2, y2 [, Couleur])
Trace une ligne partant de la position x1,y1 jusqu'à la position x2,y2
ce serai plutot pour Dream :D

Line3DXY(x_depart, y_depart, z_depart, x_arrivé, y_arrivé, z_arrivé, Couleur,nombre de points) :D
ça ! ça m'arrangerai bien par contre :lol:
pfff! t'es meme pas cap :lol:

ps tu peux t'inspirer du code de comtois sur les lignes de bresenham

que j'ai mis au gout du jour :D
avec ça, l'adaptation devrai etre simple pour faire ma Ligne3DXY :D



Code : Tout sélectionner

#dobro=1
#Police=1
#Sprite=1
Declare  comtoisLinexy(xi,yi,xf,yf,CoulR,CoulG,CoulB)
; ***********************************
Resultat = InitSprite()
FontID = LoadFont(#Police, "arial", 50, #PB_Font_Bold )
EcranX = GetSystemMetrics_(#SM_CXSCREEN):;=largeur de l'ecran
EcranY = GetSystemMetrics_(#SM_CYSCREEN):;=hauteur de l'ecran
    WindowID = OpenWindow(1, 0, 0, EcranX, EcranY,  "hello",#PB_Window_SystemMenu|#PB_Window_BorderLess |#PB_Window_ScreenCentered ) 
    
    WindowID = WindowID(1) 
    Result = OpenWindowedScreen(WindowID,0,0, EcranX, EcranY, 1, 0,0)
    phrase$="D,o,b,r,o, ,v,o,u,s, ,S,a,l,u,e, ,e,t, ,v,o,u,s, ,s,o,u,h,a,i,t,e, ,d,e, ,B,o,n,n,e, ,V,a,c,a,n,c,e,s, ,a, ,T,o,u,s"
    
    ;  creation d'un Sprite
    For t=1 To Len(phrase$)
        caractere$ = StringField(phrase$, t, ",")  
        CreateSprite(t, 80, 80)  ; cree un sprite
        StartDrawing(SpriteOutput(t) ) ; on dessine dedans
        DrawingMode(1) ; fond transparent
        FrontColor(RGB(255, 255,255)); caratere blanc
        DrawingFont(FontID)   
        DrawText(1,1,caractere$) 
        Debug caractere$
        StopDrawing() 
        spr+1 ; nbr de sprite
    Next t
    spr=spr/2
    
    
    Resultat = InitMouse() 
    Repeat
        ExamineMouse() 
        Event=WaitWindowEvent()
        
        StartDrawing( ScreenOutput()) 
        
        x1=0
        y1=0
        x2=500
        y2=500
        
        
        comtoisLinexy( 0, 0, 500, 500,255,255,255)
        
        StopDrawing()
        
        ;         x= MouseX() 
        ;        y= MouseY()
        ;     
        
        
        
        FlipBuffers():; affiche l'ecran
        ; ClearScreen(0, 0, 0) :;efface l'ecran 
        Event=WindowEvent()   ;}
        
        
        
        
        If MouseButton(2)
            End
        EndIf
        
    Until Event=#PB_Event_CloseWindow 
    
    
    
    Procedure  comtoisLinexy(xi,yi,xf,yf,CoulR,CoulG,CoulB)
        ; StartDrawing(ScreenOutput())
        FrontColor(RGB(CoulR,CoulG,CoulB))
        x = xi
        Y = yi
        dx = xf - xi
        dy = yf - yi
        If dx > 0
            xinc = 1
        Else
            xinc = -1
        EndIf
        If dy > 0
            yinc = 1
        Else
            yinc = -1
        EndIf 
        
        dx = Abs(dx)
        dy = Abs(dy)
        Plot(x,Y)
        If  dx > dy
            cumul = dx / 2
            For i = 1 To dx 
                x + xinc
                cumul + dy
                If (cumul >= dx)
                    cumul - dx
                    Y + yinc
                EndIf 
                Plot(x,Y) 
            Next 
        Else
            cumul = dy / 2
            For i = 1 To  dy
                Y + yinc
                cumul + dx
                If cumul >= dy
                    cumul - dy
                    x + xinc
                EndIf 
                Plot(x,Y)
            Next   
        EndIf 
        DrawText(10,10,"click bouton droit pour quitter",RGB(255,255,255),RGB(0,0,0))
        
        ; StopDrawing()
    EndProcedure   
Répondre