Le début du tout début de la 3D

Généralités sur la programmation 3D
Avatar de l’utilisateur
SPH
Messages : 4944
Inscription : mer. 09/nov./2005 9:53

Message par SPH »

Dobro a écrit :
SPH a écrit : Je n'ai pas trouver le bon reglage de camera pour que le carré soit face a nous ! Quelles sont les bonnes coordonnées ??
ce reglage ne fait que baisser la tete (camera) de 90 pour regarder ses pieds , et position la camera au dessus du carre , avec une altitude de 150 :)
Une altitude de 150, c'est pour que le mapping soit bien a la bonne taille ? (ou 150, c'est une valeur quelconque ?)

Ar-S nous montrait une piece style tetris mais en 3D. Est ce que ton carré actuel est en fait un cube qu'on peux gonffler en epaisseur ?

Derniere chose : dobro, tu connais des tas de choses en PB; et meme en 3D. Pkoi tu ne te lances pas dans un projet de grande ampleur ?? (a moins que tu ai deja un projet) :?: :?: :idea: :!:
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

SPH a écrit : Une altitude de 150, c'est pour que le mapping soit bien a la bonne taille ? (ou 150, c'est une valeur quelconque ?)
change la valeur en l'augmentant ou diminuant un peu tu verra :D
Ar-S nous montrait une piece style tetris mais en 3D. Est ce que ton carré actuel est en fait un cube qu'on peux gonffler en epaisseur ?
non puisqu'au dépars tu voulais un carré !!
donc là c'est un carré a 2 dimensions ..
sinon faut mettre un cube a la place

voici le code qui utilise un cube et le met a la bonne taille , et le texture
j'ai viré la procédure qui créait le carré du coup elle ne sert pas :)

Code : Tout sélectionner

; ------------------------------------------------------------
;   DreaMotion3D
;
;   Exemple     :   create mesh
;   Historique  :
;     18/09/06  00:00    DreaMotion3D Team
;     01/12/06  19:16    TMyke
;
; ------------------------------------------------------------

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


EnableExplicit

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

Global   *camera.CEntity
Global *land.CEntity
Global   *mesh.CMesh
Global *brush.CBrush
Global *texture.CTexture
Global   *font.CFont
Global *Cub.CEntity
Global *bb.CEntity

  ;   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)
  ; load font
*font = DM_LoadFont( "Tahoma",9 , 0)
DM_TextColor(*font, 198,198,198,255)
  ; change directory for media
SetCurrentDirectory("../media/")

  ; Set ambiant color
;DM_AmbientLight(150,  150,  150)
 
  ; ---------------------------------------
  ;  Create and custom mesh
  ; ---------------------------------------
