Dreamotion3D

Généralités sur la programmation 3D
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 »

Je commence par PointEntity() et dans la foulé si je peux embrayer sur
CemaraPoursuit(), je le fais...

:wink:
Force et sagesse...
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 »

Voila, DM_PointEntity(entity, target) est implenté.
Chargement de la dernière mouture du pack (ou simplement du module)

rappel des liens:
Pack pour Pure Basic
http://www.dreamotion3d.com/PureBasic/PackPB.zip ( complet package )
http://www.dreamotion3d.com/PureBasic/modulePB.zip ( justes les lib/DLL/include/Doc )
http://www.dreamotion3d.com/PureBasic/PhysXPB.zip ( physic module )
Force et sagesse...
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

merci je testerai ça ce week-end :)
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.
Avatar de l’utilisateur
cederavic
Messages : 1338
Inscription : lun. 09/févr./2004 23:38
Localisation : Bordeaux

Message par cederavic »

Hello!
Voila un bon bout de temps que j'ai pas toucher à PB, surtout en 3D... J'avais vue il y a un petit moment ce poste, sans plus m'y interesser, mais je commence à m'y mettre! Et je dois dir que je suis vraiment impressionné par votre travail. Ca à vraiment l'air très prometteur.
En plus, ça m'a vivement redonné gout la programmation (surtout graphique -> 3D). Je vais étudier plus en profondeur votre moteur, et essayé d'en tirer un maximum tout en le testant.

Bref, voila un ptit message pour faire coucou à tout les "vieux du forum" que j'apprecie, et un merci à votre équipe.
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

Finalement j'ai pris 10 minutes pour tester, parfait ça maaaaarche :P


Par contre j'ai un problème d'affichage avec le modèle SacredPlace qui se trouve dans DeleD.

J'ai exporté le modèle dans le format B3D et j'utilise ce code

Code : Tout sélectionner

IncludePath "Include\"
IncludeFile "d3dx9.pbi"
IncludeFile "dreamotion3d.pbi"

Global *camera.CEntity
Global *mesh.CEntity
Global *Sphere.CEntity

;  first init
If InitSprite() = 0 Or InitKeyboard() = 0 Or InitMouse() = 0
  End
EndIf
;-------------------
; 3D engine init
;-------------------
ScreenWidth.l = 800
ScreenHeight.l = 600
ScreenDepth.l = 32
OpenScreen(ScreenWidth, ScreenHeight, ScreenDepth, "Dreamotion3D...")
DM_InitGraphics(ScreenID(), ScreenDepth, 1, 1) 
;----------------------------
;-ça sert à quoi ces trucs ??
;----------------------------
*DM_d3d9 	  =	DM_GetD3D9()
*DM_d3dDev9 =	DM_GetDevice9()
DM_WIDTH	  =	ScreenWidth
DM_HEIGHT	  =	ScreenHeight

SetCurrentDirectory("medias/")

