Sprite3D: colorer, flip, clipsprite, hotspot, etc..
Re: Sprite3D: colorer, flip, clipsprite, hotspot, etc..
Bah oui c'est hyper utile. Rien que le flip pour les sprites on économise de la mémoire en ayant pas à charger les symétriques.
Si c'est possible avec direct3d, il doit y avoir un équivalent pour linux, c'est sûr.
Si c'est possible avec direct3d, il doit y avoir un équivalent pour linux, c'est sûr.
Il y a deux méthodes pour écrire des programmes sans erreurs. Mais il n’y a que la troisième qui marche.
Version de PB : 6.00LTS - 64 bits
Version de PB : 6.00LTS - 64 bits
Re: Sprite3D: colorer, flip, clipsprite, hotspot, etc..
Est ce que quelqu'un peu lister les commandes et leur paramètre car j'ai un problème avec EXT_transformsprite3d(). Quels sont ses paramètres ?
Il y a deux méthodes pour écrire des programmes sans erreurs. Mais il n’y a que la troisième qui marche.
Version de PB : 6.00LTS - 64 bits
Version de PB : 6.00LTS - 64 bits
Re: Sprite3D: colorer, flip, clipsprite, hotspot, etc..
salut
Bon, j'ai regardé plus en détail ton fichier, et j'ai essayé certaines transformations, mais cela ne fonctionne pas tout à fait comme je le pensais
.
Zoom et miroir :
- lorsque l'on zoome ou que l'on effectue un miroir, cette transformation s'effectue toujours par rapport à l'origine (0,0) du sprite et non le nouveau pivot.
Est-ce normal ?
Des images pour illustrer ( j'ai repris ton exemple) :
Là, c'est normal, j'ai ajouté une ombre en dessous du personnage pour voir où se trouve le pivot du sprite (hotspot)) :

Là, en faisant un miroir vertical, le personnage marche sur la tête, alors que je voudrais que les pieds collent à l'ombre (donc que le sprite soit plus bas). Je n'ai pas réussi à modifier EXT_FlipVertSprite3D() pour que ça marche
.

