Page 1 sur 2

Moteur 3D

Publié : dim. 19/nov./2023 0:45
par SPH
Salut,

J'ai quelques interrogations sur une routine 3D que je voudrais coder. Je voudrais complètement refaire un moteur 3D. Et je m'interroge sur les triangles composants un objet 3D.
Est ce que c'est l'ordre des coordonnées des triangles qui importe ou bien autre chose ?

Regardez :

a___b_______d

c_______e________f

================
le triangle ABC est a gauche et il y a un triangle DEF a droite. Mais il existe aussi le triangle BCE. Par contre, le triangle ACD (par exemple) n'existe pas.

Bref, comment dire a l'ordi de faire les bons tris ?


Merci :P

Re: Moteur 3D

Publié : dim. 19/nov./2023 12:12
par Guillot
"refaire un moteur 3D"
je crois que t'es un peu ambitieux là !
l'ordre est important, il définit le coté de la face
dans le sens horaire: la face est visible (de face...)
(note : tu peux changer ça en modifiant le culling mode)

moi je te conseillerai de te faire la main avec la 3d PB
(concernant la création des mmesh, y'a pas trop à redire...)

Re: Moteur 3D

Publié : dim. 19/nov./2023 14:15
par SPH
Refaire un moteur : j'entend par là faire un moteur basic pour moi :idea:

Re: Moteur 3D

Publié : lun. 20/nov./2023 16:39
par threedslider
Sur OpenGL ou Orgre ?

Re: Moteur 3D

Publié : lun. 20/nov./2023 17:43
par SPH
Je veux faire un moteur très basique en openGL car les polygones sont très rapides. :idea:

Rien a voir avec Ogre. Je ne veux pas l'approcher; même à 1% :wink:

Re: Moteur 3D

Publié : lun. 20/nov./2023 20:20
par threedslider
Ah ok :)

Sinon tu vas faire une lib pour moteur 3D basé sur OpenGL ?

Re: Moteur 3D

Publié : lun. 20/nov./2023 22:01
par SPH
threedslider a écrit : lun. 20/nov./2023 20:20 Ah ok :)

Sinon tu vas faire une lib pour moteur 3D basé sur OpenGL ?
Je pense à une procédure contenant le moteur (je le rappelle : simple et donc léger) :P

Re: Moteur 3D

Publié : lun. 20/nov./2023 22:41
par SPH
D'ailleurs, je lance un appel : qui saurait s'il existe un moteur 3D (OpenGL ou pas) basique en PB ?

MeRcI :arrow: :idea:



===
PS : ultra basique : juste un triangle pouvant tourner sur les 3 axes et idem pour la camera. Pas d'ombres, de textures, etc... SIMPLE

Re: Moteur 3D

Publié : mar. 21/nov./2023 1:51
par falsam
Avec PureBasic et Ogre3D

Code : Tout sélectionner

EnableExplicit

Enumeration
  #texture
EndEnumeration

Declare DrawTriangle()