;------------------------
; load a B3D file
*mesh = DM_LoadAnimEntity("SacredPlace.b3d", #Null, #False)

*Sphere = DM_CreateSphere()
DM_PositionEntity(*Sphere, 20, 20, 0)

;- camera
*camera = DM_CreateCamera(#Null)
DM_TranslateEntity(*camera,  0, 25, -300)
DM_CameraClsColor(*camera, 0, 0, 0)
; DM_CameraRange(*camera, 0, 15000) ; aucun effet pour mon problème d'affichage!

;-----------------------------
; ------- main loop --------
;------------------------------
Repeat

  ExamineKeyboard()

  DM_TurnEntity(*camera, 0, 0.5, 0)
  DM_BeginScene()
    DM_RenderWorld()
  DM_EndScene()
Until KeyboardPushed(#PB_Key_Escape) 
DM_ClearGraphics()
End
Le temple s'affiche correctement sauf dans une zone, qui apparait en noir ?
Au début j'ai pensé que c'était la profondeur de champ de la caméra, j'ai essayé avec DM_CameraRange(*camera, 0, 15000), mais ça ne change rien.

Je n'ai pas encore essayé d'exporter sous un autre format que b3D pour comparer l'affichage.

A ce sujet, as-tu prévu de supporter le format mesh d'ogre ?
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.
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

cederavic a écrit :En plus, ça m'a vivement redonné gout la programmation (surtout graphique -> 3D). Je vais étudier plus en profondeur votre moteur, et essayé d'en tirer un maximum tout en le testant.
Tiens c'est la saison des revenants :)

Je suis bien content d'apprendre que tu vas te remettre à la prog 3D et en plus avec un moteur qui vaut la peine d'être testé.

Oui il est super ce moteur, je suis loin d'avoir tout testé tellement il y a de commandes !

Fred demandait ce qu'il manquait dans la lib 3D, je crois qu'il peut prendre modèle sur Dreamotion3D pour prendre la mesure de ce qu'il faut ajouter.
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.
cha0s
Messages : 681
Inscription : sam. 05/mars/2005 16:09

Message par cha0s »

maintenant j'ai un petit problem dans l'integration d'un scene dans une fenetre avec gadget.
je pense que le problem vient de la camera mais en bidoullant j'ai pas trouvé

Code : Tout sélectionner



; Fichiers Include 
IncludePath "include\"
  IncludeFile "d3dx9.pbi"
  IncludeFile "dreamotion3d.pbi"

Enumeration 
#Win_main
#Win_new

#Gadget_Panel
#Gadget_NewOk
#Gadget_NewAnnuler
#Gadget_NewTxtQuad
#Gadget_NewTxtFacette
#Gadget_NewTxtSize
#Gadget_NewIllustration
#Gadget_NewSpinFacette
#Gadget_NewSpinSize
#Gadget_NewSpinQuad


#Menu_New
#Menu_Quit
#Menu_Save
#Menua_SaveAS

#ImgIllustration
EndEnumeration

Global	*camera.CEntity
Global *brush.CBrush
Global *texture.CTexture

;  Initialisation des différents modules
If InitSprite() = 0 Or InitKeyboard() = 0 Or InitMouse() = 0 
    End
EndIf
UsePNGImageDecoder()   
LoadImage(#ImgIllustration, "include\ilustation.png")

Procedure NewSceneWindows()
  OpenWindow(#Win_new,0,0,490,310,"Nouvelle Scene",   #PB_Window_WindowCentered )
  DisableWindow(#Win_main, 1)
  If CreateGadgetList(WindowID(#Win_new))
    
    TextGadget(#Gadget_NewTxtQuad, 10, 10, 190, 20, "Nombre de quad"   +Chr(9)+" :", #PB_Text_Center)
    TextGadget(#Gadget_NewTxtFacette, 10, 60, 190, 20, "Facette par quad :", #PB_Text_Center)
    TextGadget(#Gadget_NewTxtSize, 10, 110, 190, 20, "Taille"  +Chr(9) +Chr(9)+" :", #PB_Text_Center)
    
    ImageGadget(#Gadget_NewIllustration, 200, 5, 260, 260, ImageID(#ImgIllustration))
    SpinGadget(#Gadget_NewSpinQuad, 50, 30, 100, 20, 2, 512 ,#PB_Spin_Numeric)
    SpinGadget(#Gadget_NewSpinFacette, 50, 80, 100, 20, 2, 512 ,#PB_Spin_Numeric)
    SpinGadget(#Gadget_NewSpinSize, 50, 130, 100, 20, 1, 10000 ,#PB_Spin_Numeric)
    SetGadgetText(#Gadget_NewSpinQuad, "16")
    SetGadgetText(#Gadget_NewSpinFacette, "16")
    SetGadgetText(#Gadget_NewSpinSize, "2048")
    ButtonGadget(#Gadget_NewOk, 10, 270, 80, 30, "Ok")
    ButtonGadget(#Gadget_NewAnnuler, 110, 270, 80, 30, "Annuler")  
  
  Else
    
    End
  EndIf

EndProcedure


winID.l=OpenWindow(#Win_main,0,0,800,600,"Yame 3D editor", #PB_Window_SystemMenu | #PB_Window_TitleBar | #PB_Window_ScreenCentered )
If winID

  If CreateGadgetList(WindowID(#Win_main)) 
    PanelGadget     (#Gadget_Panel, 600, 0, 200, 600 - MenuHeight())
      AddGadgetItem (#Gadget_Panel, -1, "Scene")
      AddGadgetItem (#Gadget_Panel, -1, "Elements")
  EndIf
  If CreateMenu(0, WindowID(#Win_main))   
    MenuTitle("&Projet")
      MenuItem(#Menu_New, "Ouvrir"   +Chr(9)+"Ctrl+O")
      MenuItem(#Menu_Save, "Enregistrer"   +Chr(9)+"Ctrl+E")
      MenuItem(#Menua_SaveAS, "Enregistrer sous"+Chr(9)+"Ctrl+R")
      MenuItem(#Menu_Quit, "Fermer"  +Chr(9)+"Ctrl+F")
    MenuTitle("&Edition")
    MenuTitle("&Option")
    MenuTitle("&Aide")
  EndIf
  OpenWindowedScreen(WindowID(#Win_main), 0, 0, 600, 600 - MenuHeight(), 0, 0, 0)
  res= DM_InitGraphics(winID, 32, 0 ,0)
  *DM_d3d9 	= 	DM_GetD3D9()
  *DM_d3dDev9 = 	DM_GetDevice9()
  DM_WIDTH	=	600
  DM_HEIGHT	=	600 - MenuHeight()
EndIf
DM_AmbiantLight(125, 125, 125)
*camera = DM_CreateCamera(#Null)
DM_MoveEntity(*camera, 0,0,-50.0)
DM_CameraClsColor(*camera, 125, 125, 125)
;DM_CameraProjRatio(*camera, 600,600 - MenuHeight(), 800)
;DM_CameraViewPort(*camera, 0, 0, 600, 600 - MenuHeight())

NewSceneWindows()
Repeat
  Event.l = WindowEvent()
  Select Event
    ;-Event gadget
    Case #PB_Event_Gadget 
      Select EventGadget()
        ;Annuler nouvelle scene
        Case #Gadget_NewAnnuler
          CloseWindow(#Win_new)
          DisableWindow(#Win_main, 0)
        ;Nouvelle Scene
        Case #Gadget_NewOk
        
          DM_SetTerrain(Val(GetGadgetText(#Gadget_NewSpinQuad)), Val(GetGadgetText(#Gadget_NewSpinFacette)), Val(GetGadgetText(#Gadget_NewSpinSize)))
          SetCurrentDirectory("include/")
          DM_CreateTerrain("hm.bmp", 1)
          *brush = DM_QuadBrush(0)
          ; Etablit la premiere texture 
          *texture = DM_GetTexture(*brush, 0)
          DM_LoadTexture(*texture, "backcolor.bmp")
          ; Etablit la seconde texture 
          *texture = DM_GetTexture(*brush, 1)
          DM_LoadTexture(*texture, "grille.bmp")

          ; Répercute sur les brushs de tous les Quad
          DM_MultiQuadBrush(0, 16, *brush)
          CloseWindow(#Win_new)
          DisableWindow(#Win_main, 0)
      EndSelect
    ;-Event menu
    Case #PB_Event_Menu
      Select EventMenu()
        Case #Menu_New
          NewSceneWindows()
          
        Case #Menu_Quit
          End
      EndSelect
    
  
  EndSelect
  DM_BeginScene()
    	DM_RenderWorld()
  DM_EndScene()  
  ;Delay(1)     
Until Event = #PB_Event_CloseWindow 


 DM_ClearGraphics()
 End
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 »

cederavic content que tu t'interresse a notre petite production,
qui est en apprentissage en ce moment... Plus il y a d'amateur de 3D sous PB
mieux c'est :)

@Comtois et ChaOs je regarde cela, ce soir j'ai du monde, donc je vous
tiens au courant dès demain ... ;)
Force et sagesse...
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

cederavic a écrit :Hello!
Voila un bon bout de temps que j'ai pas toucher à PB, [...]
Bref, voila un ptit message pour faire coucou à tout les "vieux du forum" que j'apprecie, et un merci à votre équipe.
et bien !! bien le bonjour ced, ca fait plaisir de te savoir par là.
apres regis (le soldat inconnu) furtivement hier, c'est au tour de ced, vous vous etes passé le mot ?



et puisque moi non plus je participe pas à ce post (compétences 3D ridicules)
je tiens quand meme à féliciter tmyke. pour tout ce que tu fais. bravo et lache pas l'affaire.
Image
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 »

Enfin tranquille.
@ChaOs: j'ai essayé ton code, pas mal, faire cohabiter les Gadget et DM3D, cela
me donne des frissons... mais c'est super cool.
Voila ce que j'ai:
Je lance ton code (j'ai mis de media vite fait que j'avais sous la main pour que cela tourne)
et voila le premier ecran, normal je pense.

Image

je click sur OK, et la je retourne sous PB, le pgm est comme figé en attente et il me l'a réduit
dans la barre des taches.
Je click donc dans la barre des taches, pour le remaner a moi.
La, avec quelques touches rajoutées, je me balade sur le terrain généré.
Je vais dans le menu et je fait 'ouvrir', j'arrive de nouveau sur le
menu de creation (normal)

Image

Je ne m'explique pas le clash entre les deux étapes. Par contre, précise moi plus
quelle est pour toi le prob, car j'ai en toile de fond l'ecran 3D de DM3D, et devant
j'ai bien la boite de dialogue qui fonctionne très bien...


@Comtois: je n'arrive pas a importer SacredPlace car chez moi une fois fait l'export
avec DeleD je dépasse le seuil des 65536 vertices ( limite pour l'instant de DM3D)
Sache par contre que certain effet du format B3D ne sont pas encore supporté, ce qui peut
une fois le modèle chargé, amener a des effet graphique non souhaité. Je me casse la tete
dessus en ce moment, en espérant régler les problème dans un délais résonable.
Force et sagesse...
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

Bizarre, avec l'export au format mesh je trouve 28456 vertices et 9552 triangles ( ça c'était avec un ancien fichier). Je viens de refaire l'export directement au format xml et là je trouve 9896 vertices et toujours le même nombre de triangles.


Et si je regarde les infos sur le modèle dans Deled il est indiqué :

Polygons 5026
Edges 11006
Vertices 6531

Bref , pas un seul chiffre pareil :)
Mais aucun ne dépasse les 65000 vertices.
En plus le modèle se charge bien, il s'affiche, et si je déplace ma caméra , la zone dans laquelle je me trouve s'affiche
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.
cha0s
Messages : 681
Inscription : sam. 05/mars/2005 16:09

Message par cha0s »

le problem est que le panel gagdet disparait sous le rendue de la scene or quand je suprime le rafraichissement de D3D j'obtient :

Image
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 :A ce sujet, as-tu prévu de supporter le format mesh d'ogre ?
non pas pour le moment, je veux finir correctement le format B3D. Ceci dit, c'est une option
qui m'interresse, mais je ne connais pas du tout les spécifications du format ogre. Si
quelqu'un dans les parages connait bien ce format, qu'il le dise, en travaillant ensemble,
alors cela pourrait aller asser vite, du moins pour la partie statique...
Comtois a écrit :Bizarre, avec l'export au format mesh je trouve 28456 vertices et 9552 triangles...
je reprend cela dans la journée, j'ai du faire une impasse quelque part...
cha0s a écrit :le problem est que le panel gagdet disparait sous le rendue de la scene or quand
je suprime le rafraichissement de D3D j'obtient...
J'suis pas très fort en ce qui concerne les gadgets, et au départ je ne suis pas trop rentré
dans les détail en ce qui concerne la cohabitation Windows menu/Gadgets et DM3D. Mais je vais me
pencher sur le problème . D'autant plus que j'ai en projet un utilitaire de travail sur les mesh
avec option complète sur les brush, vertex et pixel shaders intégres, etc... Donc, il faut que
je me forme, et que je vois pour regler ce genre de problème...
Image
Force et sagesse...
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

tmyke a écrit :Ceci dit, c'est une option qui m'interresse, mais je ne connais pas du tout les spécifications du format ogre. Si
quelqu'un dans les parages connait bien ce format, qu'il le dise, en travaillant ensemble,
alors cela pourrait aller asser vite, du moins pour la partie statique...
Tu peux peut-être jeter un oeil du côté du code d'irrlicht?

Il peut importer pas mal de formats, dont les formats Ogre et DeleD.
Currently supported mesh file formats:

* 3D Studio meshes (.3ds)
* B3D files (.b3d)
* Alias Wavefront Maya (.obj)
* Cartography shop 4 (.csm)
* COLLADA (.xml, .dae)
* DeleD (.dmf)
* FSRad oct (.oct)
* Irrlicht scenes (.irr)
* Microsoft DirectX (.x) (binary & text)
* Milkshape (.ms3d)
* My3DTools 3 (.my3D)
* OGRE meshes (.mesh)
* Pulsar LMTools (.lmts)
* Quake 3 levels (.bsp)
* Quake 2 models (.md2)
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.
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message par Progi1984 »

Pour la doc sur Ogre XML,
regarde là : http://www.games-creators.org/wiki/Specifications#X
Répondre