Merci Mr Thellier: Star wars ;-)
15 sujets de 1 à 15 (sur un total de 17)
- 1
- 2
-
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
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?
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
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
Hello,
nouveau moteur+option:
http://jeannoel.roueste.free.fr/starship3d6800x02.exe
http://jeannoel.roueste.free.fr/starship3dAOS42.exe
http://jeannoel.roueste.free.fr/starship3dMorphos2.exe
http://jeannoel.roueste.free.fr/starship3dWarpos2.exe
Normalement, il est plus rapide que le premier moteur.
Voili voilou.
Amusez vous bien
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
https://www.youtube.com/@sayasupa
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
>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
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
Modtesté 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.
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
Modsi tu veux a l’occase je testerais ton cube sous morphos.
Tu as Hollywood et je te donne le script? ou je te le transmet en .exe?
> 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;}
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
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
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 ;-)