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 »

Bon, quand tu as la DLL dans le rep system, les samples tournent-ils tous bien ? ou dans le repertoire du sample ?
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

tmyke a écrit :Bon, quand tu as la DLL dans le rep system, les samples tournent-ils tous bien ? ou dans le repertoire du sample ?
attends j'essai... mais tout a l'heure j'avais plus l'erreur mais les exemples plantaient pour diverse causes
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 »

Sinon, pendant que tu essais, passes-tu par l'IDE natif, ou employe tu un IDE alternatif ?
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

j'ai plus d'erreur avec Water !! :D

il a fallu que je remplace la ligne

Code : Tout sélectionner

  SetCurrentDirectory("../../media/")
par

Code : Tout sélectionner

  SetCurrentDirectory("../media/")
et que je mette les dll dans system32

j'utilise JAPBE


Pivo a la meme erreur que Water !!

Code : Tout sélectionner

  SetCurrentDirectory("../../media/")
a remplacer par

Code : Tout sélectionner

  SetCurrentDirectory("../media/")
yen a peut etre d'autres
Cpl.Bator a écrit :A mon avis Dobro , c'est plus un problème d'interface chaise/clavier , ici ca marche bien , j'ai fait une install par dessus une autre & aucun polink :D
alors ?? c'est qui qui deconne ?? 8O :lol: :lol:
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 »

Le soucis du repertoire des média arrive parfois, à une époque le moteur le signifiait par
un messagebox, mais sur la demande de certains developpeurs qui souhaitaient créer des
exe pour des jeux, et pour qui c'est pas terrible, je les ai remplacé par un systeme de fichier
'log'.

Sinon, pour la DLL, ne serait-ce pas un problème de repertoir par defaut différent sous
jaPBe par rapport à l'IDE natif de PB (/compilers) ?
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

tmyke a écrit : Sinon, pour la DLL, ne serait-ce pas un problème de repertoir par defaut différent sous
jaPBe par rapport à l'IDE natif de PB (/compilers) ?
possible, je n'utilise pas du tout l'editeur officiel ... faudrai demander a Gnozal :)

bon ça a l'aire d'être bon maintenant, mais faudrai quand meme corriger les path des media
parce que tu distribues les dossiers "Sample3d","Tools"<-- qui est vide d'ailleurs et "Media" avec le meme niveau !!

et le path des listing monte de 2 niveaux
"../../media/")
!! c'est pas bon... :)


en respectant l'install dans system32 tu sera compatible avec tout le monde :)
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, c'est un cas de conscience. Car je distribue le package pour PB, BMax et c++.
Je n'ai qu'un seul rep media, que je ne peux pas répercuter dans chaque repertoire des langage spécifique...
Donc, les chemins font référence au repertoire du SDK, c-à-d que ceux qui testent en
chargeant directement à partir des fichiers du pack ne rencontre pas de soucis...

Pour JaPBe, je prend l'info, je mettrait une mise en garde à la fois concernant cet IDE,
et en mettant un commentaire sur le path employé pour les média si les utilisateurs
déplace les samples dans d'autre répertoires qu'ils pensent aussi par la meme à changer le chemin
en conséquences ....

Pour la DLL, je signifierais aussi qu'en cas de non fonctionnement, de placer par defaut
les DLL dans system32, même si je n'aime pas trop cela...
Anonyme

Message par Anonyme »

Pour la gestion des erreurs , une Classe d'erreur serais la bienvenue.

Code : Tout sélectionner

class CError
{
public:
   void DM_SetError(int code);
   int   DM_GetLastError();
   CList <int> PileErreur;
}

etc...
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 »

Un systeme equivalent existe déjà dans le moteur depuis quelques temps , ce qui génère un fichier log a chaque execution
de la DLL désormais ... ;)
Anonyme

Message par Anonyme »

oui , mais c'est pas pratique comme système , le top c'est de debugger en temps réel , un peut comme gl_GetLastError()

message prive pour toi tmyke
Je pense qu'il va le voir sans que tu lui dises :D

++
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

