@+
Cube3D
Pour le clipSprite3d il y a aussi un excellent code de S.M.
http://purebasic.hmt-forum.com/viewtopic.php?t=4265
Et c'est vrai que ça en ouvre des perspectives
http://purebasic.hmt-forum.com/viewtopic.php?t=4265
Et c'est vrai que ça en ouvre des perspectives
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.
J'ai pondu exactement le même code que lui XDcomtois a écrit :Pour le clipSprite3d il y a aussi un excellent code de S.M.
http://purebasic.hmt-forum.com/viewtopic.php?t=4265
Et c'est vrai que ça en ouvre des perspectives
Des fois j'devrais pas me lever le matin
au moins j'aurais le mérite d'avoir comme lui palié le manque et d'avoir trouvé la solution tout seul ^^ (en même temps c'était simple <_<)
Dri
Je me suis enfin mis au Pure Basic ( il en a fallu du temps ), et j'ai commencé a coté le tout debut d'un moteur 3D, c'est a dire , l'affichage d'un cube, sans gestion des " objets " etc ... J'étais finalement rendu assez loin en DB , mais je me suis retrouvé bloqué a cause des lenteurs de ce dernier [ affichage cube utilisant comme arrete des droites calcules a l'aide de l'algo de Bresenham ~ 40 fps, ce qui est peu ! ]
J'ai mis un certains temps a m'apercevoir que Pure utilisait les radians
Mais finalement, ça ne complique pas trop les choses, mis a part l'utilisation de chiffre avec de nombreuses decimales ( Pi, 2Pi etc ... )
Bref ! Voici ce que j'ai commencé a faire

