Merci Mr Thellier: Star wars ;-)

15 sujets de 1 à 15 (sur un total de 17)

  • 1
  • 2
  • Anonyme

      #9116

      Coucou à tous,

      Me voila encore une fois, et encore heureux ;-)

      Voici mes pitis prg avec hollywood:

      Vous pouvez les testers et comme d’hab me dire si sa tourne bien?

      Merci les gens, voici les liens:

      http://jeannoel.roueste.free.fr/starship3d6800x0.exe

      http://jeannoel.roueste.free.fr/starship3dAOS4.exe

      http://jeannoel.roueste.free.fr/starship3dMorphos.exe

      http://jeannoel.roueste.free.fr/starship3dWarpos.exe

      Et maintenant, le code

      @SCREEN {Mode = "ask", Width = 640, Height = 400}

      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("a")=True Then Zoomin() ; Zoom in

          If IsKeyDown("z")=True Then Zoomout() ; Zoom Out

          If IsKeyDown("e")=True Then SetFormStyle(#ANTIALIAS); Antialiasing sur le starship

          If IsKeyDown("r")=True Then SetFormStyle(#NORMAL); Enlève l'Antialiasing sur le starship

      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 starship partout lol

      TextOut(#CENTER,0,"LA GUERRE DES ETOILES")

      TextOut(#CENTER,10,"A Hollywood")

      TextOut(0,20,"Touche fléché pour la rotation de l'objet")

      TextOut(0,30,"touche a = Zoom Arrière")

      TextOut(0,40,"touche z = Zoom Avant")

      TextOut(0,50,"touche e = SURPRISE!!!")

      TextOut(0,60,"touche r = Enlève la surprise")

      TextOut(0,70,"ctrl + c = QUITTER")

      For I=0 To 359

          CO=Cos(I*0.1)*256 ; Mise en mémoire de 360 calcule du Cosinus des angles sur 360°

          SI=Sin(I*0.1)*256 ; Mise en mémoire de 360 calcule du Sinus des angles sur 360°

      Next 

      ;Coordonnée de l'objet à dessiner, objet donnée gratieusement par l'ami Thellier, grand programmeur 3D ;-)

      ;J'ai créé un tableau unique avec les coordonnèes U et V pour les textures, mais je maîtrise pas, et les 

      ;coordonnées X, Y et Z, le tableau est donc sous le format coord[U,V,X,Y,Z] et surtout pas coord[V][X][Y][Z] 

      ;coord[] est un tableau à 1 colonne ou 1 ligne (selon comment vous l'imaginer sous excel par exemple)

          

          

          For I=0 To 95

              ; il y a 96 lignes de coordonnées, donc 0 à 95, sa fait 96 graduations

              ; tous les tableaux Hollywood commence à l'adresse 0

          coord={

          0.647059,0.545455,-0.013836,-0.009224,-0.039999,

          0.588235,0.309091,0.076100,0.046121,-0.536000,

          0.686275,0.309091,0.076100,-0.046121,-0.536000,

          0.852941,0.545455,-0.013836,-0.202934,-0.039999,

          0.647059,0.600000,-0.034591,-0.009224,-0.039999,

          0.852941,0.600000,-0.034591,-0.202934,-0.039999,

          0.686275,0.363636,0.055346,-0.046121,-0.536000,

          0.588235,0.363636,0.055346,0.046121,-0.536000,

          0.852941,0.545455,-0.013836,-0.202934,0.039999,

          0.686275,0.309091,0.076100,-0.046121,0.536001,

          0.588235,0.309091,0.076100,0.046121,0.536001,

          0.647059,0.545455,-0.013836,-0.009224,0.039999,

          0.588235,0.363636,0.055346,0.046121,0.536001,

          0.686275,0.363636,0.055346,-0.046121,0.536001,

          0.852941,0.600000,-0.034591,-0.202934,0.039999,

          0.647059,0.600000,-0.034591,-0.009224,0.039999,

          1.000000,0.400000,0.041509,-0.341298,0.007999,

          0.901961,0.400000,0.041509,-0.249055,0.007999,

          0.901961,0.109091,0.152200,-0.249055,0.007999,

          0.970588,0.054545,0.172955,-0.313625,0.007999,

          0.901961,0.400000,0.041509,-0.249055,0.000000,

          1.000000,0.400000,0.041509,-0.341298,0.000000,

          0.970588,0.054545,0.172955,-0.313625,0.000000,

          0.901961,0.109091,0.152200,-0.249055,0.000000,

          0.852941,0.054545,0.172955,-0.202934,0.000000,

          0.852941,0.054545,0.172955,-0.202934,0.007999,

          0.666667,0.054545,0.172955,-0.027673,0.000000,

          0.666667,0.054545,0.172955,-0.027673,0.007999,

          0.666667,0.000000,0.193710,-0.027673,0.000000,

          0.666667,0.000000,0.193710,-0.027673,0.007999,

          0.941176,0.000000,0.193710,-0.285952,0.000000,

          0.941176,0.000000,0.193710,-0.285952,0.007999,

          0.156863,0.636364,-0.048427,0.451989,0.039999,

          0.156863,0.545455,-0.013836,0.451989,0.016000,

          0.274510,0.472727,0.013836,0.341298,0.023999,

          0.274510,0.636364,-0.048427,0.341298,0.072000,

          0.558824,0.472727,0.013836,0.073794,0.023999,

          0.558824,0.636364,-0.048427,0.073794,0.072000,

          0.156863,0.545455,-0.013836,0.451989,-0.008000,

          0.274510,0.472727,0.013836,0.341298,-0.016000,

          0.558824,0.472727,0.013836,0.073794,-0.016000,

          0.156863,0.636364,-0.048427,0.451989,-0.039999,

          0.274510,0.636364,-0.048427,0.341298,-0.056000,

          0.558824,0.636364,-0.048427,0.073794,-0.056000,

          0.009804,0.636364,-0.048427,0.590353,0.000000,

          0.156863,0.690909,-0.069182,0.451989,0.023999,

          0.274510,0.727273,-0.083018,0.341298,0.039999,

          0.343137,0.727273,-0.083018,0.276728,0.023999,

          0.343137,0.727273,-0.083018,0.276728,-0.016000,

          0.274510,0.727273,-0.083018,0.341298,-0.024000,

          0.156863,0.690909,-0.069182,0.451989,-0.016000,

          0.000000,0.636364,-0.048427,0.599577,0.000000,

          0.558824,0.727273,-0.083018,0.073794,-0.016000,

          0.558824,0.727273,-0.083018,0.073794,0.023999,

          0.549020,0.818182,-0.117609,0.083018,0.112000,

          0.549020,0.945455,-0.166037,0.083018,0.056000,

          0.549020,1.000000,-0.186791,0.083018,0.007999,

          0.549020,1.000000,-0.186791,0.083018,-0.008000,

          0.549020,0.945455,-0.166037,0.083018,-0.056000,

          0.549020,0.818182,-0.117609,0.083018,-0.112000,

          0.549020,0.472727,0.013836,0.083018,-0.056000,

          0.549020,0.363636,0.055346,0.083018,-0.008000,

          0.549020,0.363636,0.055346,0.083018,0.007999,

          0.549020,0.472727,0.013836,0.083018,0.056000,

          1.000000,0.472727,0.013836,-0.341298,0.056000,

          1.000000,0.709091,-0.076100,-0.341298,0.088000,

          0.921569,0.818182,-0.117609,-0.267504,0.112000,

          1.000000,0.363636,0.055346,-0.341298,0.007999,

          1.000000,0.363636,0.055346,-0.341298,-0.008000,

          1.000000,0.472727,0.013836,-0.341298,-0.056000,

          0.921569,0.818182,-0.117609,-0.267504,-0.112000,

          1.000000,0.709091,-0.076100,-0.341298,-0.088000,

          0.813725,1.000000,-0.186791,-0.166037,0.007999,

          0.813725,1.000000,-0.186791,-0.166037,-0.008000,

          0.843137,0.945455,-0.166037,-0.193710,-0.056000,

          0.843137,0.945455,-0.166037,-0.193710,0.056000,

          0.441176,0.363636,0.055346,0.184485,0.488000,

          0.441176,0.181818,0.124528,0.184485,0.488000,

          0.441176,0.181818,0.124528,0.184485,0.552001,

          0.441176,0.363636,0.055346,0.184485,0.696001,

          0.441176,0.509091,0.000000,0.184485,0.552001,

          0.745098,0.127273,0.145282,-0.101467,0.552001,

          0.745098,0.127273,0.145282,-0.101467,0.488000,

          0.745098,0.363636,0.055346,-0.101467,0.488000,

          0.745098,0.600000,-0.034591,-0.101467,0.552001,

          0.745098,0.363636,0.055346,-0.101467,0.696001,

          0.441176,0.509091,0.000000,0.184485,-0.552000,

          0.441176,0.363636,0.055346,0.184485,-0.696000,

          0.441176,0.181818,0.124528,0.184485,-0.552000,

          0.441176,0.181818,0.124528,0.184485,-0.488000,

          0.441176,0.363636,0.055346,0.184485,-0.488000,

          0.764706,0.363636,0.055346,-0.119915,-0.696000,

          0.764706,0.600000,-0.034591,-0.119915,-0.552000,

          0.764706,0.363636,0.055346,-0.119915,-0.488000,

          0.764706,0.127273,0.145282,-0.119915,-0.488000,

          0.764706,0.127273,0.145282,-0.119915,-0.552000

          }

      ; J'ai du rajouter une ligne de trois 0 qui ne sont pas des coordonnées du vaisseau, on verra plus tard pourquoi ;-)

      ; P1 c'est 3 chiffres formant 1 triangle

      P1={

          0,0,0,

          0,1,2,

          0,2,3,

          4,5,6,

          4,6,7,

          7,1,0,

          7,0,4,

          2,1,7,

          2,7,6,

          3,2,6,

          3,6,5,

          0,3,5,

          0,5,4,

          8,9,10,

          8,10,11,

          12,13,14,

          12,14,15,

          15,11,10,

          15,10,12,

          13,12,10,

          13,10,9,

          14,13,9,

          14,9,8,

          15,14,8,

          15,8,11,

          16,17,18,

          16,18,19,

          20,21,22,

          20,22,23,

          23,18,17,

          23,17,20,

          24,25,18,

          24,18,23,

          26,27,25,

          26,25,24,

          28,29,27,

          28,27,26,

          30,31,29,

          30,29,28,

          22,19,31,

          22,31,30,

          21,16,19,

          21,19,22,

          20,17,16,

          20,16,21,

          18,25,31,

          18,31,19,

          22,30,24,

          22,24,23,

          24,30,28,

          24,28,26,

          31,25,27,

          31,27,29,

          32,33,34,

          32,34,35,

          35,34,36,

          35,36,37,

          33,38,39,

          33,39,34,

          34,39,40,

          34,40,36,

          38,41,42,

          38,42,39,

          39,42,43,

          39,43,40,

          44,44,45,

          44,45,46,

          44,46,47,

          44,47,48,

          44,48,49,

          44,49,50,

          44,50,44,

          44,44,51,

          44,51,51,

          51,51,38,

          51,38,33,

          51,44,41,

          51,41,38,

          41,44,50,

          50,49,42,

          50,42,41,

          49,48,52,

          49,52,43,

          49,43,42,

          48,47,53,

          48,53,52,

          46,35,37,

          46,37,53,

          46,53,47,

          46,45,32,

          46,32,35,

          32,45,44,

          44,51,33,

          44,33,32,

          36,40,43,

          36,43,52,

          36,52,53,

          36,53,37,

          36,37,37,

          54,55,56,

          54,56,57,

          54,57,58,

          54,58,59,

          54,59,60,

          54,60,61,

          54,61,62,

          54,62,63,

          64,65,66,

          64,66,54,

          64,54,63,

          63,62,67,

          63,67,64,

          62,61,68,

          62,68,67,

          61,60,69,

          61,69,68,

          59,70,71,

          59,71,69,

          59,69,60,

          56,72,73,

          56,73,57,

          57,73,74,

          57,74,58,

          58,74,70,

          58,70,59,

          54,66,75,

          54,75,55,

          55,75,72,

          55,72,56,

          69,71,65,

          69,65,64,

          69,64,67,

          69,67,68,

          75,66,65,

          75,65,71,

          75,71,70,

          75,70,74,

          75,74,73,

          75,73,72,

          76,77,78,

          76,78,79,

          76,79,80,

          81,82,83,

          81,83,84,

          81,84,85,

          78,85,79,

          77,81,78,

          76,82,77,

          80,83,76,

          79,84,80,

          85,84,79,

          84,83,80,

          83,82,76,

          82,81,77,

          81,85,78,

          86,87,88,

          86,88,89,

          86,89,90,

          91,92,93,

          91,93,94,

          91,94,95,

          87,91,88,

          88,95,89,

          89,94,90,

          90,93,86,

          86,92,87,

          87,92,91,

          86,93,92,

          90,94,93,

          89,95,94,

          88,91,95,

      }

              ;Calcule 3D grâce au magazine Dream N°27 de Mars 1996 que j'ai modifié pour le Starship

              Y1=(coord[I*5+3]*100*CO[AX]+coord[I*5+4]*100*SI[AX])/256 

              ; I*5+3, faite le calcule sur une feuille blanche, le résultat sera l'adresse de la donnée dans le tableau coord[], vous allez vite comprendre (c'est la valeur en X)

              Z1=(-coord[I*5+3]*100*SI[AX]+coord[I*5+4]*100*CO[AX])/256

              X1=(coord[I*5+2]*100*CO[AY]+Z1*SI[AY])/256

              ZZ=(-coord[I*5+2]*100*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)^2))

              XE=320+X*D

              YE=200+Y*D

          Next

          ; Calcule final

          For I=0 To 169

              GP1=P1[I*3+3]

              GP2=P1[I*3+4]

              GP3=P1[I*3+5]

              X=XE[GP1]

              Y=YE[GP1]

              X1=XE[GP2]

              Y1=YE[GP2]

              X2=XE[GP3]

              Y2=YE[GP3]

              ;un triangle c'est 3 côtés donc 3 traçage de lignes

              Line (X,Y,X1,Y1,#WHITE) ; Traçage des lignes du premier côtés de chaque triangle

              Line (X1,Y1,X2,Y2,#WHITE) ; Traçage des lignes du deuxième côtés de chaque triangle

              Line (X2,Y2,X,Y,#WHITE) ; Traçage des lignes du troisième côtés de chaque triangle

          Next

      EndFunction

      BeginDoubleBuffer

      SetInterval(1,PRG,1000/50)

      Repeat

      WaitEvent

      Forever

      Respect

      lhomme

        #139831

        sous morphos 2.5 sur un mini 1.5ghz sa marche tres bien avec suprise ou pas, sa ne ralentie pas le mouvement.

        maintenant sa doit evoluer a combien d’image seconde?

        c’est un peu lent, je ne sais pas si c’est leffet rechercher

        je l’ai fais en mode fenetre.

        j’ai pas vu luc dans le cokpite, c’est normal?

        Anonyme

          #139832

          lol

          Luc est sur tatooine ;-)

          Sa tourne à 50FPS sur mon PC et le script timing est à 50FPS, mais j’ai déjà des retours sur le fait que c’est plutôt lent comparé à Amos, maintenant que je sais afficher n’importe quel objet en 3D sous hollywood, il me reste plus qu’a faire évoluer le moteur pour qu’il soit rapide et aussi qu’il ne bug plus. Et bin… ya encore du boulot lol.

          Mais au moins les gens qui ont hollywood on un exemple pour la 3D, il « suffit » à chacun de chercher la meilleur solution, et pourquoi pas en faire profiter les autres ;-) ou moi :-P

          merci du retour

          Edit: j’ai trouver avec la méthode polygon celui qui la veut, il peut me contacter (attention version brut de pomme) je peut pas trop mettre de code sur le forum car la sa commence être des listes un peux long, a moin que sa gêne pas

          Anonyme

            #139833

            sayasupacrew

              #139834

              Super sympas ce moteur 3D, sa me donne pleins d’idées. Sa m’attire toujours de faire par soi memes tel qu’un starchip. J’avais eu une petite idée il y a quelques temps de cela.

              Tout fonctionne parfaitement ici, sur un PEgasos 1 et mos 1.4

              lightwave, belnder, goldorak

              https://www.youtube.com/@sayasupa

              Anonyme

                #139835

                Hello saya,

                Si tu veux les sources hollywood, dis le moi, je te le filerais ;-)

                Si tu as le temps, essaye celui la.

                Sa va ramer sévère mais bon…

                En tous, 5812 triangles d’afficher.

                http://jeannoel.roueste.free.fr/Meu6800x0.exe

                http://jeannoel.roueste.free.fr/MeuAOS4.exe

                http://jeannoel.roueste.free.fr/MeuMorphos.exe

                http://jeannoel.roueste.free.fr/MeuWarpos.exe

                Si tu peu me faire un retour sur la vitesse, se serai sympa

                Merci

                thellier

                  #139836

                  >Merci Mr Thellier

                  pas de quoi Mr Artblink ;-)

                  Content de voir que ça marche

                  En fait y a un problème qui peut te ralentir:

                  Les données était prévues pour tracer des triangles et là on l’utilise pour tracer des lignes (arêtes des triangles)

                  Or chaque arête est utilisée dans 2 triangles qui se touchent

                  ==> on trace 2 fois les mêmes lignes

                  4,5,6, trace 4à5 5à6 6à4

                  4,6,7, trace 4à6(double) 6à7 7à4

                  Il faudrait que je te nettoye ce tableau de ses doublons…

                  Si tu veut d’autres objets tu peut utiliser ceux au format Vscape texte (*.geo) : y en a plein internet ou tu peut les créer avec Caligari (comme j’ai fait ce StarShip)

                  Y existe aussi des prog convertisseur d’objets 3D qui sauvent en texte .geo

                  Exemple un cube en .GEO

                  3DG1

                  8 /* 8 points */

                  -0.500000 0.500000 0.500000 /* x y z*/

                  0.500000 0.500000 0.500000

                  0.500000 0.500000 -0.500000

                  -0.500000 0.500000 -0.500000

                  -0.500000 -0.500000 0.500000

                  0.500000 -0.500000 0.500000

                  0.500000 -0.500000 -0.500000

                  -0.500000 -0.500000 -0.500000

                  4 0 1 2 3 15 /* apres les points commencent les polygones */

                  4 7 6 5 4 15 /* ici un polygone fait de 4 points (7,6,5,4) et 15= le matériaux (inutile ici) */

                  4 0 4 5 1 15

                  4 1 5 6 2 15

                  4 2 6 7 3 15

                  4 3 7 4 0 15

                  Alain

                  Anonyme

                    #139837

                    Mais c’est vrai sa!!!!

                    Bin oui, je suis bête, et en plus sa se voit car les traits sont doublé… mais j’ai un souci, si je trace que des lignes et non des polygones en forme de triangle, je ne peux pas remplir le vaisseau, et sa restera de la 3D filaire… a moins que je trouve une combine dans hollywood, en gros, il faut, je pense, enlever quasiment 1/3 des lignes, t’embête pas à la faire, j’ai compris ta méthode, qui est d’une logique en plus… t’a vue, j’ai même pas pensé à sa… pfff! sa prouve qu’en 3D, j’ai encore vraiment plein de truc à apprendre, se qui est vraiment bien par contre, c’est qu’une fois que t’a compris, tous s’enchaîne, 3 mois pour sortir un cube en filaire, 6h pour sortir un cube fais avec des polygones et remplis.. Combien de temps je vais mettre pour la texturisation, à ton avis ;-) ?

                    En tous cas, j’ai fais plein de site internet, et j’ai compris la méthode des vecteurs dans l’espace pour afficher les textures, j’ai « plus » qu’a le traduire pour que sa fonctionne sous hollywood.

                    Pour ton cube, 15 peut être une couleur de remplissage qui change en fonction d’un angle (mais je trouve pas la formule.

                    J’ai encore du boulot, mais c’est vraiment bon, en plus tu m’aide bien et j’adore se genre d’entraide, sa me fait rappeler qu’on est amigaïste ;-)

                    Je vais chercher des objets, revoir le moteur 3D, est je poste sa, mais je vais travailler que sur un cube pour le moment, comme sa, je mettrais les routines sur le forum (sa prendra moins de place) et sa aidera bien les petits programmeurs hollywood comme moi pour les aider à développer et surtout s’éclater avec hollywood, que je conseil à tous pour sa simplicité de création.

                    Si j’arrive à faire un monde en 3D ou je peux bouger dedans, je t’envoie une bouteille de champs, avec le prg ;-)

                    Respect

                    Mod

                    jegougou

                      #139838

                      testé sur mon mini 1,33ghz, les 2 premiers les star wars marchent bien, le 2eme est tres rapide.

                      Par contre la vache rame sévèrement. ;-)

                      Anonyme

                        #139839

                        @jegougou:

                        Je viens de tester mon nouveau « moteur 3D » sur un cube… oulala, c’est largement plus rapide que mon premier cube.

                        Il faut que je vous le fasse tester, bon, sa reste qu’un cube, mais avec mon PC, sa va très très vite… 😮

                        Sa vaux pas les moteurs en C ou assembleur, mais je me suis surpris moi même lol

                        Respect

                        Mod

                        jegougou

                          #139840

                          si tu veux a l’occase je testerais ton cube sous morphos. ;-)

                          Anonyme

                            #139841

                            Tu as Hollywood et je te donne le script? ou je te le transmet en .exe?

                            thellier

                              #139842

                              > j’ai compris la méthode des vecteurs dans l’espace pour afficher les textures, j’ai « plus » qu’a le traduire pour que sa fonctionne sous hollywood.

                              OK mais calculer des pixels texturés un par un risque d’ etre trop lent

                              >Pour ton cube, 15 peut être une couleur de remplissage qui change en fonction d’un angle (mais je trouve pas la formule.

                              Le 15 est une valeur standard dans les fichier .geo = je crois pas que cela ait grand sens ni utilité (cela doit vouloir dire « matériau par défaut » )

                              Si la couleur change avec l’angle alors c’est déjà un modéle d’éclairage

                              A) Prerequis:

                              1) il faut connaitre l’angle de chaque surface à éclairer

                              2) donc ici l’angle de la surface de chaque triangle

                              3) cette angle est une valeur (x y z) appellée « normale du triangle »

                              (imaginer une fleche perpendiculaire au triangle )

                              On les calcule une fois pour toute et on les stocke (une par triangle N.x N.y N.z)

                              pour un triangle fait des points A B C

                              AB.x= B.x – A.x;

                              AB.y= B.y – A.y;

                              AB.z= B.z – A.z;

                              AC.x= C.x – A.x;

                              AC.y= C.y – A.y;

                              AC.z= C.z – A.z;

                              N.x = AB.y*AC.z – AB.z*AC.y;

                              N.y = AB.z*AC.x – AB.x*AC.z;

                              N.z = AB.x*AC.y – AB.y*AC.x;

                              d=sqrt(N.x*N.x + N.y*N.y + N.z*N.z);

                              if (d!=0.0)

                              {

                              N.x=N.x/d;

                              N.y=N.y/d;

                              N.z=N.z/d;

                              }

                              else

                              {N.x=N.y=N.z=1.0;}

                              B) Durant l’animation:

                              1) On tourne les normales comme les autres points de l’objet

                              2) On retourne les normales dans la position de la lampe

                              (facultatif si la lampe est dans le meme axe

                              3) On prend une des valeurs de la normale (N.x) et on la transforme en niveau de couleur

                              (genre N.x=0 noir …. N.x=O.5 gris …. N.x=1 blanc)

                              VOILA

                              PS: normalement OpenGL fait tout ça pour toi

                              Anonyme

                                #139843

                                Coucou,

                                J’ai réussi, tout en gardant la formule :

                                D=FC/(Sqrt(X^2+Y^2+(CZ+ZZ)^2))

                                à réutiliser l’information (pour le calcule des points) à modifier l’intensité de la couleur de la face du cube en fonction de son angle, et sans perte de vitesse, il n’y a que 6 faces, il faudra que j’essai se soir sur le starship.

                                Le problème que je rencontre, c’est que pour tracer mon polygon, mon axe Z n’existe plus, il fait partie de mes produits vectoriel car je suis obligé de le prendre en compte, mais mon axe Z est ensuite implanté dans les coordonnées X et Y, il faut pas que j’oublie qu’il n’y a aucune fonction 3D sous hollywood et que je travail donc exclusivement sur un plan 2D. Si j’ajoute un calcule supplémentaire pour la luminosité dans le calcule des coordonnées des point en X, Y et Z, alors je multiplie par le nombre de point le nombre de calcule de luminosité SAUF si j’ajoute un test (se que j’ai fait) pour limité la boucle

                                ex:

                                For i=0 to 299

                                Calcule des points

                                If I<99

                                calcule des valeurs normal

                                end if

                                next

                                Le problème que je rencontre c’est un mauvais traçage, car quand la face visible au départ tourne, elle garde sa priorité d’affichage, j’avais pensé utilisé la variable Z afin de changé la priorité d’affichage des faces, mais le problème c’est que se ne sont pas les face qui tourne, mais la caméra (l’écran).

                                Se soir, j’essai d’utilisé la normal comme donnée de priorité pour l’affichage de la face du cube, je verrai si sa fonctionne. Un gars qui fais de la 3D en C++ sur DirectX me dis que sa le faisait automatiquement, car la commande 3D utilise les 3 axe.

                                Je me demande, si je ne dois pas créer un référentiel (un point par exemple) statique qui par un calcule de distance entre le centre de la face afficher et se point selon l’Axe Z ferait que la face afficher en dernier doit être celle la moins distante de se point statique dans l’espace. C’est compliqué tous sa, je m’exprime mal, mais dans ma tête c’est clair lol.

                                Bref, si vous arrivez à comprendre se que je veux dire, bravo ;-)

                                Respect

                                thellier

                                  #139844

                                  Euh non je comprends pas tout :-

                                  Mais déjà pour voir si une face est face à l’écran ou de dos (donc face cachée)

                                  3 points d’un tri

                                  OrdreFace= ((P[1].x – P[0].x)*(P[2].y – P[0].y)-(P[2].x – P[0].x)*(P[1].y – P[0].y) < 0.0); Si OrdreFace afficher tri Alain

                                15 sujets de 1 à 15 (sur un total de 17)

                                • 1
                                • 2
                                • Vous devez être connecté pour répondre à ce sujet.

                                Forums AmigaOS, MorphOS et AROS Développement Merci Mr Thellier: Star wars ;-)

                                Amiga Impact