SetSpriteUV()
SetSpriteUV()
Salut
savez-vous s'il est possible de modifier les UV sur un sprite ?
Par exemple, pour faire comme une rivière dont l'eau se déplace ou créer un sprite de sol dont la texture se répète ?
Merci.
savez-vous s'il est possible de modifier les UV sur un sprite ?
Par exemple, pour faire comme une rivière dont l'eau se déplace ou créer un sprite de sol dont la texture se répète ?
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
Re: SetSpriteUV()
Je pensais que les coordonnées UV n'étaient utilisées qu'en 3D donc avec un moteur 3D ?
M.
M.
Re: SetSpriteUV()
Salut Blendman , avec les sprites, c'est pas possible de jouer directement avec les UV's. j'ai créer il y a qq année la lib "supersprite3D" , je n'ai plus les sources , mais de mémoire elles sont dispo sur le forum, il y a une structure qui intègre les uv des sprite, a voir si c'est compatible avec la version actuelle de pb.
une autre solution , utilisé ogre3D , sans la composante Z pour faire de la 2D. il y a aussi la fct° clipsprite(), mais c'est les coordonnée de texture qui sont utilisé pas les UVs
@Mesa. non , cela n'a rien à voir , les uv sont surtout utilisé pour les coordonnées de textures sur un vertex, que ce soit en 2D ou 3D ne change rien. la différence fondamentale entre la 2D et la 3D est la matrice de vue, l'une est "plate", l'autre avec une perspective.
une autre solution , utilisé ogre3D , sans la composante Z pour faire de la 2D. il y a aussi la fct° clipsprite(), mais c'est les coordonnée de texture qui sont utilisé pas les UVs
@Mesa. non , cela n'a rien à voir , les uv sont surtout utilisé pour les coordonnées de textures sur un vertex, que ce soit en 2D ou 3D ne change rien. la différence fondamentale entre la 2D et la 3D est la matrice de vue, l'une est "plate", l'autre avec une perspective.
Re: SetSpriteUV()
j'avais pensé à ça, mais on ne peut pas répéter une image sur une sprite, si ?il y a aussi la fct° clipsprite()
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
Re: SetSpriteUV()
Dommage qu'on ne puisse pas répéter une image sur une sprite (comme en 3D), encore une fonction qu'il faudrait ajouter à la lib sprite ^^.
En attendant, j'ai fait ça, mais ce n'est pas vraiment optimisé (ça prend vite 1 ou 2 seconde, si on a un level genre 3000*4000 ^^)
En attendant, j'ai fait ça, mais ce n'est pas vraiment optimisé (ça prend vite 1 ou 2 seconde, si on a un level genre 3000*4000 ^^)
Code : Tout sélectionner
Procedure SetSpriteRepeated(sprite,w,h)
key$ = Str(sprite)
If FindMapElement(GameLib_Sprite(),key$)
image = GameLib_Sprite()\Image
FreeSprite(sprite)
Sp = CreateSprite(sprite,w,h,#PB_Sprite_AlphaBlending)
If Sp = 0
MessageRequester("Error","Unable to create the sprite "+Str(Sprite) +" with image "+Str(image))
Else
GameLib_Sprite(key$)\sprite = sprite
GameLib_Sprite(key$)\w = w
GameLib_Sprite(key$)\h = h
w1 = ImageWidth(image)
h1 = ImageHeight(image)
repeatX = w/w1
repeaty = h/h1
If StartDrawing(SpriteOutput(GameLib_Sprite(key$)\sprite))
DrawingMode(#PB_2DDrawing_AlphaBlend)
For i=0 To repeatX
For j = 0 To repeatY
DrawAlphaImage(ImageID(image),i*w1,j*h1)
Next j
Next i
StopDrawing()
EndIf
EndIf
EndIf
EndProcedure
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
Re: SetSpriteUV()
Utilise ogre3D , sans la composante Z que tu laisse à zéro. j'ai fait un jeu de plateforme ( pour le punch ) utilisant Ogre3D, ca marche bien, très bien même.
je serais sur le tchat de falsam surement se soir entre 18 heures & ?? heures, si tu veut voir , viens faire un tour.
je serais sur le tchat de falsam surement se soir entre 18 heures & ?? heures, si tu veut voir , viens faire un tour.
on pourra parlé de cela aussi ^^ das ist not goudekey$ = Str(sprite)
If FindMapElement(GameLib_Sprite(),key$)
Re: SetSpriteUV()
j'avais pensé à utiliser ogre, mais ça veut dire refaire beaucoup de procédures pour les sprites, à voir si vraiment ça vaut le coup ^^.G-Rom a écrit :Utilise ogre3D , sans la composante Z que tu laisse à zéro. j'ai fait un jeu de plateforme ( pour le punch ) utilisant Ogre3D, ca marche bien, très bien même.
je serais sur le tchat de falsam surement se soir entre 18 heures & ?? heures, si tu veut voir , viens faire un tour.
on pourra parlé de cela aussi ^^ das ist not goude[/quote] inde waille ? ^^key$ = Str(sprite)
If FindMapElement(GameLib_Sprite(),key$)
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
Re: SetSpriteUV()
Tu aurais un bout de code pour que je vois ce que ça donne ?G-Rom a écrit :Utilise ogre3D , sans la composante Z que tu laisse à zéro. j'ai fait un jeu de plateforme ( pour le punch ) utilisant Ogre3D, ca marche bien, très bien même.
car j'ai testé ogre pour les sprites, et c'est vite la galère quand même (même s'il y a plusieurs fonctions très pratiques, comme la lumière ambiantes, les lights, les uv-textures, ^^).
Peut-on changer le centre (pivot) du mesh/entity créé ?
J'ai l'impression que tous les pivots sont situés au centre.
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
Re: SetSpriteUV()
Oui avec TransformMesh() ou GetMeshData() et SetMeshData()blendman a écrit :Peut-on changer le centre (pivot) du mesh/entity créé ?
J'ai l'impression que tous les pivots sont situés au centre.
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.
Re: SetSpriteUV()
ok, super, merci, je vais tester çacomtois a écrit :Oui avec TransformMesh() ou GetMeshData() et SetMeshData()blendman a écrit :Peut-on changer le centre (pivot) du mesh/entity créé ?
J'ai l'impression que tous les pivots sont situés au centre.

Autre question :
lorsqu'on utilise la projection orthogonale, pour la camera (CameraProjectionMode(#Camera, #PB_Camera_Orthographic))
, peut-on changer la focale ou autre chose, pour que les objets soient plus ou moins grands ?
J'ai essayé de changer la focale ou le Z, mais les sprites (des plans) sont toujours de la même taille.
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