Page 1 sur 1

Quelques questions avant de débuter. :-)

Publié : dim. 29/juin/2008 8:46
par Stefou
Salut à tous ! 8)

J'aimerais commençer la 3D. Tout est simple avec pure mais là j'ai l'impression que le génie de Fred n'est pas encore passé par là (j'éspère me tromper).
Mon but est de construire le plan 3d d'une maison de façon grossière (mur et toit)
Existe t-il :
- des fonctions simple pour créer des parralèlogrames ?
- des fonctions pour extruder une surface ?
- un petit tuto pour démarrer ?

Merci pour vos réponses et bonne journée à tous.

Publié : dim. 29/juin/2008 11:28
par Frenchy Pilou
Si c'est pour l'été il vaut mieux utiliser le gratuit Google Sketchup :wink:

Publié : dim. 29/juin/2008 12:22
par Stefou
Merci Pilou, en attendant une réponse j'était justement entrain de le regarder !

Publié : dim. 29/juin/2008 22:14
par comtois
Existe t-il :
- des fonctions simple pour créer des parralèlogrames ?
oui , enfin non, faut le construire manuellement, mais c'est une forme simple avec deux triangles. Prendre modèle sur le fichier MeshManuel.pb
ou dans le code ci dessous, au label M2, c'est un simple plan.
- des fonctions pour extruder une surface ?
Non, mais je ne vois pas ce que ça fait exactement ?
- un petit tuto pour démarrer ?
regarde ma signature, il y a quelques tutoriels sur la 3D avec PureBasic.

Et un code que je ne vais pas jeter, même s'il ne sert à rien.

Code : Tout sélectionner

InitEngine3D()
InitSprite()
InitKeyboard()
InitMouse()
OpenWindow(0,0,0,800,600,"Dungeon")
OpenWindowedScreen(WindowID(0),0,0,800,600,0,0,0)

#CameraSpeed = 10
Define.f KeyX, KeyY, MouseX, MouseY

AmbientColor(RGB(128,128,128))

; Create a plan, manually
;
CreateMesh(1,100)
SetMeshData(1, #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate, ?M1, 8)
SetMeshData(1, #PB_Mesh_Face, ?PlanFaces2, 8)
CreateMesh(2,100)
SetMeshData(2, #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate, ?M2, 4)
SetMeshData(2, #PB_Mesh_Face, ?PlanFaces, 4)
CreateMesh(3,100)
SetMeshData(3, #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate, ?M3, 8)
SetMeshData(3, #PB_Mesh_Face, ?PlanFaces2, 8)
CreateMesh(4,100)
SetMeshData(4, #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate, ?M4, 8)
SetMeshData(4, #PB_Mesh_Face, ?PlanFaces2, 8)
CreateMesh(5,100)
SetMeshData(5, #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate, ?M5, 4)
SetMeshData(5, #PB_Mesh_Face, ?PlanFaces, 4)
CreateMesh(6,100)
SetMeshData(6, #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate, ?M6, 8)
SetMeshData(6, #PB_Mesh_Face, ?PlanFaces2, 8)
CreateMesh(7,100)
SetMeshData(7, #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate, ?M7, 8)
SetMeshData(7, #PB_Mesh_Face, ?PlanFaces2, 8)
CreateMesh(8,100)
SetMeshData(8, #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate, ?M8, 8)
SetMeshData(8, #PB_Mesh_Face, ?PlanFaces2, 8)
CreateMesh(9,100)
SetMeshData(9, #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate, ?M9, 8)
SetMeshData(9, #PB_Mesh_Face, ?PlanFaces2, 8)
CreateMesh(10,100)
SetMeshData(10, #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate, ?M10, 8)
SetMeshData(10, #PB_Mesh_Face, ?PlanFaces2, 8)
CreateMesh(11,100)
SetMeshData(11, #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_UVCoordinate, ?M11, 8)
SetMeshData(11, #PB_Mesh_Face, ?PlanFaces2, 8)

CreateTexture(1,64,64)
StartDrawing(TextureOutput(1))
  Box(0,0,64,64,#Blue)
  Box(1,1,62,62,#Yellow)
StopDrawing()

CreateMaterial(1, TextureID(1))
Restore Level
For z=1 To 8
  For x=1 To 7
    Read Title
    If title
      Entity=CreateEntity (#PB_Any, MeshID(Title), MaterialID(1))
      ScaleEntity(entity, 64, 64, 64)
      EntityLocate(entity,x*64,0,z*64)
    EndIf
  Next x
Next z     

CreateCamera(0, 0, 0, 100, 100)
CameraLocate(0,0,150,100)
CameraLookAt(0,EntityX(entity),EntityY(entity),EntityZ(entity))
 
Repeat
 
  ClearScreen(0)
       
  If ExamineKeyboard()
   
    If KeyboardPushed(#PB_Key_Left)
      KeyX = -#CameraSpeed
    ElseIf KeyboardPushed(#PB_Key_Right)
      KeyX = #CameraSpeed
    Else
      KeyX = 0
    EndIf
             
    If KeyboardPushed(#PB_Key_Up)
      KeyY = -#CameraSpeed
    ElseIf KeyboardPushed(#PB_Key_Down)
      KeyY = #CameraSpeed
    Else
      KeyY = 0
    EndIf


  EndIf
 
  If ExamineMouse()
    MouseX = -(MouseDeltaX()/10)*#CameraSpeed/2
    MouseY = -(MouseDeltaY()/10)*#CameraSpeed/2
  EndIf
       
  RotateCamera(0, MouseX, MouseY, RollZ)
  MoveCamera  (0, KeyX, 0, KeyY)
 
  RenderWorld()
  FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape) Or Quit = 1

End

DataSection

  M1:
    Data.f  0.5, 0, 0.5 : Data.f 1, 1, 1 : Data.f 0, 1 ; Vertex 0
    Data.f  0.5, 1, 0.5 : Data.f 1, 1, 1 : Data.f 1, 1 ; Vertex 1
    Data.f  1.0, 1, 0.5 : Data.f 1, 1, 1 : Data.f 1, 0 ; Vertex 2
    Data.f  1.0, 0, 0.5 : Data.f 1, 1, 1 : Data.f 0, 0 ; Vertex 3
   
    Data.f  0.5, 0, 1.0 : Data.f 1, 1, 1 : Data.f 0, 1 ; Vertex 0
    Data.f  0.5, 1, 1.0 : Data.f 1, 1, 1 : Data.f 1, 1 ; Vertex 1
    Data.f  0.5, 1, 0.5 : Data.f 1, 1, 1 : Data.f 1, 0 ; Vertex 2
    Data.f  0.5, 0, 0.5 : Data.f 1, 1, 1 : Data.f 0, 0 ; Vertex 3
  M2:
    Data.f  0.0, 0, 0.5 : Data.f 1, 1, 1 : Data.f 0, 1 ; Vertex 0
    Data.f  0.0, 1, 0.5 : Data.f 1, 1, 1 : Data.f 1, 1 ; Vertex 1
    Data.f  1.0, 1, 0.5 : Data.f 1, 1, 1 : Data.f 1, 0 ; Vertex 2
    Data.f  1.0, 0, 0.5 : Data.f 1, 1, 1 : Data.f 0, 0 ; Vertex 3
  M3:
    Data.f  0.0, 0, 0.5 : Data.f 1, 1, 1 : Data.f 0, 1 ; Vertex 0
    Data.f  0.0, 1, 0.5 : Data.f 1, 1, 1 : Data.f 1, 1 ; Vertex 1
    Data.f  1.0, 1, 0.5 : Data.f 1, 1, 1 : Data.f 1, 0 ; Vertex 2
    Data.f  1.0, 0, 0.5 : Data.f 1, 1, 1 : Data.f 0, 0 ; Vertex 3
   
    Data.f  0.5, 0, 1.0 : Data.f 1, 1, 1 : Data.f 0, 1 ; Vertex 0
    Data.f  0.5, 1, 1.0 : Data.f 1, 1, 1 : Data.f 1, 1 ; Vertex 1
    Data.f  0.5, 1, 0.5 : Data.f 1, 1, 1 : Data.f 1, 0 ; Vertex 2
    Data.f  0.5, 0, 0.5 : Data.f 1, 1, 1 : Data.f 0, 0 ; Vertex 3   
  M4:
    Data.f  0.0, 0, 0.5 : Data.f 1, 1, 1 : Data.f 0, 1 ; Vertex 0
    Data.f  0.0, 1, 0.5 : Data.f 1, 1, 1 : Data.f 1, 1 ; Vertex 1
    Data.f  0.5, 1, 0.5 : Data.f 1, 1, 1 : Data.f 1, 0 ; Vertex 2
    Data.f  0.5, 0, 0.5 : Data.f 1, 1, 1 : Data.f 0, 0 ; Vertex 3
   
    Data.f  0.5, 0, 1.0 : Data.f 1, 1, 1 : Data.f 0, 1 ; Vertex 0
    Data.f  0.5, 1, 1.0 : Data.f 1, 1, 1 : Data.f 1, 1 ; Vertex 1
    Data.f  0.5, 1, 0.5 : Data.f 1, 1, 1 : Data.f 1, 0 ; Vertex 2
    Data.f  0.5, 0, 0.5 : Data.f 1, 1, 1 : Data.f 0, 0 ; Vertex 3
  M5:
    Data.f  0.5, 0, 1.0 : Data.f 1, 1, 1 : Data.f 0, 1 ; Vertex 0
    Data.f  0.5, 1, 1.0 : Data.f 1, 1, 1 : Data.f 1, 1 ; Vertex 1
    Data.f  0.5, 1, 0.0 : Data.f 1, 1, 1 : Data.f 1, 0 ; Vertex 2
    Data.f  0.5, 0, 0.0 : Data.f 1, 1, 1 : Data.f 0, 0 ; Vertex 3
  M6:
    Data.f  0.0, 0, 0.5 : Data.f 1, 1, 1 : Data.f 0, 1 ; Vertex 0
    Data.f  0.0, 1, 0.5 : Data.f 1, 1, 1 : Data.f 1, 1 ; Vertex 1
    Data.f  0.5, 1, 0.5 : Data.f 1, 1, 1 : Data.f 1, 0 ; Vertex 2
    Data.f  0.5, 0, 0.5 : Data.f 1, 1, 1 : Data.f 0, 0 ; Vertex 3
   
    Data.f  0.5, 0, 1.0 : Data.f 1, 1, 1 : Data.f 0, 1 ; Vertex 0
    Data.f  0.5, 1, 1.0 : Data.f 1, 1, 1 : Data.f 1, 1 ; Vertex 1
    Data.f  0.5, 1, 0.0 : Data.f 1, 1, 1 : Data.f 1, 0 ; Vertex 2
    Data.f  0.5, 0, 0.0 : Data.f 1, 1, 1 : Data.f 0, 0 ; Vertex 3
  M7:
    Data.f  0.0, 0, 0.5 : Data.f 1, 1, 1 : Data.f 0, 1 ; Vertex 0
    Data.f  0.0, 1, 0.5 : Data.f 1, 1, 1 : Data.f 1, 1 ; Vertex 1
    Data.f  0.5, 1, 0.5 : Data.f 1, 1, 1 : Data.f 1, 0 ; Vertex 2
    Data.f  0.5, 0, 0.5 : Data.f 1, 1, 1 : Data.f 0, 0 ; Vertex 3
   
    Data.f  0.5, 0, 0.5 : Data.f 1, 1, 1 : Data.f 0, 1 ; Vertex 0
    Data.f  0.5, 1, 0.5 : Data.f 1, 1, 1 : Data.f 1, 1 ; Vertex 1
    Data.f  0.5, 1, 0.0 : Data.f 1, 1, 1 : Data.f 1, 0 ; Vertex 2
    Data.f  0.5, 0, 0.0 : Data.f 1, 1, 1 : Data.f 0, 0 ; Vertex 3     
  M8:
    Data.f  0.0, 0, 0.5 : Data.f 1, 1, 1 : Data.f 0, 1 ; Vertex 0
    Data.f  0.0, 1, 0.5 : Data.f 1, 1, 1 : Data.f 1, 1 ; Vertex 1
    Data.f  1.0, 1, 0.5 : Data.f 1, 1, 1 : Data.f 1, 0 ; Vertex 2
    Data.f  1.0, 0, 0.5 : Data.f 1, 1, 1 : Data.f 0, 0 ; Vertex 3
   
    Data.f  0.5, 0, 0.5 : Data.f 1, 1, 1 : Data.f 0, 1 ; Vertex 0
    Data.f  0.5, 1, 0.5 : Data.f 1, 1, 1 : Data.f 1, 1 ; Vertex 1
    Data.f  0.5, 1, 0.0 : Data.f 1, 1, 1 : Data.f 1, 0 ; Vertex 2
    Data.f  0.5, 0, 0.0 : Data.f 1, 1, 1 : Data.f 0, 0 ; Vertex 3
  M9:
    Data.f  0.5, 0, 0.5 : Data.f 1, 1, 1 : Data.f 0, 1 ; Vertex 0
    Data.f  0.5, 1, 0.5 : Data.f 1, 1, 1 : Data.f 1, 1 ; Vertex 1
    Data.f  1.0, 1, 0.5 : Data.f 1, 1, 1 : Data.f 1, 0 ; Vertex 2
    Data.f  1.0, 0, 0.5 : Data.f 1, 1, 1 : Data.f 0, 0 ; Vertex 3
   
    Data.f  0.5, 0, 0.5 : Data.f 1, 1, 1 : Data.f 0, 1 ; Vertex 0
    Data.f  0.5, 1, 0.5 : Data.f 1, 1, 1 : Data.f 1, 1 ; Vertex 1
    Data.f  0.5, 1, 0.0 : Data.f 1, 1, 1 : Data.f 1, 0 ; Vertex 2
    Data.f  0.5, 0, 0.0 : Data.f 1, 1, 1 : Data.f 0, 0 ; Vertex 3   
  M10:
    Data.f  0.5, 0, 0.5 : Data.f 1, 1, 1 : Data.f 0, 1 ; Vertex 0
    Data.f  0.5, 1, 0.5 : Data.f 1, 1, 1 : Data.f 1, 1 ; Vertex 1
    Data.f  1.0, 1, 0.5 : Data.f 1, 1, 1 : Data.f 1, 0 ; Vertex 2
    Data.f  1.0, 0, 0.5 : Data.f 1, 1, 1 : Data.f 0, 0 ; Vertex 3
   
    Data.f  0.5, 0, 1.0 : Data.f 1, 1, 1 : Data.f 0, 1 ; Vertex 0
    Data.f  0.5, 1, 1.0 : Data.f 1, 1, 1 : Data.f 1, 1 ; Vertex 1
    Data.f  0.5, 1, 0.0 : Data.f 1, 1, 1 : Data.f 1, 0 ; Vertex 2
    Data.f  0.5, 0, 0.0 : Data.f 1, 1, 1 : Data.f 0, 0 ; Vertex 3   
  M11:
    Data.f  0.0, 0, 0.5 : Data.f 1, 1, 1 : Data.f 0, 1 ; Vertex 0
    Data.f  0.0, 1, 0.5 : Data.f 1, 1, 1 : Data.f 1, 1 ; Vertex 1
    Data.f  1.0, 1, 0.5 : Data.f 1, 1, 1 : Data.f 1, 0 ; Vertex 2
    Data.f  1.0, 0, 0.5 : Data.f 1, 1, 1 : Data.f 0, 0 ; Vertex 3
   
    Data.f  0.5, 0, 1.0 : Data.f 1, 1, 1 : Data.f 0, 1 ; Vertex 0
    Data.f  0.5, 1, 1.0 : Data.f 1, 1, 1 : Data.f 1, 1 ; Vertex 1
    Data.f  0.5, 1, 0.0 : Data.f 1, 1, 1 : Data.f 1, 0 ; Vertex 2
    Data.f  0.5, 0, 0.0 : Data.f 1, 1, 1 : Data.f 0, 0 ; Vertex 3

  PlanFaces:
    Data.w 2, 1, 0 ; bottom face (clockwise as it's reversed...)
    Data.w 0, 3, 2
    Data.w 0, 1, 2
    Data.w 2, 3, 0     
  PlanFaces2:
    Data.w 2, 1, 0 ; bottom face (clockwise as it's reversed...)
    Data.w 0, 3, 2
    Data.w 0, 1, 2
    Data.w 2, 3, 0         
    Data.w 6, 5, 4 ; bottom face (clockwise as it's reversed...)
    Data.w 4, 7, 6
    Data.w 4, 5, 6
    Data.w 6, 7, 4 
  Level:

  Data.l  1, 2, 2, 3, 2, 2, 4
  Data.l  5, 0, 0, 5, 0, 0, 5
  Data.l  5, 0, 1, 0, 4, 0, 5
  Data.l  5, 0, 5, 5, 5, 0, 5
  Data.l 10, 4, 9,11, 7, 3, 6
  Data.l  5, 0, 0, 5, 0, 6, 5
  Data.l  5, 5, 0, 5, 0, 0, 5
  Data.l  9, 8, 2, 8, 2, 8, 7
   
EndDataSection

Publié : lun. 30/juin/2008 10:36
par Frenchy Pilou
Il n'y a aucune comparaison possible avec un logiciel "dédié" architecture et ce que l'on pourra créé seul avec PB en partant de rien aujourd'hui.

PB pourra très bien faire un produit semblable à Sketchup, le seul problème c'est qu'il y a déjà 10 ans de développement derrière :roll:

En plus du point de vue de l'ergonomie il est exceptionnel de facilité!

Le genre de truc que l'on peut faire après 3 jours de manipulation assidues
sans rien y connaître :)
Modèle by Michelle KAufmann

Et même le charger directement ainsi que des millions d'autres gratoches ici


Image

Publié : lun. 30/juin/2008 13:23
par Stefou
Merci, je vais essayé de comprendre cela.
Cela pourrait être une bonne base a mon besoin.