ce serait intéressant pour faire un reflet dans l'eau par exemple
Pareil, lorsque je fais un zoom/dézoom, je voudrais que cela zoom en son pivot et non en haut à gauche (en gros, que le personnage soit toujours centré les pieds sur l'ombre (son pivot), je n'ai pas réussi non plus à modifier la procédure de zoom.

Voilà, si quelqu'un sait comment modifier cette petite lib bien sympa, pour ce genre de chose, ce serait top
Bon, j'ai regardé plus en détail ton fichier, et j'ai essayé certaines transformations, mais cela ne fonctionne pas tout à fait comme je le pensais

Zoom et miroir :
- lorsque l'on zoome ou que l'on effectue un miroir, cette transformation s'effectue toujours par rapport à l'origine (0,0) du sprite et non le nouveau pivot.
Est-ce normal ?
Des images pour illustrer ( j'ai repris ton exemple) :
Là, c'est normal, j'ai ajouté une ombre en dessous du personnage pour voir où se trouve le pivot du sprite (hotspot)) :

Là, en faisant un miroir vertical, le personnage marche sur la tête, alors que je voudrais que les pieds collent à l'ombre (donc que le sprite soit plus bas). Je n'ai pas réussi à modifier EXT_FlipVertSprite3D() pour que ça marche


ce serait intéressant pour faire un reflet dans l'eau par exemple

Pareil, lorsque je fais un zoom/dézoom, je voudrais que cela zoom en son pivot et non en haut à gauche (en gros, que le personnage soit toujours centré les pieds sur l'ombre (son pivot), je n'ai pas réussi non plus à modifier la procédure de zoom.

Voilà, si quelqu'un sait comment modifier cette petite lib bien sympa, pour ce genre de chose, ce serait top

http://blendman.blogspot.com/
Forum PB fr : http://www.purebasic.fr/french - Forum PB Eng : http://www.purebasic.fr/english
Forum PB fr : http://www.purebasic.fr/french - Forum PB Eng : http://www.purebasic.fr/english
-
- Messages : 579
- Inscription : ven. 11/mai/2007 15:21
Re: Sprite3D: colorer, flip, clipsprite, hotspot, etc..
Désolé de ne pas avoir répondu plus vite, je suis en période "priorité boulot", en ce moment..
Je t'ai modifié l'include en page 1 pour ajouter et gérer une commande:Tu mets ça une seule fois, en dehors de ta boucle, et les flip/zoom affecteront aussi le pivot du sprite 3D.
Attention: vu que les largeurs/hauteurs sont de type "Long" (.l), il y a des problèmes d'arrondis quand tu fais de nombreux zooms.
Allez, à+, je file en formation UML (joie...
)

Je t'ai modifié l'include en page 1 pour ajouter et gérer une commande:
Code : Tout sélectionner
EXT_SetTransformHandle(numsprite3d,#True)
Attention: vu que les largeurs/hauteurs sont de type "Long" (.l), il y a des problèmes d'arrondis quand tu fais de nombreux zooms.

Allez, à+, je file en formation UML (joie...

Les idées sont le souvenir de choses qui ne se sont pas encore produites.
Re: Sprite3D: colorer, flip, clipsprite, hotspot, etc..
ah super, merci, je vais tester ça de suite 
Edit :
j'ai testé sur ta démo, mais visiblement, le zoom ne marche plus on dirait.
voici un code test:

Edit :
j'ai testé sur ta démo, mais visiblement, le zoom ne marche plus on dirait.
voici un code test:
Code : Tout sélectionner
IncludeFile "EXT_sprite3D.pbi"
;{ global
Global quit.b,event.i
Global red.i,green.i,blue.i
Global sprite.i,spriteBis.i
Global sprite3d.i,sprite3dBis.i, newsizeX.f=1,newsizeY.f=1
;}
;{ init
InitSprite()
InitSprite3D()
InitKeyboard()
UsePNGImageDecoder()
; Open a 640x480 windowed screen
OpenWindow(0, 0, 0, 640, 480, "Extended Sprite 3D", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(0), 0, 0, 640, 480, 0, 0, 0, #PB_Screen_SmartSynchronization)
;}
;{ Load a sprites sheet, i.e. a big image containing all the frames of the animation.
LoadSprite(0,"shado.png",#PB_Sprite_Texture|#PB_Sprite_AlphaBlending)
EXT_CreateSprite3D(0,0)
EXT_SetHandleSprite3D(0,115,68)
EXT_SetTransformHandle(0,#True)
; NB: it's better (faster) if the image's width and height are powers of 2.
sprite = LoadSprite(#PB_Any, "chara.png", #PB_Sprite_Texture)
; Creates the EXT_sprite3D from the image
sprite3d = EXT_CreateSprite3D(#PB_Any, sprite)
EXT_SetHandleSprite3D(sprite3d,128,230); Position its handle in its center
EXT_SetTransformHandle(sprite3d,#True)
;EXT_ZoomSprite3D(sprite3d,0.5,0.5); Resize it to 128x128
; Load and create another sprite
spriteBis = LoadSprite(#PB_Any, "robot.png", #PB_Sprite_Texture)
sprite3dBis = EXT_CreateSprite3D(#PB_Any, spriteBis)
; Resize it to 200x200
;EXT_ZoomSprite3D(sprite3dBis,3,3)
; Set its pivot outside of its boundary
EXT_SetHandleSprite3D(sprite3dBis,-50,50)
; Make it semi-transparent
EXT_SetAlphaSprite3D(sprite3dBis,200)
EXT_SetTransformHandle(sprite3dBis,#True)
;}
;{ Main loop
Repeat
Delay(1)
Repeat
; Process the windows events
Event = WindowEvent()
Select Event
Case #PB_Event_CloseWindow
Quit = #True
EndSelect
Until Event = 0
; Keyboard
If ExamineKeyboard()
If KeyboardReleased(#PB_Key_H)
EXT_FlipHoriSprite3D(sprite3d)
EndIf
If KeyboardReleased(#PB_Key_V)
EXT_FlipVertSprite3D(sprite3d)
EXT_FlipVertSprite3D(0)
EndIf
If KeyboardReleased(#PB_Key_Add)
newsizeX + 0.1 : newsizeY + 0.1
EXT_ZoomSprite3D(sprite3d,newSizeX,newSizeY)
ElseIf KeyboardReleased(#PB_Key_Subtract)
newsizeX - 0.1 : newsizeY - 0.1
EXT_ZoomSprite3D(sprite3d,newSizeX,newSizeY)
EndIf
If KeyboardPushed(#PB_Key_Escape)
Quit = #True
EndIf
EndIf
; Every 100ms, clip the first sprite for animation
If ElapsedMilliseconds() - oldTimer > 100
oldTimer = ElapsedMilliseconds()
xclip+50
If xclip >= 250
xclip = 0
yclip+50
EndIf
If xclip = 150 And yclip = 50
xclip = 0
yclip = 0
EndIf
EXT_ClipSprite3D(sprite3D,xclip,yclip,xclip+49,yclip+49)
EndIf
; Rotate and color the big transparent sprite
angle + 1
EXT_RotateSprite3D(sprite3dBis,Radian(angle/3))
red = 128+127*Cos(Radian(angle))
blue = 128+127*Sin(Radian(angle))
green = 255 - red - blue
If green < 0
green = 0
EndIf
EXT_SetColorSprite3D(sprite3dBis,RGB(red,green,blue))
; Clear the screen and draw some line to indicate the screen's center
ClearScreen(RGB(125,125,125))
StartDrawing(ScreenOutput())
Line(320,0,1,480)
Line(0,240,640,1)
DrawText(2,0,"H - Horizontal flip")
DrawText(2,15,"V - Vertical Flip")
DrawText(2,30,StrF(newsizeX)+" / "+StrF(newsizeY))
StopDrawing()
; Display the sprites
Start3D()
EXT_DisplaySprite3D(0,320,240+18)
EXT_DisplaySprite3D(sprite3d,320,240)
EXT_DisplaySprite3D(sprite3dBis,320,240)
Stop3D()
FlipBuffers()
Until Quit = #True
;}
http://blendman.blogspot.com/
Forum PB fr : http://www.purebasic.fr/french - Forum PB Eng : http://www.purebasic.fr/english
Forum PB fr : http://www.purebasic.fr/french - Forum PB Eng : http://www.purebasic.fr/english
-
- Messages : 579
- Inscription : ven. 11/mai/2007 15:21
Re: Sprite3D: colorer, flip, clipsprite, hotspot, etc..
Je crois que je sais pourquoi: les tailles que tu passes à "EXT_ZoomSprite3D" ne sont pas des facteurs mais des dimensions absolues: "EXT_ZoomSprite3D(num,128,128)" passe ton sprite à 128x128 pixels. (et oui, je suis d'accord, la proc aurait dû s'appeler "resizeSprite3D"' plutôt que "zoomSprite3D"
)
Par ailleurs, deux remarques:
- tu n'as pas besoin de faire "EXT_SetTransformHandle(num,#False)" à l'initialisation du sprite car c'est la valeur par défaut (par défaut, les flip/zoom ne repositionnent pas le pivot = comportement avant la modif');
- Je trouve bizarre que tu zoomes/dezoomes le sprite du bonhomme alors que c'est le seul sur lequel tu à mis le "EXT_SetTransformHandle" à faux; ça devrait être l'inverse.
Voilà, dis-moi si ça va mieux comme ça.

Par ailleurs, deux remarques:
- tu n'as pas besoin de faire "EXT_SetTransformHandle(num,#False)" à l'initialisation du sprite car c'est la valeur par défaut (par défaut, les flip/zoom ne repositionnent pas le pivot = comportement avant la modif');
- Je trouve bizarre que tu zoomes/dezoomes le sprite du bonhomme alors que c'est le seul sur lequel tu à mis le "EXT_SetTransformHandle" à faux; ça devrait être l'inverse.

Voilà, dis-moi si ça va mieux comme ça.

Les idées sont le souvenir de choses qui ne se sont pas encore produites.
Re: Sprite3D: colorer, flip, clipsprite, hotspot, etc..
ah oui, c'est normal, j'avais modifié ton pbi, donc forcément, ça ne marche plus vu que c'est redevenu comme avantkelebrindae a écrit :Je crois que je sais pourquoi: les tailles que tu passes à "EXT_ZoomSprite3D" ne sont pas des facteurs mais des dimensions absolues: "EXT_ZoomSprite3D(num,128,128)" passe ton sprite à 128x128 pixels. (et oui, je suis d'accord, la proc aurait dû s'appeler "resizeSprite3D"' plutôt que "zoomSprite3D")

Du coup, j'ai modifié un peu ta macro pour proposer les 2 mode (resize et zoom

Code : Tout sélectionner
Macro EXT_ZoomSprite3D(numEXT_Spr3d,newSizeX,newSizeY, mode = 0)
; zoom -> mode = 1 (pourcentage for the size (width/height)
; resize -> mode = 0 (real value of the pixel)
*TRF3D_DX9sprite3D = EXT_Sprite3D(numEXT_Spr3d)\ptrSprite3D
If EXT_Sprite3D(numEXT_Spr3d)\transformPivot = #True And mode = 0
TRF3D_v1 = (newSizeX) / *TRF3D_DX9sprite3D\Width
TRF3D_v2 = (newSizeY) / *TRF3D_DX9sprite3D\Height
EXT_Sprite3D(numEXT_Spr3d)\pivotX * TRF3D_v1
EXT_Sprite3D(numEXT_Spr3d)\pivotY * TRF3D_v2
ElseIf EXT_Sprite3D(numEXT_Spr3d)\transformPivot = #True And mode = 1
TRF3D_v1 = Round(*TRF3D_DX9sprite3D\Width*(newSizeX),0) / *TRF3D_DX9sprite3D\Width
TRF3D_v2 = Round(*TRF3D_DX9sprite3D\Height*(newSizeY),0) / *TRF3D_DX9sprite3D\Height
EXT_Sprite3D(numEXT_Spr3d)\pivotX * TRF3D_v1
EXT_Sprite3D(numEXT_Spr3d)\pivotY * TRF3D_v2
EndIf
If mode= 0
*TRF3D_DX9sprite3D\Width = (newSizeX)
*TRF3D_DX9sprite3D\Height = (newSizeY)
ElseIf mode = 1
*TRF3D_DX9sprite3D\Width = Round(*TRF3D_DX9sprite3D\Width*(newSizeX),0)
*TRF3D_DX9sprite3D\Height = Round(*TRF3D_DX9sprite3D\Height*(newSizeY),0)
EndIf
EXT_TransformSprite3D(*TRF3D_DX9sprite3D\Width,*TRF3D_DX9sprite3D\Height,EXT_Sprite3D(numEXT_Spr3d)\pivotX,EXT_Sprite3D(numEXT_Spr3d)\pivotY,*TRF3D_DX9sprite3D\Angle)
EndMacro
- c'est le resize autrement dit, on entre les nouvelles tailles de pixels (128,128)
Mode = 1
c'est le zoom, on entre un pourcentage. (0.5,0.5) par exemple
Comme ça on a le choix, qu'en penses-tu ?

En tout cas, merci beaucoup, car ça va cartonner grâce à toi dans mon jeu

ouip, c'est une erreur de ma part, en fait, je l'ai mis sur #true pour tester, mais j'ai posté le mauvais code.Par ailleurs, deux remarques:
- tu n'as pas besoin de faire "EXT_SetTransformHandle(num,#False)" à l'initialisation du sprite car c'est la valeur par défaut (par défaut, les flip/zoom ne repositionnent pas le pivot = comportement avant la modif');
- Je trouve bizarre que tu zoomes/dezoomes le sprite du bonhomme alors que c'est le seul sur lequel tu à mis le "EXT_SetTransformHandle" à faux; ça devrait être l'inverse.![]()
http://blendman.blogspot.com/
Forum PB fr : http://www.purebasic.fr/french - Forum PB Eng : http://www.purebasic.fr/english
Forum PB fr : http://www.purebasic.fr/french - Forum PB Eng : http://www.purebasic.fr/english
-
- Messages : 579
- Inscription : ven. 11/mai/2007 15:21
Re: Sprite3D: colorer, flip, clipsprite, hotspot, etc..
C'est super, effectivement: quelquefois l'un est plus pratique que l'autre et c'est bien de ne pas avoir à faire les calculs à la main.mode = 0 - c'est le resize
Mode = 1 - c'est le zoom, on entre un pourcentage
Comme ça on a le choix, qu'en penses-tu ?
Perso, j'aurais peut-être créé une macro séparée ("resize" d'un côté, "zoom" de l'autre), parce que dans les cas extrêmes, le code pourrait être exécuté des centaines de fois par itérations et que ça fait un test de moins; mais bon, le gain de perfs est sans doute négligeable...
C'est le gros avantage des includes par rapport aux librairies: chacun peut les adapter à sa sauce et selon ses besoins.
De rien; ça bien fait plaisir d'être un peu utile de temps en temps...blendman a écrit :Merci beaucoup, car ça va cartonner grâce à toi dans mon jeu

Les idées sont le souvenir de choses qui ne se sont pas encore produites.
Re: Sprite3D: colorer, flip, clipsprite, hotspot, etc..
tu as tout à fait raison, je vais en faire 2 macro séparées, je n'avais pas pensé au fait que ce soit exécuter beaucoup de fois, mais étant donné que je vais utiliser ta lib sur tous les personnages et mob de notre jeu 3Arks, c'est préférable que ce soit séparé effectivementkelebrindae a écrit :C'est super, effectivement: quelquefois l'un est plus pratique que l'autre et c'est bien de ne pas avoir à faire les calculs à la main.mode = 0 - c'est le resize
Mode = 1 - c'est le zoom, on entre un pourcentage
Comme ça on a le choix, qu'en penses-tu ?
Perso, j'aurais peut-être créé une macro séparée ("resize" d'un côté, "zoom" de l'autre), parce que dans les cas extrêmes, le code pourrait être exécuté des centaines de fois par itérations et que ça fait un test de moins; mais bon, le gain de perfs est sans doute négligeable...

Ah mais, je ne sais pas si tu te rends compte comme cela va nous être utile sur le jeu 3arks ce genre de chose, ça va notamment me permettre :De rien; ça bien fait plaisir d'être un peu utile de temps en temps...
- d'afficher des ennemis par "age" (petit, moyen, adulte), ou simplement de varier les tailles.
- de modifier et de faire des transformations sur tous les personnages joueurs du jeu.
- de faire des transformations de tailles ou de miroir sur tous les décors quand c'est nécessaire

- de réfléchir à un système de réflexion en temps réel (avec le miroir horizontal) par exemple, de faire des étendues d'eau, des rivières, etc..

A ce propos, penses-tu que je puisse utiliser sur tous les sprites affichés ce genre de lib sans trop de soucis (sur par exemple 500 sprites affichés) ?
Je vais faire quelques essais et je pense qu'il ne devrait y avoir aucun soucis.
Encore un très grand merci

http://blendman.blogspot.com/
Forum PB fr : http://www.purebasic.fr/french - Forum PB Eng : http://www.purebasic.fr/english
Forum PB fr : http://www.purebasic.fr/french - Forum PB Eng : http://www.purebasic.fr/english
-
- Messages : 579
- Inscription : ven. 11/mai/2007 15:21
Re: Sprite3D: colorer, flip, clipsprite, hotspot, etc..
J'ai refait quelques petites modifs pour rendre le truc un peu plus pratique:
- Modif : La macro "EXT_ZoomSprite3D" fonctionne maintenant avec des coordonnées relatives (pour diviser la taille par 2, on fait "EXT_ZoomSprite3D(numsprite, 0.5,0.5)" et pour la doubler on fait "EXT_ZoomSprite3D(numsprite, 2,2)"
- Ajout: la macro "EXT_ResizeSprite3D" fait la même chose, mais avec des tailles en pixels (elle fait ce que faisait "EXT_ZoomSprite3D" avant, quoi)
- Modif: La macro "EXT_SetHandleSprite3D" fonctionne maintenant avec des coordonnées relatives (pour centrer le pivot, on fait "EXT_SetHandleSprite3D(numsprite, 0.5,0.5)"
- Ajout: La macro "EXT_SetAbsHandleSprite3D" fait la même chose, mais avec des positions en pixels.
- Ajout: La macro "EXT_MidHandleSprite3D(numsprite)" centre le pivot du sprite (comme en Blitz).
- Modif: Par défaut, le pivot est maintenant repositionné lors des zooms/retaillages (c'est l'inverse de la version précédente, mais c'est plus intuitif comme ça)
- Modif: Lorsque le pivot suit le retaillage, il n'y a plus de problème d'arrondis (le résultat devrait donc toujours être correct).
J'ai mis à jour l'include dans le premier post, ainsi que le .zip contenant les exemples à cette adresse:
http://keleb.free.fr/codecorner/downloa ... rite3D.zip
Au passage, j'ai ajouté dans ce zip mon "blob monster" modifié pour utiliser ces commande.
(et cette fois, promis, je ne touche plus à rien...
)
- Modif : La macro "EXT_ZoomSprite3D" fonctionne maintenant avec des coordonnées relatives (pour diviser la taille par 2, on fait "EXT_ZoomSprite3D(numsprite, 0.5,0.5)" et pour la doubler on fait "EXT_ZoomSprite3D(numsprite, 2,2)"
- Ajout: la macro "EXT_ResizeSprite3D" fait la même chose, mais avec des tailles en pixels (elle fait ce que faisait "EXT_ZoomSprite3D" avant, quoi)
- Modif: La macro "EXT_SetHandleSprite3D" fonctionne maintenant avec des coordonnées relatives (pour centrer le pivot, on fait "EXT_SetHandleSprite3D(numsprite, 0.5,0.5)"
- Ajout: La macro "EXT_SetAbsHandleSprite3D" fait la même chose, mais avec des positions en pixels.
- Ajout: La macro "EXT_MidHandleSprite3D(numsprite)" centre le pivot du sprite (comme en Blitz).
- Modif: Par défaut, le pivot est maintenant repositionné lors des zooms/retaillages (c'est l'inverse de la version précédente, mais c'est plus intuitif comme ça)
- Modif: Lorsque le pivot suit le retaillage, il n'y a plus de problème d'arrondis (le résultat devrait donc toujours être correct).
J'ai mis à jour l'include dans le premier post, ainsi que le .zip contenant les exemples à cette adresse:
http://keleb.free.fr/codecorner/downloa ... rite3D.zip
Au passage, j'ai ajouté dans ce zip mon "blob monster" modifié pour utiliser ces commande.
(et cette fois, promis, je ne touche plus à rien...

Les idées sont le souvenir de choses qui ne se sont pas encore produites.
Re: Sprite3D: colorer, flip, clipsprite, hotspot, etc..
merci beaucoup pour ce partage 

Re: Sprite3D: colorer, flip, clipsprite, hotspot, etc..
Merci kelebrindae c'est top 

~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Re: Sprite3D: colorer, flip, clipsprite, hotspot, etc..
Yep, bien pratique!!! Merci! 

Re: Sprite3D: colorer, flip, clipsprite, hotspot, etc..
excellent !!kelebrindae a écrit :J'ai refait quelques petites modifs pour rendre le truc un peu plus pratique:
mais si, n'aies pas peur d'ajouter des trucs si ça permet de toujours améliorer ta lib(et cette fois, promis, je ne touche plus à rien...)

Encore un immense merci

http://blendman.blogspot.com/
Forum PB fr : http://www.purebasic.fr/french - Forum PB Eng : http://www.purebasic.fr/english
Forum PB fr : http://www.purebasic.fr/french - Forum PB Eng : http://www.purebasic.fr/english
-
- Messages : 579
- Inscription : ven. 11/mai/2007 15:21
Re: Sprite3D: colorer, flip, clipsprite, hotspot, etc..
Une dernière update:
- Ajout: une macro "EXT_RotateDegSprite3D" dont le paramètre "angle" est en degrés (je trouve ça plus intuitif...)
- Modif': Un mode "Fast rotation" qui force les calculs de rotation à utiliser des Cosinus et Sinus pré-calculés et stockés dans un tableau plutôt que les fonctions Cos() et Sin(). Ce mode est activé en déclarant une variable "#EXT_FASTTRANSFORM = #TRUE" avant l'insertion de l'include (Cf. exemples dans le zip); Le choix du mode est fait à la pré-compilation, de façon à ne pas pénaliser les perfs. Dans les faits, cette optimisation a un effet tout à fait négligeable (voire négatif, si le debuggger est activé)...
- Modif' : Correction d'un bug stupide dans "EXT_SetAbsHandleSprite3D".
J'ai mis à jour l'include dans le premier post, ainsi que le zip. Au passage, j'ai ajouté un exemple de plus dans le zip (un petit vaisseau qui bouge façon "Asteroids").
http://keleb.free.fr/codecorner/downloa ... rite3D.zip
A+
- Ajout: une macro "EXT_RotateDegSprite3D" dont le paramètre "angle" est en degrés (je trouve ça plus intuitif...)
- Modif': Un mode "Fast rotation" qui force les calculs de rotation à utiliser des Cosinus et Sinus pré-calculés et stockés dans un tableau plutôt que les fonctions Cos() et Sin(). Ce mode est activé en déclarant une variable "#EXT_FASTTRANSFORM = #TRUE" avant l'insertion de l'include (Cf. exemples dans le zip); Le choix du mode est fait à la pré-compilation, de façon à ne pas pénaliser les perfs. Dans les faits, cette optimisation a un effet tout à fait négligeable (voire négatif, si le debuggger est activé)...
- Modif' : Correction d'un bug stupide dans "EXT_SetAbsHandleSprite3D".
J'ai mis à jour l'include dans le premier post, ainsi que le zip. Au passage, j'ai ajouté un exemple de plus dans le zip (un petit vaisseau qui bouge façon "Asteroids").
http://keleb.free.fr/codecorner/downloa ... rite3D.zip
A+
Les idées sont le souvenir de choses qui ne se sont pas encore produites.