Apprendre les routines 3D
Apprendre les routines 3D
Salut,
Est ce qu'une ame charitable pourrais poster les 9 formules necessaires pour faire de la 3D (je ne parle pas d'ogre)
Est ce qu'une ame charitable pourrais poster les 9 formules necessaires pour faire de la 3D (je ne parle pas d'ogre)
http://HexaScrabble.com/
!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.00 - 64 bits
!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.00 - 64 bits
- falsam
- Messages : 7244
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Apprendre les routines 3D
Strange cette question. Il y a t'il vraiment que 9 formules nécessaires pour faire de la 3D ? je suis trop noob en la matière pour répondre à cette question.
Toutefois j'ai un lien dans mes favoris qui pourra peut être répondre à ta question : On y parle de accélération, vélocité, énergie, gravité, distance entre deux points dans l'espace, d'interaction entre force, friction et déplacement, et plein d'autres chose.
C'est en anglais et les formules sont codées en ..... Pure Basic. YeahHHHHhhhhh.
Pure Basic Game Math Guide
Toutefois j'ai un lien dans mes favoris qui pourra peut être répondre à ta question : On y parle de accélération, vélocité, énergie, gravité, distance entre deux points dans l'espace, d'interaction entre force, friction et déplacement, et plein d'autres chose.
C'est en anglais et les formules sont codées en ..... Pure Basic. YeahHHHHhhhhh.
Pure Basic Game Math Guide
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: Apprendre les routines 3D
Je tiens ca d'un bon codeur : dans le temps, il y avait 12 formules math pour faire de la 3D. Puis, on a reussi a tirer seulement 9 formules. Mais depuis quelques annees, il y a une nouvelle facon de faire de la 3D.
Comme la 3D sous ogre m'effraye, je veux coder de la 3D depuis pb...
Comme la 3D sous ogre m'effraye, je veux coder de la 3D depuis pb...
http://HexaScrabble.com/
!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.00 - 64 bits
!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.00 - 64 bits
Re: Apprendre les routines 3D
Tu confonds 3D et rotation dans l'espace.
Je t'explique rapidement : à l'époque où on codait absolument tout, le déplacement d'un point dans l'espace, qui comprend translation, rotation, échelle, devait être très optimisé. La rotation est particulièrement coûteuse en calculs, elle demande normalement 12 multiplications, et la multiplication est l'une des opérations les plus lentes d'un microprocesseur. Une version optimisée permettait de faire une rotation avec seulement 9 multiplications, d'où un gain évident. Mais la rotation n'est pas tout !
Je t'explique rapidement : à l'époque où on codait absolument tout, le déplacement d'un point dans l'espace, qui comprend translation, rotation, échelle, devait être très optimisé. La rotation est particulièrement coûteuse en calculs, elle demande normalement 12 multiplications, et la multiplication est l'une des opérations les plus lentes d'un microprocesseur. Une version optimisée permettait de faire une rotation avec seulement 9 multiplications, d'où un gain évident. Mais la rotation n'est pas tout !
Re: Apprendre les routines 3D
Aurais tu une routine PB qui affiche un simple triangle qui tourne dans l'espace ?
http://HexaScrabble.com/
!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.00 - 64 bits
!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.00 - 64 bits
- falsam
- Messages : 7244
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Apprendre les routines 3D
SPH tu es dingue
Un code qui permet de dessiner un triangle en rotation en OpenGl (Necessite Pure Basic 5.30 Beta)
Un code qui permet de dessiner un triangle en rotation en OpenGl (Necessite Pure Basic 5.30 Beta)
Code : Tout sélectionner
Enumeration
#MainForm
#OpenGL
#Timer
EndEnumeration
;-Dessin OpenGL
Procedure Draw()
SetGadgetAttribute(#OpenGL, #PB_OpenGL_SetContext, #True)
glClear_ (#GL_COLOR_BUFFER_BIT | #GL_DEPTH_BUFFER_BIT)
glBegin_(#GL_TRIANGLES);
glVertex2i_(0, 0) ;1er sommet
glVertex2i_(1, 0) ;2eme sommet
glVertex2i_(0, 1) ;3eme sommet
glEnd_()
glRotatef_(0.09,0.0,0.0,0.09)
glFlush_() ;s'assure que toutes les commandes OpenGL ont été exécutées
SetGadgetAttribute(#OpenGL, #PB_OpenGL_FlipBuffers, #True)
EndProcedure
;-Redimentionne le contexte OpenGlGadget
Procedure ReSize()
ResizeGadget(#OpenGL, #PB_Ignore, #PB_Ignore, WindowWidth(#MainForm) - 20, WindowHeight(#MainForm)-20)
Draw()
EndProcedure
;-Start
OpenWindow(#MainForm, 0, 0, 800, 600, "OpenGL Gadget exemple", #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_ScreenCentered)
OpenGLGadget(#OpenGL, 10, 10, 780, 580)
AddWindowTimer(#MainForm, #Timer, 16)
BindEvent(#PB_Event_SizeWindow, @ReSize())
BindEvent(#PB_Event_Timer, @Draw())
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
Dernière modification par falsam le mar. 01/juil./2014 11:09, modifié 1 fois.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: Apprendre les routines 3D
Grand merci. Je vais etudier ca de tres pret
http://HexaScrabble.com/
!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.00 - 64 bits
!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.00 - 64 bits
Re: Apprendre les routines 3D
pour repondre tres précisement a ta question
Code : Tout sélectionner
;codé par Dobro
; Purebasic 4.51
#dobro =1
#Police =1
#Sprite =1
;
Declare triangle(taille,posx,posy,angle_triangle,angle_ouverture,couleur)
; ***********************************
Resultat = InitSprite ()
FontID = LoadFont ( #Police , "arial" , 18, #PB_Font_Bold )
Global EcranX = GetSystemMetrics_ ( #SM_CXSCREEN ): ;=largeur de l'ecran
Global EcranY = GetSystemMetrics_ ( #SM_CYSCREEN ): ;=hauteur de l'ecran
WindowID = OpenWindow (1, 0, 0, EcranX, EcranY, "hello" ,#PB_Window_SystemMenu|#PB_Window_BorderLess |#PB_Window_ScreenCentered )
WindowID = WindowID (1)
Result = OpenWindowedScreen ( WindowID ,0,0, EcranX, EcranY, 1, 0,0)
Resultat = InitKeyboard ()
largeur=100
Resultat = InitMouse ()
;;CreateSprite ( #Sprite , EcranX,EcranY) ; cree un sprite
Repeat
ExamineKeyboard ()
xa=EcranX/2:ya=EcranY/2 ; xa et ya = centre de l'ecran
; procedure de creation d'un triangle !!
;triangle(taille,posx,posy,angle_triangle,angle_ouverture,couleur)
;taille= taille du triangle
; posx et posy = position du triangle dans l'ecran
; angle_triangle= orientation du triangle en degres
; angle_ouverture = angle du sommet du triangle en degre
; couleur =couleur du contour du triangle
triangle(250,xa,ya,i,60, RGB (255,0,255)) ; appel la procedure
i=i+1
if i>359
i=0
Endif
;;;; DisplaySprite ( #Sprite , 0, 0)
event= WindowEvent ()
FlipBuffers (): ; affiche l'ecran
ClearScreen (RGB(0, 0, 0)) : ;efface l'ecran
If KeyboardPushed ( #PB_Key_Escape ) ; press Esc to quit
End
EndIf
Until event= #PB_Event_CloseWindow
Procedure triangle(taille,posx,posy,angle_triangle,angle_ouverture,couleur)
; *********************************
StartDrawing ( ScreenOutput ( ))
DrawText (1,1, Str (angle_triangle))
xf=taille* Cos (angle_triangle*2* #PI /360)+posx
yf=taille* Sin (angle_triangle*2* #PI /360)+posy
LineXY (posx, posy, xf, yf ,couleur)
angle_ouverture=angle_triangle+ angle_ouverture
; ************ 2mem ligne ****************
xf2=taille* Cos (angle_ouverture*2* #PI /360)+posx
yf2=taille* Sin (angle_ouverture*2* #PI /360)+posy
LineXY (posx, posy, xf2, yf2 ,couleur )
; ************ 3mem ligne ****************
LineXY (xf, yf, xf2, yf2 ,couleur)
StopDrawing ()
EndProcedure
; Epb
- falsam
- Messages : 7244
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Apprendre les routines 3D
J'ai modifié le premier code en ajoutant la rotation du triangle.
PS : Ogre3D c'est bien ..... et même pas peur
PS : Ogre3D c'est bien ..... et même pas peur
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: Apprendre les routines 3D
autre code interressant
Code : Tout sélectionner
;*****************************************************************************
;*
;* Name : 3DCube
;* Author : Petr Vavrin (peterb)
;* Date : 12.06.09
;* Notes :
;*
;*****************************************************************************
InitSprite():o=400:OpenWindow(0,0,0,o,o,"3D cube",$C80001):Dim p(o):Dim a.f(o)
Dim l(o)
OpenWindowedScreen(WindowID(0),0,0,o,o,1,0,0)
Restore t
For c=0 To 5
Read.b d
Read.w e
For m=0 To 3
i=c*4+m
p(i)=(d>>(m*2)&3-1.5)*5
l(i)=e>>(m*4)&15
Next
Next
DataSection
t:
Data.l $0c3221ff,$65f31443,$5887cf76,$30625100,$8473
EndDataSection
While WindowEvent()<>16
ClearScreen(0)
sc=ScreenOutput()
s+255
StartDrawing(sc)
v.f+0.05
w.f+0.01
For c=0 To 7
m=c*3
x=p(m)
y=p(m+1)
z=p(m+2)
g.f=Sin(v)*y+Cos(v)*z
f.f=o/(40-(Cos(w)*g-Sin(w)*x))
a(m)=(Cos(w)*x+Sin(w)*g)
a(m)*f+o/2
a(m+1)=(Cos(v)*y-Sin(v)*z)*f+o/2
Next
For c=0 To 11
m=c*2
i=l(m)*3-3
j=l(m+1)*3-3
For k=1 To 3
LineXY(a(i)+k,a(i+1),a(j)+k,a(j+1),s-k)
Next
Next
DrawText(9,9,"Enjoy this 3DCube",s,0):
StopDrawing():
FlipBuffers():
Delay(15):
Wend
;
; Epb
Re: Apprendre les routines 3D
Grand merci. La dedans, il y a exactement ce que je cherchais... (diggestion)
http://HexaScrabble.com/
!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.00 - 64 bits
!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.00 - 64 bits
Re: Apprendre les routines 3D
En quoi utiliser les sin() et cos() à la pelle pour faire tourner un malheureux cube est-elle plus simple que l'utilisation des commandes d'OGRE ?
- falsam
- Messages : 7244
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Apprendre les routines 3D
+1Fred a écrit :En quoi utiliser les sin() et cos() à la pelle pour faire tourner un malheureux cube est-elle plus simple que l'utilisation des commandes d'OGRE ?
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: Apprendre les routines 3D
Je n'y arrive pas avec ogre. Faut dire, je ne m'y suis pas mis a fond...
Peut on egalement afficher un simple triangle en 3D dans ogre ? (je veux faire des effets de cubes transparent qui morphent en autres objets)
Peut on egalement afficher un simple triangle en 3D dans ogre ? (je veux faire des effets de cubes transparent qui morphent en autres objets)
Dernière modification par SPH le mar. 01/juil./2014 11:51, modifié 1 fois.
http://HexaScrabble.com/
!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.00 - 64 bits
!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.00 - 64 bits
Re: Apprendre les routines 3D
Non, on peut faire des trucs comme ça, mais afficher un simple triangle avec Ogre c'est pas possibleSPH a écrit :Peut on egalement afficher un simple triangle en 3D dans ogre ?
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.
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.