Moteur 3D

Sujets variés concernant le développement en PureBasic
Avatar de l’utilisateur
SPH
Messages : 4946
Inscription : mer. 09/nov./2005 9:53

Moteur 3D

Message 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

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
Guillot
Messages : 672
Inscription : jeu. 25/juin/2015 16:18

Re: Moteur 3D

Message 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...)
Avatar de l’utilisateur
SPH
Messages : 4946
Inscription : mer. 09/nov./2005 9:53

Re: Moteur 3D

Message par SPH »

Refaire un moteur : j'entend par là faire un moteur basic pour moi :idea:

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
threedslider
Messages : 455
Inscription : dim. 01/juil./2018 22:38

Re: Moteur 3D

Message par threedslider »

Sur OpenGL ou Orgre ?
Avatar de l’utilisateur
SPH
Messages : 4946
Inscription : mer. 09/nov./2005 9:53

Re: Moteur 3D

Message 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:

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
threedslider
Messages : 455
Inscription : dim. 01/juil./2018 22:38

Re: Moteur 3D

Message par threedslider »

Ah ok :)

Sinon tu vas faire une lib pour moteur 3D basé sur OpenGL ?
Avatar de l’utilisateur
SPH
Messages : 4946
Inscription : mer. 09/nov./2005 9:53

Re: Moteur 3D

Message 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

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
SPH
Messages : 4946
Inscription : mer. 09/nov./2005 9:53

Re: Moteur 3D

Message 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

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Moteur 3D

Message 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
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
SPH
Messages : 4946
Inscription : mer. 09/nov./2005 9:53

Re: Moteur 3D

Message 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:

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
threedslider
Messages : 455
Inscription : dim. 01/juil./2018 22:38

Re: Moteur 3D

Message 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

Avatar de l’utilisateur
SPH
Messages : 4946
Inscription : mer. 09/nov./2005 9:53

Re: Moteur 3D

Message par SPH »

Hooo 8O
Excellent ça. J'aime et je garde !!! :idea:
Dernière modification par SPH le mar. 21/nov./2023 8:48, modifié 1 fois.

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
threedslider
Messages : 455
Inscription : dim. 01/juil./2018 22:38

Re: Moteur 3D

Message 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 !
Avatar de l’utilisateur
SPH
Messages : 4946
Inscription : mer. 09/nov./2005 9:53

Re: Moteur 3D

Message 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.

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
threedslider
Messages : 455
Inscription : dim. 01/juil./2018 22:38

Re: Moteur 3D

Message 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 !
Répondre