J'ai mis un certains temps a m'apercevoir que Pure utilisait les radians
Mais finalement, ça ne complique pas trop les choses, mis a part l'utilisation de chiffre avec de nombreuses decimales ( Pi, 2Pi etc ... )
Bref ! Voici ce que j'ai commencé a faire
Code : Tout sélectionner
; Trium Engine
; initialisation materiel
If InitSprite() And InitKeyboard() : Else : End : EndIf
If OpenScreen(800,600,16,"Trium ") = 0
End
EndIf
SetFrameRate(0)
; creations tableaux / variables
Structure Vertex
x1.f
y1.f
z1.f
x2.w
y2.w
EndStructure
Dim Vertice.Vertex(100)
; structure du cube
Vertice(0)\x1 = -100 : Vertice(0)\y1 = -100 : Vertice(0)\z1 = -100
Vertice(1)\x1 = 100 : Vertice(1)\y1 = -100 : Vertice(1)\z1 = -100
Vertice(2)\x1 = 100 : Vertice(2)\y1 = 100 : Vertice(2)\z1 = -100
Vertice(3)\x1 = -100 : Vertice(3)\y1 = 100 : Vertice(3)\z1 = -100
Vertice(4)\x1 = -100 : Vertice(4)\y1 = -100 : Vertice(4)\z1 = 100
Vertice(5)\x1 = 100 : Vertice(5)\y1 = -100 : Vertice(5)\z1 = 100
Vertice(6)\x1 = 100 : Vertice(6)\y1 = 100 : Vertice(6)\z1 = 100
Vertice(7)\x1 = -100 : Vertice(7)\y1 = 100 : Vertice(7)\z1 = 100
Declare Display_()
Declare Ligne(a,b)
Declare Rotation_Y(a,b.f)
Declare Rotation_Z(a,b.f)
Declare Rotation_X(a,b.f)
; boucle
Repeat
ClearScreen(0,0,0)
For x = 0 To 7
rotation_y(x,0.01)
Next x
display_()
ligne(0,1): ligne(1,2)
ligne(2,3): ligne(3,0)
ligne(4,5): ligne(5,6)
ligne(6,7): ligne(7,4)
ligne(0,4): ligne(1,5)
ligne(2,6): ligne(3,7)
FlipBuffers()
ExamineKeyboard()
Until KeyboardPushed(#PB_Key_Escape)
; procedures
Procedure Display_()
StartDrawing(ScreenOutput())
For x = 0 To 7
vertice(x)\x2 = (256*Vertice(x)\x1)/(Vertice(x)\z1+250) + 400
vertice(x)\y2 = (256*Vertice(x)\y1)/(Vertice(x)\z1+250) + 300
Next x
StopDrawing()
EndProcedure
Procedure Ligne(a,b)
StartDrawing(ScreenOutput())
FrontColor(26, 23, 229)
LineXY( vertice(a)\x2,vertice(a)\y2,vertice(b)\x2,vertice(b)\y2 )
StopDrawing()
EndProcedure
Procedure rotation_Y(a,b.f)
Longueur.f = Sqr( Pow(vertice(a)\x1,2) + Pow(vertice(a)\z1,2) )
angle.f = ACos(vertice(a)\x1 / Longueur.f)
If vertice(a)\z1 < 0 : angle.f = 6.28318530-angle.f : EndIf
angle.f = angle.f + b.f
vertice(a)\x1 = Cos(angle.f)*Longueur.f
vertice(a)\z1 = Sin(angle.f)*Longueur.f
EndProcedure
Procedure rotation_X(a,b.f)
Longueur.f = Sqr( Pow(vertice(a)\z1,2) + Pow(vertice(a)\y1,2) )
angle.f = ACos(vertice(a)\z1 / Longueur.f)
If vertice(a)\y1 < 0 : angle.f = 6.28318530-angle.f : EndIf
angle.f = angle.f + b.f
vertice(a)\z1 = Cos(angle.f)*Longueur.f
vertice(a)\y1 = Sin(angle.f)*Longueur.f
EndProcedure
Procedure rotation_Z(a,b.f)
Longueur.f = Sqr( Pow(vertice(a)\x1,2) + Pow(vertice(a)\y1,2) )
angle.f = ACos(vertice(a)\x1 / Longueur.f)
If vertice(a)\y1 < 0 : angle.f = 6.28318530-angle.f : EndIf
angle.f = angle.f + b.f
vertice(a)\x1 = Cos(angle.f)*Longueur.f
vertice(a)\y1 = Sin(angle.f)*Longueur.f
EndProcedure
Oui tu as mis le tempsTersaKen a écrit :Je me suis enfin mis au Pure Basic ( il en a fallu du temps )
Et alors tes premières impressions ?
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.
Mes impressions ?
Et bien Pure se trouve etre extremement rapide, et j'en suis entierement satisfait, j'étais sur le point d'abandonner mon projet,
Pure Basic, est arrivé, tel un messie ( ça m'a un peu rebuté d'apprendre un nouveau langage, mais finalement c'est assez rapide, même si je ne maitrise que les commandes de bases, c'est suffisant pour ce que je veux en faire ).
Si j'arrive a mes faims, je pense acheter une license
enfin Bref,
J'ai reussi a faire une fonction triangle, qui fonctionnent avec des " dots " et ça s'avere etre plutot rapide
Voici une demonstration rapide ici sur un espace 3D.

Et bien Pure se trouve etre extremement rapide, et j'en suis entierement satisfait, j'étais sur le point d'abandonner mon projet,
Pure Basic, est arrivé, tel un messie ( ça m'a un peu rebuté d'apprendre un nouveau langage, mais finalement c'est assez rapide, même si je ne maitrise que les commandes de bases, c'est suffisant pour ce que je veux en faire ).
Si j'arrive a mes faims, je pense acheter une license
enfin Bref,
J'ai reussi a faire une fonction triangle, qui fonctionnent avec des " dots " et ça s'avere etre plutot rapide
Voici une demonstration rapide ici sur un espace 3D.
PureBasic ne fait que des heureux 
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.
-
Anonyme
je vois pas de fonctions, juste l'exeTersaKen a écrit :Voici un cube ... montrant ma fonction triangle et le tri de facea telecharger ici
@+
j'utilise blitz3D, et j'allais peut être me mettre a Purebasic, qui promet avec la version 4 et son moteur3D basé sur ogre, de bonne capacités 3d. Mais arg, je suis tombé sur ce post, ces cinquantaines de lignes pour faire tourner un cube, ça fait fuir.
Je pense rester sur blitz qui fait tourner un cube avec 13 lignes de codes :
Graphics3D 800,600,32,1
SetBuffer BackBuffer()
camera=CreateCamera()
light=CreateLight()
RotateEntity light,90,0,0
cube=CreateCube()
PositionEntity cube,0,0,5
While Not KeyDown( 1 )
TurnEntity cube,0.6,0.5,0.45
RenderWorld
Flip
Wend
End
Je suis désolé si c'est démoralisant, mais bon, je me mettrai peut-être à purebasic, si quelqun me fait tourner un cube en moins de 20 lignes de code avec.
Je pense rester sur blitz qui fait tourner un cube avec 13 lignes de codes :
Graphics3D 800,600,32,1
SetBuffer BackBuffer()
camera=CreateCamera()
light=CreateLight()
RotateEntity light,90,0,0
cube=CreateCube()
PositionEntity cube,0,0,5
While Not KeyDown( 1 )
TurnEntity cube,0.6,0.5,0.45
RenderWorld
Flip
Wend
End
Je suis désolé si c'est démoralisant, mais bon, je me mettrai peut-être à purebasic, si quelqun me fait tourner un cube en moins de 20 lignes de code avec.
Ce que t'as pas du comprendre c'est que là il dessine tout lui même pour faire son cube (on pourrait appeller ca un cube2D)
En pure je pourrais difficilement te faire tourner un cube en 20 lignes, en revanche un mesh pas de problèmes...
(y'a pas encore de formes par défaut genre cube sphere etc)
Dri
En pure je pourrais difficilement te faire tourner un cube en 20 lignes, en revanche un mesh pas de problèmes...
(y'a pas encore de formes par défaut genre cube sphere etc)
Dri