*Cub=DM_CreateCube()   ; on creer un cube
DM_ScaleEntity  (*Cub,10,2,10,#False)  

; -------------------------------
    ; create little Brush
    ; -------------------------------
*bb = DM_CreateBrush("cube")
DM_BrushAmbient(*bb, 255,128,0,255)
DM_BrushDiffuse(*bb, 255,128,0,255)
    ; -------------------------------
    ; create a texture
    ; -------------------------------
*texture = DM_GetTexture(*bb, 0)
DM_LoadTexture( "tex64.bmp", *texture)
DM_BrushRenderState(#STATE_ADD, *bb, #D3DRS_CULLMODE, #D3DCULL_NONE)
DM_BrushRenderState(#STATE_RESTORE, *bb, #D3DRS_CULLMODE, #D3DCULL_CCW)
    ; set brush with this texture
DM_PaintEntity(*Cub, *bb, 0)


 
  ; ---------------------------------------
  ;          create camera
  ; ---------------------------------------
*camera   = DM_CreateCamera()
DM_MoveEntity(*camera, 0,150,0)  ;<--- Y= altitude
DM_CameraClsColor(*camera, 125, 125, 125)
DM_TurnEntity(*camera, 90,0,0) ; on tourne la camera de 90 degres sur laxe des X

  ; ---------------------------------------
  ;           main loop
  ; ---------------------------------------
  ; if fullscreen, must do it for keep mouse cursor
  ;change_curseur( #IDC_ARROW  )
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,2)
    ElseIf KeyboardPushed(#PB_Key_Down)
        DM_MoveEntity(*camera, 0,0,-2)
    EndIf
    If MouseButton(#PB_MouseButton_Left)
        If flagXDown=0
            omx = WindowMouseX(0)
            omy = WindowMouseY(0)
            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)
    ; draw text
    DM_DrawText(*font, 10, 15, "FPS : "+Str(DM_FPS()))
    DM_EndScene()
    
Until Quit=1

DM_ClearGraphics()
End
 

; IDE Options = PureBasic 4.10 Beta 4 (Windows - x86)
; CursorPosition = 161
; FirstLine = 131 
Derniere chose : dobro, tu connais des tas de choses en PB; et meme en 3D. Pkoi tu ne te lances pas dans un projet de grande ampleur ?? (a moins que tu ai deja un projet) :?: :?: :idea: :!:
ben disons que j'ai fait mon pureGolo qui marche maintenant en 2D/3D

mais je vais être très pris a partir du 18 Aout (passage de la Fimo poids lourd) , donc je ne préfère pas me lancer dans un projet .. :)
Avatar de l’utilisateur
SPH
Messages : 4944
Inscription : mer. 09/nov./2005 9:53

Message par SPH »

Tu vas devenir routier ?? (si oui, je suppose que tu n'auras plus du tout de temps)

Pour le cube, merci. La texture ne fonctionne pas mais c'est pas grave, je vais me baser sur ton code du carré. Et d'ailleurs, que dois-je copier coller dans le code pour faire un autre carré que je placerais a coté du premier ?
Je pensais recopier CreateFaces() mais nan, ca a pas l'air d'etre ca...
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

SPH a écrit :Tu vas devenir routier ?? (si oui, je suppose que tu n'auras plus du tout de temps)La texture ne fonctionne pas
oui ! mais poid lourds + remorque eventellement mais pas "super lourd" (semi)


cela viens que mes code sont placé directement dans le dossier Exemple de Dreamotion3D

et donc il recherche la texture dans le dossier "Media" , qui lui est dans le dossier Exemple de Dream :)
Avatar de l’utilisateur
SPH
Messages : 4944
Inscription : mer. 09/nov./2005 9:53

Message par SPH »

j'ai une question a porpos des cubes implémenté dans DM3D :
peut on utiliser une texture differente pour chaque face ? (a mon avis non, je n'ai pas trouvé d'exemples; le cube a dut etre créé pour avoir les memes faces...)
Anonyme

Message par Anonyme »

Tu as des fct° pour acceder au brush de chaque face , faut regarder du coté de la creation de mesh manuel pour y acceder , j'en sais pas plus , OpenGL only , faut demander a morpheusdx.
Avatar de l’utilisateur
SPH
Messages : 4944
Inscription : mer. 09/nov./2005 9:53

Message par SPH »

Après avoir cherché, je crois avoir trouvé comment on peux faire plusieurs plaques mappées.
Une petite question sur l'environnement de DM3D :Quel condition doit remplir un PC pour ouvrir cette fenetre :

Code : Tout sélectionner

DM_Graphics3D(800, 600, 32,  0, 1) 
Faut il juste dx9.0c ?

Autre question a propos de la fleche de la souris : est elle mappable ? est elle toujours presente dans cet ecran DM3D ?

Enfin, je suis en train de basculer mon jeu en 3D. J'ai 2 alternatives pour savoir sur quelle piece se trouve ma souris. Soit en calculant l'ecran avec un "grillage", soit en calculant ce qui se trouve sous le pointeur de la souris. Mon jeu en 2D utilisait la premiere solution et ca le prive de faire un peu "flotter" les pieces dans l'espace.
Donc, ne me rapellant d'aucun exemple utilisant la 2eme technique, comment identifier en DM3D le carré mappé se trouvant sous la souris ?

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

Message par Backup »

SPH a écrit :
Autre question a propos de la fleche de la souris : est elle mappable ? est elle toujours presente dans cet ecran DM3D ?
t'a essayé ?? :)

Code : Tout sélectionner

ShowCursor_(1) ; montre le curseur
  ShowCursor_(0) ; cache le curseur !!
et peut etre ça :

Code : Tout sélectionner

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
pour distribuer ton prg 3Dream, il faut inclure les Dll du Pack :)
Répondre