j'ai un id d'image , j'aimerai en faire une texture sous Dream
comment faire ?

les exemple de Texture, montre que l'on peu charger a partir d'un fichier, ou bien dessiner une texture a l'aide des commande 2D...

mais rien sur l'utilisation d'une image purebasic en possedant un id (ImageID(#Image))

est-ce possible de texturer un objet en utilisant un ID ??

8O
Anonyme

Message par Anonyme »

L'id represente quoi ? un pointeur sur quoi ?
si c'est propre à purebasic , ce n'est pas possible, je pense que le mieux c'est de chopé le tableau de pixel de l'image ( lsi à déjà pondu un code il me semble ) puis de le transferer au tableau de pixel sous dreamotion, j'ai pas les sources sous les mains pour de dire laquelle par contre. :wink:
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

Cpl.Bator a écrit :L'id represente quoi ? un pointeur sur quoi ?
si c'est propre à purebasic , ce n'est pas possible, je pense que le mieux c'est de chopé le tableau de pixel de l'image ( lsi à déjà pondu un code il me semble ) puis de le transferer au tableau de pixel sous dreamotion, j'ai pas les sources sous les mains pour de dire laquelle par contre. :wink:
oui c'etait apres l'extraction d'icone des fichiers, je me retrouve avec l'id des image icone

mais du coup j'ai trouvé une parade, qui consiste a sauver les images au format bmp dans le Dossier "Icones" puis de recharger sous forme de texture bmp dans Dream... :)
c'est pas trop grave.. une 60 aines de petites images 32x32 sur un bureau bien chargé, ça va c'est pas la mort :)

mais une fonction de transfert d'image de Purebasic (librairie image) directement dans Dreamotion serai vraiment pratique, au lieu de passer par les fichier comme actuellement :)
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 »

Désolé pour cette courte absence, en ce moment je suis un peu overbooké.

Je vais prendre les topic les uns après les autres au fil de la journée, pour essayer
d'y répondre de mon mieux:

Concernant la jonction des image de PB vers DM3D, pas forcement facile.
Avec SLIDE, nous avions pondu ce code, qu'il faut encore corrigé (ordre des couleurs par exemple, etc...)
Je vous le livre tel-quel (pour des images 32 bits):

Code : Tout sélectionner

; Include files 
IncludePath "Include\"  :  IncludeFile "dreamotion3d.pbi"

EnableExplicit

Declare DM_PBImageToTexture(image.l,*texture.CTexture)

; Globales
Global	anglex.f, angley.f, flagXDown.w
Global	mox.f, omx.f, moy.l, omy.l

  Global	*camera.CCamera
  Global	*mesh.CMesh
  Global *brush.CBrush
  Global *texture.CTexture
  
  Global val.l,Quit.b , imageID.l
  
  
  ;  Init PB modules
  If InitSprite() = 0 Or InitKeyboard() = 0 Or InitMouse() = 0 
    End
  EndIf

  ; set graphic window 3D
  DM_Graphics3D(800,600,32, 0, 1)
  ; change directory
  SetCurrentDirectory("media/")
  ; ---------------------------------------
  ;           import some mesh
  ; ---------------------------------------
  ; Charge le tigre
  *mesh  = DM_CreateCube()
  
  ; ---------------------------------------
  ;      brush and texture of tiger
  ; ---------------------------------------
  *brush    = DM_GetBrush(*mesh)
  *texture  = DM_GetTexture(*brush)

  ;DM_LoadTexture("body.bmp", *texture)
  imageID = LoadImage(0, "body.bmp")
  DM_PBImageToTexture(0, *texture)  

  ; ---------------------------------------
  ;          create one camera
  ; ---------------------------------------
  *camera   = DM_CreateCamera()
  DM_MoveEntity(*camera, 0,0,-8)
  DM_CameraClsColor(*camera, 125, 125, 125)

  ; if fullscreen, must do it for keep mouse cursor
  ;change_curseur( #IDC_ARROW  )
  ; ---------------------------------------
  ;           Main loop
  ; ---------------------------------------
  Repeat
  	ExamineKeyboard()
  	ExamineMouse() 
  	ShowCursor_(1)
  	
 	
    ; if Escape Key, exit	  	
    If KeyboardReleased(#PB_Key_Escape) Or WindowEvent()=#PB_Event_CloseWindow
  	  Quit=1
    EndIf
 
  	; move camera with dir key and mouse (left click)
    If KeyboardPushed(#PB_Key_Up)
  	 	DM_MoveEntity(*camera, 0,0,1)
    ElseIf KeyboardPushed(#PB_Key_Down) 
  	  DM_MoveEntity(*camera, 0,0,-1)
    EndIf
    If MouseButton(#PB_MouseButton_Left)
  		If flagXDown=0
  			omx = MouseX()
  			omy = MouseY()
  			flagXDown=11
  		Else
  			moy = MouseY()-omy
  			angley=(moy/5.0)
  			omy= MouseY()
  			mox = MouseX()-omx
  			anglex=(mox/5.0)
  			omx= MouseX()
  			DM_TurnEntity(*camera, angley,anglex,0)
  		EndIf
  	Else
  	 		flagXDown=0
    EndIf

  	; ---------------
  	;      Render
  	; ---------------
  	DM_BeginScene()
    	DM_RenderWorld(*camera)
  	  ; display somes informations
  	DM_EndScene()
 
  Until Quit=1
  DM_ClearGraphics()
  End


Procedure DM_PBImageToTexture(image.l,*texture.CTexture=#Null)  
  Define.l x,y,*ptr,d
  Define *Tex.IDirect3DTexture9
  Define rect.D3DLOCKED_RECT  

  ; creation d'une texture, vide
  *DM_D3DDEVICE\CreateTexture(ImageWidth(image),ImageHeight(image),0,0,#D3DFMT_A8R8G8B8, #D3DPOOL_MANAGED, @*Tex, #Null)
  ; remplissage 
  *Tex\LockRect(0,@rect, #Null,0)
  *ptr = rect\pBits
  d = rect\Pitch - ImageWidth(image) * 4   ; pitch : décalage supplémentaire en octets
  StartDrawing(ImageOutput(image))
    For x.l = 0 To ImageWidth(image)-1 ;  pour chaque colone de la texture
        For y.l = 0 To ImageHeight(image)-1  ; pour chaque pixel de la colone    
            PokeL(*ptr,Point(x,y))
            *ptr + 4
        Next
        *ptr + d
    Next
    *Tex\UnlockRect(0)
  StopDrawing()    

  PokeL( *texture\Texture, *Tex)
  
  ProcedureReturn *texture 
EndProcedure
Voila, j'espère que cela pourra peut-etre aider un petit peu ;)
Aller, je retourne au taf, a tout à l'heure pour le reste de l'aventure ..

(Y-a pas de smile genre completement éssouflé ? ;) )
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 »

Un petit message pour signifier, que pour le moment je doit décrocher de DM3D.
Le moteur en est à un point ou il faudrait que je lui fasse franchir un palier,
ce qui impliquerait de m'y consacrer encore plus..
Et j'avoue que je n'ai plus le temps nécessaires pour lui faire passer ce cap,
bien au contraire. Donc, je prend un peu de recul, pendant quelques temps. Je
n'abandonne pas, mais je vais faire autres choses pour le moment, avec le peu
de temps libre dont je dispose en ce moment. Je ne décroche pas du monde 3D,
je bidouille avec Irrlicht pour l'instant à temps perdu, faute de mieux.
Et je reviendrais à la charge avec DM3D, qui sait, peut-etre avant l'été
si j'arrive à retrouver du temps, ou si quelques coders sont interessés
pour m'aider à faire avancer le moteur.

Encore pardon, surtout vis-à-vis de ceux qui m'ont soutenu, et qui ont pris
la peine de coder avec ce moteur qui me tient à coeur.

Alors à très bientôt.

PS: je viendrais faire un petit tour dans le coin de temps en temps, c'est plus fort que moi.
Répondre