4.30 beta 1

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

4.30 beta 1

Message par comtois »

quelques démos avec la 4.30 , ou attendez un peu , dès que je suis rentré chez moi je pourrai faire une archive avec tout mes tests 3D et les médias récoltés ici et là. les démos ci dessous seront dans l'archive, avec d'autres tests.

http://herved25.free.fr/test/TempleCompletV4_30.zip

http://herved25.free.fr/test/Collision.zip << test avec collision de PB

http://herved25.free.fr/test/WaterWorldV4_30.zip << test avec mes collisions

à placer dans le dossier ogre16

Code : Tout sélectionner

;Comtois

IncludeFile "Screen3DRequester.pb"

If InitEngine3D()

  Add3DArchive("Data\", #PB_3DArchive_FileSystem)
  Add3DArchive("GUI\", #PB_3DArchive_FileSystem)
  Add3DArchive("GUI\schemes", #PB_3DArchive_FileSystem)
  Add3DArchive("GUI\imagesets", #PB_3DArchive_FileSystem)
  Add3DArchive("GUI\fonts", #PB_3DArchive_FileSystem)
  Add3DArchive("GUI\looknfeel", #PB_3DArchive_FileSystem)
  Add3DArchive("GUI\layouts", #PB_3DArchive_FileSystem)
   
  InitSprite()
  InitKeyboard()
  InitMouse()
 
  If Screen3DRequester()
    AmbientColor(RGB(80,80,80))
    CreateLight(0,RGB(255,255,255),200,800,200)
   
    CreateMesh(0, 10)
    SetMeshData(0, #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_Color | #PB_Mesh_UVCoordinate, ?Sommets, 24)
    SetMeshData(0, #PB_Mesh_Face, ?Triangles, 12)

    CreateMaterial(0, LoadTexture(0, "texture0.png")) ;Texture0.png >> c'est juste un carré blanc avec un cadre noir sur le pourtour
    MaterialAmbientColor(0,#PB_Material_AmbientColors)
   
    For z=0 To 2
      For y=0 To 2
        For x=0 To 2
          If x=1 And y=1 And z=1 : Centre = No : EndIf
          CreateEntity(No, MeshID(0), MaterialID(0),x*10,y*10,z*10)
          ScaleEntity(No,0.5,0.5,0.5)
          No+1
        Next x
      Next y
    Next z     
    CreateEntity(28, MeshID(0), MaterialID(0))
    ScaleEntity(28,0.2,0.2,0.2)
   
    ;a = OpenWindow3D(3, 0, 0, 350, 110, "Ecran")
    ;TextGadget3D(3,10,50,200,35,"Mon Texte")   
   
    ShowGUI(128, #False)
   
    CreateCamera(0, 0, 0, 50, 50) 
    CameraBackColor(0,#Blue)
    CameraLocate(0, EntityX(Centre), 80, EntityZ(Centre)+1)
    CameraLookAt(0,EntityX(Centre) ,EntityY(Centre),EntityZ(Centre))
   
    CreateCamera(1, 50, 0, 50, 50) 
    CameraBackColor(1,#Yellow)
    CameraLocate(1, EntityX(Centre), EntityY(Centre), 80)
    CameraLookAt(1,EntityX(Centre) ,EntityY(Centre),EntityZ(Centre))

    CreateCamera(2, 0, 50, 50, 50) 
    CameraBackColor(2,#Red)
    CameraLocate(2, 80, EntityY(Centre), EntityZ(Centre))
    CameraLookAt(2,EntityX(Centre) ,EntityY(Centre),EntityZ(Centre))   

    CreateCamera(3, 50, 50, 50, 50) 
    CameraBackColor(3,#Green)
    CameraLocate(3, 80, 80, 80)
    CameraLookAt(3,EntityX(Centre) ,EntityY(Centre),EntityZ(Centre))
   
    ShowCursor_(1)
     
    Repeat
      Screen3DEvents()
      ExamineKeyboard()
      RotateEntity(28,1,1,1,1)     
      If ExamineMouse()

        If MouseButton(#PB_MouseButton_Left)
          
           If MouseX()<Screen3DRequester_Width/2 And MouseY()<Screen3DRequester_Height/2
             InputEvent3D(MouseX()*2, MouseY()*2, MouseButton(1), "")
             Entity = MousePick(0, MouseX()*2, MouseY()*2)
          
           ElseIf MouseX()>Screen3DRequester_Width/2 And MouseY()<Screen3DRequester_Height/2
             InputEvent3D((MouseX()-Screen3DRequester_Width/2)*2, MouseY()*2, MouseButton(1), "")
             Entity = MousePick(1, (MouseX()-Screen3DRequester_Width/2)*2, MouseY()*2)
          
           ElseIf MouseX()<Screen3DRequester_Width/2 And MouseY()>Screen3DRequester_Height/2
             InputEvent3D(MouseX()*2, (MouseY()-Screen3DRequester_Height/2)*2, MouseButton(1), "")
             Entity = MousePick(2, MouseX()*2, (MouseY()-Screen3DRequester_Height/2)*2)
          
           ElseIf MouseX()>Screen3DRequester_Width/2 And MouseY()>Screen3DRequester_Height/2
             InputEvent3D((MouseX()-Screen3DRequester_Width/2)*2, (MouseY()-Screen3DRequester_Height/2)*2, MouseButton(1), "")
             Entity = MousePick(3, (MouseX()-Screen3DRequester_Width/2)*2, (MouseY()-Screen3DRequester_Height/2)*2)                         
           EndIf
          
           If entity<>28
             EntityLocate(28,PickX(),PickY(),PickZ())
           EndIf          
         EndIf
      EndIf
             
      RenderWorld()
      FlipBuffers()
    Until KeyboardPushed(#PB_Key_Escape) Or Quit = 1
  EndIf
   
Else
  MessageRequester("Error", "The 3D Engine can't be initialized",0)
EndIf

DataSection

Sommets:
;Dessus 0 à 3
Data.f -10,10,-10
Data.f 0,1,0
Data.l $00FF00
Data.f 0,0

Data.f 10,10,-10
Data.f 0,1,0
Data.l $00FF00
Data.f 0,1

Data.f 10,10,10
Data.f 0,1,0
Data.l $00FF00
Data.f 1,1

Data.f -10,10,10
Data.f 0,1,0
Data.l $00FF00
Data.f 1,0

;Dessous 4 à 7
Data.f -10,-10,10
Data.f 0,-1,0
Data.l $FFFF00
Data.f 0,0

Data.f 10,-10,10
Data.f 0,-1,0
Data.l $FFFF00
Data.f 0,1

Data.f 10,-10,-10
Data.f 0,-1,0
Data.l $FFFF00
Data.f 1,1

Data.f -10,-10,-10
Data.f 0,-1,0
Data.l $FFFF00
Data.f 1,0

;Devant 8 à 11
Data.f -10,10,10
Data.f 0,0,1
Data.l $FF0000
Data.f 0,0

Data.f 10,10,10
Data.f 0,0,1
Data.l $FF0000
Data.f 0,1

Data.f 10,-10,10
Data.f 0,0,1
Data.l $FF0000
Data.f 1,1

Data.f -10,-10,10
Data.f 0,0,1
Data.l $FF0000
Data.f 1,0

;Derrière 12 à 15
Data.f 10,10,-10
Data.f 0,0,-1
Data.l $0000FF
Data.f 0,0

Data.f -10,10,-10
Data.f 0,0,-1
Data.l $0000FF
Data.f 0,1

Data.f -10,-10,-10
Data.f 0,0,-1
Data.l $0000FF
Data.f 1,1

Data.f 10,-10,-10
Data.f 0,0,-1
Data.l $0000FF
Data.f 1,0

;Cote gauche 16 à 19
Data.f -10,10,-10
Data.f -1,0,0
Data.l $FF00FF
Data.f 0,0

Data.f -10,10,10
Data.f -1,0,0
Data.l $FF00FF
Data.f 0,1

Data.f -10,-10,10
Data.f -1,0,0
Data.l $FF00FF
Data.f 1,1

Data.f -10,-10,-10
Data.f -1,0,0
Data.l $FF00FF
Data.f 1,0

;Cote droit 20 à 23
Data.f 10,10,10
Data.f 1,0,0
Data.l $00FFFF
Data.f 0,0

Data.f 10,10,-10
Data.f 1,0,0
Data.l $00FFFF
Data.f 0,1

Data.f 10,-10,-10
Data.f 1,0,0
Data.l $00FFFF
Data.f 1,1

Data.f 10,-10,10
Data.f 1,0,0
Data.l $00FFFF
Data.f 1,0

Triangles:
;Face en Haut
Data.w 2,1,0
Data.w 0,3,2
;Face en Bas
Data.w 6,5,4
Data.w 4,7,6
;Face Avant
Data.w 10,9,8
Data.w 8,11,10
;Face Arrière
Data.w 14,13,12
Data.w 12,15,14
;Face Gauche
Data.w 18,17,16
Data.w 16,19,18
;Face Droite
Data.w 22,21,20
Data.w 20,23,22
 
   
EndDataSection
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
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Message par Thyphoon »

Merci beaucoup Comtois pour ce partage, j'attendais la 4.30 pour m'essayer un peu a la 3D... y a plus qu'a ...comme on dit :wink:

Thy
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

ok voila l'archive, elle fait 22 Mo , rien d'extraordinaire au niveau des codes, bcp de médias dans l'archive, les médias sont issus pour la plupart des démos d'ogre, et des trucs récupérés ici et là.

http://herved25.free.fr/test/Demo3D.zip
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
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Message par Thyphoon »

Super !

tient en tant que spécialiste de la 3D :P comment tu trouve les fonctions 4.30 ? est-ce que c'est parfait ? manque encore beaucoup de function ? c'est du niveau de blitz3D ? y a encore beaucoup de boulot ?
J'ai du mal a me faire une idée.
Merci
Thy
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

je ne suis absolument pas un spécialiste de la 3D , tu verras quand tu en feras un peu , je ne fais que des choses basiques :)

Les fonctions qui me manquent ?

une meilleure gestion des collisions, l'accès à l'octree d'une scène, les fonctions de lancer de rayon , différentes fonctions de tests collisions existantes dans ogre, l'intégration des fonctions math d'ogre (matrice, quaternion, calcul des normales d'une face, etc), la gestion des script particule.

Mais bon , ça ne me manque pas vraiment, je fais juste joujou avec la 3D, je ne me lancerai jamais dans le jeu qui tue et qui va révolutionner le monde :)
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
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Message par Thyphoon »

je ne suis absolument pas un spécialiste de la 3D , tu verras quand tu en feras un peu , je ne fais que des choses basiques :)
c'est déjà pas mal pour un non spécialiste :P
une meilleure gestion des collisions, l'accès à l'octree d'une scène, les fonctions de lancer de rayon , différentes fonctions de tests collisions existantes dans ogre, l'intégration des fonctions math d'ogre (matrice, quaternion, calcul des normales d'une face, etc), la gestion des script particule.
J'ai vu sur le forum anglais que Cpt_Bator demandait un peu les mêmes choses
Mais bon , ça ne me manque pas vraiment, je fais juste joujou avec la 3D, je ne me lancerai jamais dans le jeu qui tue et qui va révolutionner le monde :)

Idem ... quoi que ça m'amuserait d'essayer de faire un "3D construction Kit" en purebasic ... :P Mais avant ça j'ai du boulot lollllllllllll
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Message par Ar-S »

Supers codes Comtois !
Par contre savez vous comment convertir un .3ds en .mesh ? Je ne trouve rien sur le net.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Message par Thyphoon »

Ar-S a écrit :Supers codes Comtois !
Par contre savez vous comment convertir un .3ds en .mesh ? Je ne trouve rien sur le net.
sur le site de ogre il y a tout ce qu'il faut. il y a quelques temps j'avais trouvé ça dans les tools !
Répondre