Annonces Google
Serveur IRC
Serveur : irc.portlane.se
Canal : #AmigaNG
Activité du Site

Pages vues depuis 25/07/2007 : 25 293 361

  • Nb. de membres 187
  • Nb. d'articles 1 270
  • Nb. de forums 19
  • Nb. de sujets 20
  • Nb. de critiques 24

Top 10  Statistiques

Index du forum »»  Création-Développement »» J'ai réussi mon tit moteur 3D

J'ai réussi mon tit moteur 3D#925

8Contributeur(s)
artblinkElwoodcritonsgateK-LCreolsAmiDARKxrayCrisot
3 Modérateur(s)
K-LElwoodcorto
artblink artblinkicon_post
COUCOU

Je suis trop content ;-)

voici un ti code pour afficher un Cube en vrai 3D, pas de bidouille de vecteur comme la dernière fois lol.
Si vous la joué fine, vous pouvez afficher n'importe quel objet, mais attention, pour une sphère, c'est plus compliqué , mais j'ai peut être la combine pour afficher des courbes, je la filerai si je la trouve.

Alors, voici les commandes:
touches flèches pour la rotation X et Y

Touche Shift Droit pour un zoom out
Touche control droit pour un zoom in

voici le ti code, attention, se n'es qu'un cube en 3D filaire lol, mais il y a l'antialiasing et on peut l'avoir soit en mode fenêtre ou en mode plein écran... que demande le peuple ;-)

Ami hollywoodien, amusez-vous bien... Qui peut me tester se code sur 6800x0, normalement il tourne en 50FPS



@SCREEN?{Mode?=?"ask",?Width?=?640,?Height?=?400}
SetFormStyle(#ANTIALIAS)?;?Antialiasing?sur?le?cube
FC=200
CX=160
CY=100
CZ=200
Function?Controle()
????If?IsKeyDown("Left")=True?Then?Gauche()?;?Vers?la?gauche
????If?IsKeyDown("Right")=True?Then?Droite()?;?Vers?la?droite
????If?IsKeyDown("Up")=True?Then?Haut()?;?Vers?le?Haut
????If?IsKeyDown("Down")=True?Then?Bas()?;?Vers?le?bas
????If?IsKeyDown("RSHIFT")=True?Then?Zoomin()?;?Zoom?in
????If?IsKeyDown("RCONTROL")=True?Then?Zoomout()?;?Zoom?Out
EndFunction

Function?Gauche()
????AY=AY+1
????If?AY>359?Then?AY=0
EndFunction

Function?Droite()
????AY=AY-1
????If?AY<0?Then?AY=359
EndFunction

Function?Haut()
????AX=AX+1
????If?AX>359?Then?AX=0
EndFunction
????????
Function?Bas()
????AX=AX-1
????If?AX<0?Then?AX=359
EndFunction

Function?Zoomin()
????CZ=CZ+10
????If?CZ>500?Then?CZ=500
EndFunction

Function?Zoomout()
????CZ=CZ-10
????If?CZ<80?Then?CZ=80)
EndFunction

Function?PRG()
????
????Controle()?;?Exécution?de?la?fonction?Controle
????;?Réservation?mémoire?et?création?des?tableaux
????Dim?CO[360]?;?360?cases?réservé?car?une?rotation?c'est?360??pour?le?Cosinus
????Dim?SI[360]?;?360?cases?réservé?car?une?rotation?c'est?360??pour?le?Sinus
????Dim?X[8]?;?Un?cube,?c'est?8?points?en?X
????Dim?Y[8]?;?Un?cube,?c'est?8?points?en?Y
????Dim?Z[8]?;?Un?cube,?c'est?8?points?en?Z
????Dim?XE[8]?;?Point?final?du?cube?a?dessiner?en?X
????Dim?YE[8]?;?Point?final?du?cube?a?dessiner?en?Y
????Dim?ZZ[8]?;?Point?final?du?cube?a?dessiner?en?Z
????Dim?P1[12]?;?Un?cube,?c'est?12?lignes?(point?de?départ?de?la?ligne)
????Dim?P2[12]?;?Un?cube,?c'est?12?lignes?(point?final?de?la?ligne)
????
Flip?;?Flip?d'écran?pour?le?double?buffer
Cls?;?Effacement?de?l'écran?sinon?on?verrait?des?cube?partout?lol

For?I=0?To?359
????CO[I]=Cos(I*0.1)*256?;?Mise?en?mémoire?de?360?calcule?du?Cosinus?des?angles?sur?360?
????SI[I]=Sin(I*0.1)*256?;?Mise?en?mémoire?de?360?calcule?du?Sinus?des?angles?sur?360?
Next?

