Publié : sam. 02/juin/2007 19:50
au moins cela permet d'une certaine façon de valider la commande, merci Dobro 

voici mon petit code de testtmyke a écrit :au moins cela permet d'une certaine façon de valider la commande, merci Dobro
Code : Tout sélectionner
; Init different modules
; Fichiers Include
IncludePath "D:\PureBasic4\Dreamotion3D\SamplesDM3D\include"
;IncludeFile "D:\PureBasic4\Dreamotion3D\SamplesDM3D\include\d3dx9.pbi"
IncludeFile "D:\PureBasic4\Dreamotion3D\SamplesDM3D\include\dreamotion3d.pbi"
If InitSprite() = 0 Or InitKeyboard() = 0 Or InitMouse() = 0
End
EndIf
; Initialize graphic windows
DM_Graphics3D(600,600, 32, #False, #False)
; a little camera
*camera.l = DM_CreateCamera()
DM_TurnEntity(*camera, 25, 0, 0, glob.b=#False) ; baisse la tete de 25°
DM_TranslateEntity(*camera,0,250,-500); monte de 250, et recule de 50
; une lumiere
*light=DM_CreateLight( #D3DLIGHT_POINT )
DM_TranslateEntity(*light,-100,250,0) ; la lumiere 1 est a 250 d'altitude, plus haut que les 2 cubes au dessus du cube 1
*light2=DM_CreateLight( #D3DLIGHT_POINT )
DM_TranslateEntity(*light2,100,250,0); la lumiere 2 est a 250 d'altitude, plus haut que les 2 cubes au dessus du cube 2
DM_LightRange(*light,1500.0)
; 2 cubes
*cube=DM_CreateCube.l( ) ;on creer le cube 1 ROUGE
DM_TranslateEntity(*cube,-100,0,0); on le deplace a gauche a 50 d'altitude
DM_ScaleMesh( *cube, 100,100, 100) ; on fait un gros cube
DM_EntityColor(*cube, 255, 0, 0, 0)
*cube2=DM_CreateCube.l( ) ; on creer le cube 2 BLEU
DM_TranslateEntity(*cube2,200,0,0); on le deplace a droite de l'autre a 0 d'altitude, mais il fait 100 de haut !!
DM_ScaleMesh( *cube2, 100,100, 100) ; on fait un gros cube
DM_EntityColor(*cube2, 0,0,255, Alpha.b)
DM_AddMesh(*cube, *cube2, copy.b=#True) ; d'apres Doc on copie le rouge sur le bleu (copie de cube dans cube2)
DM_FreeEntity(*cube2) ; on efface le cube 2 , reste le cube 1 (sur la gauche de la camera)
;DM_FreeEntity(*cube1) ; on efface le cube 1 , reste le cube 2 (sur la droite de la camera)
Repeat
ExamineKeyboard()
ExamineMouse()
ShowCursor_(1)
; *****************************************************************************
;-3D Control Camera pendant dessin
If KeyboardReleased(#PB_Key_Escape) Or MouseButton(#PB_MouseButton_Left)
Quit=1
ElseIf KeyboardPushed(#PB_Key_Up )
poz=1
DM_MoveEntity(*camera, 0,0,0.08); on recule/avance la camera
ElseIf KeyboardPushed(#PB_Key_Down )
poz=-1
DM_MoveEntity(*camera, 0,0,-0.08); on recule/avance la camera
ElseIf KeyboardPushed(#PB_Key_Left )
DM_MoveEntity(*camera, -0.08,0,0); on recule/avance la camera
ElseIf KeyboardPushed(#PB_Key_Right )
DM_MoveEntity(*camera, 0.08,0,0); on recule/avance la camera
ElseIf KeyboardPushed(#PB_Key_PageUp)
DM_MoveEntity(*Camera, 0,0.08,0); eleve la camera
ElseIf KeyboardPushed(#PB_Key_PageDown )
DM_MoveEntity(*Camera, 0,-0.08,0); baisse la camera
EndIf
DM_TurnEntity(*Camera, MouseDeltaY()/8, MouseDeltaX()/8,0)
; *****************************************************************************
; *****************************************************************************
; Render
DM_BeginScene()
DM_RenderWorld()
DM_EndScene()
Until Quit=1
DM_ClearGraphics()
End
Code : Tout sélectionner
; Include files
IncludePath "Include\" : IncludeFile "dreamotion3d.pbi"
If InitSprite() = 0 Or InitKeyboard() = 0 Or InitMouse() = 0
End
EndIf
; Initialize graphic windows
DM_Graphics3D(800,600, 32, 0,1)
; a little camera
*camera.l = DM_CreateCamera()
DM_TurnEntity(*camera, 25, 0, 0, glob.b=#False) ; baisse la tete de 25°
DM_TranslateEntity(*camera,0,250,-500); monte de 250, et recule de 50
; une lumiere
*light=DM_CreateLight(3 )
; 2 cubes
*cube=DM_CreateCube.l( ) ;on creer le cube 1 ROUGE
DM_ScaleMesh( *cube, 100,100, 100) ; on fait un gros cube
DM_TranslateMesh(*cube,-100,0,0); on le deplace a gauche a 50 d'altitude
DM_EntityColor(*cube, 255, 0, 0, 255)
*cube2=DM_CreateCube() ; on creer le cube 2 BLEU
DM_ScaleMesh( *cube2, 100,100, 100) ; on fait un gros cube
DM_TranslateMesh(*cube2,150,0,0); on le deplace a droite de l'autre a 0 d'altitude, mais il fait 100 de haut !!
DM_EntityColor(*cube2, 0,0,255, 255)
DM_AddMesh(*cube, *cube2, #True) ; d'apres Doc on copie le rouge sur le bleu (copie de cube dans cube2)
DM_TranslateEntity(*cube2, 0,50,0)
DM_FreeEntity(*cube) ; on efface le cube 2 , reste le cube 1 (sur la gauche de la camera)
;DM_FreeEntity(*cube2) ; on efface le cube 1 , reste le cube 2 (sur la droite de la camera)
Repeat
ExamineKeyboard()
ExamineMouse()
ShowCursor_(1)
; *****************************************************************************
;-3D Control Camera pendant dessin
If KeyboardReleased(#PB_Key_Escape) Or MouseButton(#PB_MouseButton_Left)
Quit=1
ElseIf KeyboardPushed(#PB_Key_Up )
poz=1
DM_MoveEntity(*camera, 0,0,0.08); on recule/avance la camera
ElseIf KeyboardPushed(#PB_Key_Down )
poz=-1
DM_MoveEntity(*camera, 0,0,-0.08); on recule/avance la camera
ElseIf KeyboardPushed(#PB_Key_Left )
DM_MoveEntity(*camera, -0.08,0,0); on recule/avance la camera
ElseIf KeyboardPushed(#PB_Key_Right )
DM_MoveEntity(*camera, 0.08,0,0); on recule/avance la camera
ElseIf KeyboardPushed(#PB_Key_PageUp)
DM_MoveEntity(*Camera, 0,0.08,0); eleve la camera
ElseIf KeyboardPushed(#PB_Key_PageDown )
DM_MoveEntity(*Camera, 0,-0.08,0); baisse la camera
EndIf
DM_TurnEntity(*Camera, MouseDeltaY()/8, MouseDeltaX()/8,0)
; *****************************************************************************
; *****************************************************************************
; Render
DM_BeginScene()
DM_RenderWorld()
DM_EndScene()
Until Quit=1
DM_ClearGraphics()
End
tmyke a écrit : il semble que j'ai un bug sur la fonction DM_TranslateMEsh, qui ne semble ne pas fonctionner
si on la place avant DM_ScaleMesh()... je verais ça ce soir
Code : Tout sélectionner
DM_Graphics3DGadget(largeur_ecran, hauteur_ecran, WindowID, 1)
n'hesite pas en plus a lui faire creer plein d'objets pour que ça prenne un max de ramtmyke a écrit :Je ragarde cela c e soir, et je met a l'épreuve la chose...
haaaa !tmyke a écrit :Bon, effectivement, j'ai bien un soucis avec la libération de certaines ressources. Je n'ai pas pu régler ce soir le soucis, mais d'ici au WE prochain,
cela devrais etre possible.
Je m'absente quelques jours, je verais cela a mon retour ...
non ça n'est pas possible, mais tu me donne une idée , en tout casCpl.Bator a écrit :Dobro, ca serais sympa de pouvoir manipuler la caméra via tes scripts, a moi que cela soit déjà possible ?
erix14 a écrit :Si on peut "scripter" le déplacement de la camera, ça peut être intéressant de créer une vidéo du parcours. De plus, avec ce procédé, peut importe le temps du rendu de chaque image, la vidéo sera toujours nickel. Tu peux solliciter mon aide en MP, si tu en as besoin pour faire cela.
sauve_avi "chemin\nom de l'image",type de compression
save_avi "chemin\nom de l'image",type de compression
Cette commande va transformer les images contenus dans le dossier animation en un fichier AVI compressé
cette commande ne peut fonctionner que si dans le meme listing
la commande sauve_image "xxxx.ani" a ete utilisée avant !!
car les images utilisées pour creer l'AVI sont mis dans un buffer par
la commande sauve_image "xxxx.ani"....
les types de compression peuvent etre : je vais ajouter un exemple de compression pour un fichier video
divx311 <-- meilleur taux de compression 30 k
divx4 <-- le divx 4.12 44 k
indeov5 <-- indeoV5 73 k
cinepak <-- cinepak 799 k
msvc <-- microsoft video 1 1480 k
il est noter que si le codec n'est pas present le fichier ne sera pas crée !!
Ex :
let taille=10
FPOS 1,580
pour [carre],taille
repete 4
AV taille
TD 90
fin_repete
fin_pour
repete 25
couleur 255,255,255
[carre],taille
sauve_image "test.ani"
couleur 0,0,0
[carre],taille
let taille={taille}+10
fin_repete
;on rejoue l'animation
repete 2
joue_image 1
joue_image 0
fin_repete
sauve_avi "carre.avi",divx311
tmyke a écrit :Bon, effectivement, j'ai bien un soucis avec la libération de certaines ressources. Je n'ai pas pu régler ce soir le soucis, mais d'ici au WE prochain,
cela devrais etre possible.
Je m'absente quelques jours, je verais cela a mon retour ...