InitEngine3D(#PB_Engine3D_DebugLog)
InitSprite()
InitKeyboard()
InitMouse()

OpenWindow(0, 0, 0, 800, 600,"Rotation xyz d'un trinagle",#PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(0), 0, 0, 800, 600,1,0,0,#PB_Screen_WaitSynchronization)

Add3DArchive(#PB_Compiler_Home + "examples/3d/Data/Textures", #PB_3DArchive_FileSystem)

KeyboardMode(#PB_Keyboard_AllowSystemKeys)

CreateMaterial(#texture, LoadTexture(#texture, "White.jpg"))
MaterialCullingMode(#texture, #PB_Material_NoCulling)

CreateLight(0,RGB(245,245,205),6,13,0)

CreateCamera(0, 0, 0, 100, 100)
MoveCamera(0, 0, 0, 10, #PB_Absolute)
CameraLookAt(0, 0, 0, 0)
CameraBackColor(0, RGB(0, 200, 200))

DrawTriangle()

Repeat
  WindowEvent()  
  ExamineKeyboard()
  RotateEntity(0, 0.5, 0.5, 0.5, #PB_Relative)
  RenderWorld() 
  FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape) Or WindowEvent() = #PB_Event_CloseWindow


Procedure DrawTriangle()
  ; Création d'un mesh representant le triangle
  CreateMesh(0, #PB_Mesh_TriangleList, #PB_Mesh_Dynamic)
  
  ; Vecteur 0 - Sommet
  MeshVertexPosition(0, 1, 0)
  MeshVertexNormal(0, 1, 0) 
  MeshVertexTextureCoordinate(0, 0)
  
  ; Vecteur 1 - Coin droit
  MeshVertexPosition(1, -1, 0)
  MeshVertexNormal(0, 1, 0)
  MeshVertexTextureCoordinate(1, 0)
  
  ; Vecteur 2 - Coin gauche
  MeshVertexPosition(-1, -1, 0)
  MeshVertexNormal(0, 1 ,0) 
  MeshVertexTextureCoordinate(1, 1)
  
  ; Création de la face du triangle 
  MeshFace(0, 1, 2)
  
  ; Le mesh est terminée
  FinishMesh(#True)
  
  ; Creation de l'entité 
  CreateEntity(0, MeshID(0), MaterialID(#texture))
  ScaleEntity(0, 2, 2, 2)
EndProcedure

Re: Moteur 3D

Publié : mar. 21/nov./2023 7:29
par SPH
Merci falsam. :P

Mais moi, je parle d'une routine 3D entièrement indépendante d'Ogre. :wink:
Bref : coder les bons sinus et cosinus moi même...

PS : je garde ta routine sous le coude et je vais réfléchir :idea:

Re: Moteur 3D

Publié : mar. 21/nov./2023 8:01
par threedslider
Sinon ya sa :

Code : Tout sélectionner


InitEngine3D()
InitKeyboard()


OpenWindow(0, 0, 0, 800, 600, "OpenGL : Triangle for test", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(0), 0, 0, 800, 600)


glMatrixMode_(#GL_PROJECTION)
glLoadIdentity_() 
gluPerspective_(45.0, 800/600, 1.0, 60.0)
glMatrixMode_(#GL_MODELVIEW)
glTranslatef_(-1/4, 0, -4)
glShadeModel_(#GL_SMOOTH)
glEnable_(#GL_LIGHT0)
glEnable_(#GL_LIGHTING)
glEnable_(#GL_COLOR_MATERIAL)
glEnable_(#GL_DEPTH_TEST)
;glEnable_(#GL_CULL_FACE)   
glViewport_(0, 0, 800, 600)


Repeat
glClearColor_(0.7, 0.7, 0.7, 0) ; background color
  glClear_(#GL_COLOR_BUFFER_BIT | #GL_DEPTH_BUFFER_BIT)
  Repeat
    event = WindowEvent()
    Select Event
      Case #PB_Event_CloseWindow
        quit = 1
     EndSelect
   Until event = 0
   
  
   
   glBegin_(#GL_TRIANGLES)
    glColor3f_(0.3, 0.3, 1.0)
    glNormal3f_( 0.0, 0.0, 1.0)
    glVertex3f_( 0.5, 0.5, 0.5) 
    glVertex3f_(-0.5, 0.5, 0.5)
    glVertex3f_(-0.5,-0.5, 0.5) 
    glEnd_();
		
	glTranslatef_(1/4,1/4,0)
	glRotatef_(1.0, 0.5, 1.0, 0.2)
	glTranslatef_(-1/4,-1/4,0)
	
 
 FlipBuffers()
 
 ExamineKeyboard()
 
Until KeyboardPushed(#PB_Key_Escape) Or quit = 1


Re: Moteur 3D

Publié : mar. 21/nov./2023 8:15
par SPH
Hooo 8O
Excellent ça. J'aime et je garde !!! :idea:

Re: Moteur 3D

Publié : mar. 21/nov./2023 8:24
par threedslider
Cool j'ai hâte de voir tes création basé sur OpenGL :mrgreen:

Sinon tu peux supprimer le InitEngine3D() ^^

Voilà

Happy coding !

Re: Moteur 3D

Publié : mar. 21/nov./2023 8:52
par SPH
Actuellement, je suis sur la création d'un moteur de polygones OpenGL pour faire des anims comme le jeu ANOTHER WORLD.

Pour rappel :
viewtopic.php?t=18225&hilit=polygons+editor

Mais je l'ai amélioré et je dois coder la rotation sur l'axe de la vision.

Re: Moteur 3D

Publié : mar. 21/nov./2023 9:44
par threedslider
Trop cool sa !

Tu vas t'inspirer un jeu de plateforme avec tes polygones ? 8O

En plus de Polygons Editor ? Va y avoir du boulot sur ça ^^

Bonne chance à toi !