????For?I=0?To?7
????????X?=?{-50,50,50,-50,-50,50,50,-50}?;?Coordonnées?des?points?dans?l'espace?en?X
????????Y?=?{-50,-50,50,50,-50,-50,50,50}?;?Coordonnées?des?points?dans?l'espace?en?Y
????????Z?=?{-50,-50,-50,-50,50,50,50,50}?;?Coordonnées?des?points?dans?l'espace?en?Z
????????P1?=?{0,1,2,3,4,5,6,7,0,1,2,3}?;?Point?de?départ?pour?tracer?la?ligne
????????P2?=?{1,2,3,0,5,6,7,4,4,5,6,7}?;?Point?d'arrivée?pour?tracer?la?ligne
????????;Calcule?3D?grâce?au?magazine?Dream?N?27?de?Mars?1996
????????Y1=(Y[I]*CO[AX]+Z[I]*SI[AX])/256
????????Z1=(-Y[I]*SI[AX]+Z[I]*CO[AX])/256
????????X1=(X[I]*CO[AY]+Z1*SI[AY])/256
????????ZZ[I]=(-X[I]*SI[AY]+Z1*CO[AY])/256
????????X=(X1*CO[AZ]+Y1*SI[AZ])/256
????????Y=(-X1*SI[AZ]+Y1*CO[AZ])/256
????????D=FC/(Sqrt(X^2+Y^2+(CZ+ZZ[I])^2))
????????XE[I]=320+X*D
????????YE[I]=200+Y*D
????Next
????;?Calcule?final
????For?I=0?To?11
????????GP1=P1[I]
????????GP2=P2[I]
????????X=XE[GP1]
????????Y=YE[GP1]
????????X1=XE[GP2]
????????Y1=YE[GP2]
????????Line?(X,Y,X1,Y1,#WHITE)?;?Traçage?des?lignes
????Next
EndFunction

BeginDoubleBuffer

SetInterval(1,PRG,1000/50)

Repeat
WaitEvent
Forever



Si vous avez des combines, ne m'oublier pas :=!

Respect

Note de K-L : titre modifié pour éviter les majuscules :-)
Message édité par : K-L / 27-11-2010 14:24
artblink artblinkicon_post
Désolé pour les majuscules KL, mais je suis vraiment trop content lol
Elwood Elwoodicon_post
et ça fait plaisir :-)
--
Philippe Ferrucci
Avec une Sam460 et AmigaOS 4.1, je suis eco-responsable. Cool !
artblink artblinkicon_post
Voici les liens des fichiers compilé pour chaque OS
désolé, ils font plus d'1Mo (pour un cube lol... sa fais lourd)

Sa Rame sur vos machines ?

http://jeannoel.roueste.free.fr/cube3d6800x0.exe
http://jeannoel.roueste.free.fr/cube3dAos4.exe
http://jeannoel.roueste.free.fr/cube3dmorphos.exe
http://jeannoel.roueste.free.fr/cube3dwarpos.exe


Merci de me faire un ti retour :=!

Respect
Message édité par : artblink / 27-11-2010 15:39
critonsgate critonsgateicon_post
Ton code est sympa, mais juste une petite remarque, tu peux aussi utiliser les polygones, cela évite le traçage des lignes en boucle et permettrait de les remplir facilement !

En tout cas merci pour le code ça me donne quelques idées intéressantes.
CritonSgate ~ Pegasos 2 G4 ~ Morphos 3.9
Ibook g4 - morphos 3.9
SAM 440 EP - 667 - os4 Final Édition
artblink artblinkicon_post
Le code avec les polygones arrivent plus tard ;-)
K-L K-Licon_post
Sympa (et non ça rame pas sur ma machine) :-) La touche CRTL droite pour zoomer ne marche pas ici.
--
AmigaONE X1000/1,8 Ghz (A-Eon), Radeon RX560, 2 Go de Ram et OS4.1 FE
artblink artblinkicon_post
Merci K-l

Bon, je mettrai une autre touche sur celui avec les polygones

Merci de l'info,au fait tu sait pas ou je peut trouver des fichier Obj 3d que je peut lire sans convertir? il me faut juste les coordonnées X,Y et Z et je peut afficher n'importe quel objet, je recherche un helicoptère 3D mais très simple, sur internet je trouve que des objet lightwave et autre que j'arrive pas a lire avec wordpad, il m'affiche que des symbol Ascii, les fichiers sont protégé... snif

Respect
Message édité par : artblink / 27-11-2010 19:42
artblink artblinkicon_post
Nouveau PRG :

C'est dingue, plusieur moi pour sortir un moteur 3D filaire et 5 heures pour sortir un objet 3D en polygone (bon, j'ai eu un coup de chance en triffouillant le code)

voici des petits liens, attention, les formules sont pas au top donc risque de petits défaut d'affichage


Voici les liens

http://jeannoel.roueste.free.fr/NewCube6800x0.exe
http://jeannoel.roueste.free.fr/NewCubeAOS4.exe
http://jeannoel.roueste.free.fr/NewCubeMorphos.exe
http://jeannoel.roueste.free.fr/NewCubeWarpos.exe

Des pitis retour... siou plait

Merci

Respect
Creols Creolsicon_post
Tu as réussi, bravo :=!
La touche "b" est sans effet :#
0
Petites Annonces

0 annonce(s) publiée(s)

Consulter

AmigaOS 4.1

Laissez-vous tenter par
AmigaOS 4.1
AmiTheme

AmiTheme