Page 1 sur 1

Rond dans l'eau (Rotation de texture sur un mesh torus)

Publié : dim. 30/juin/2013 16:19
par falsam
N'étant pas possible de créer en natif un torus avec Pure Basic, j'ai crée un mesh ayant la forme d'un torus que j'ai aplati sur lequel j'applique un matériel composé d'une texture d'eau avec un effet de transparence que je fais scroller.

Vous trouverez le source PB et les médias associés (Texture et Mesh) en téléchargeant le fichier ci-dessous :
:arrow: Torus 3D.zip (Source)

Bien que le source PB soit compris dans le téléchargement, je poste aussi le code.

Code : Tout sélectionner

;Ronds dans l'eau : Rotation et defilement d'une texture dans une entité

InitEngine3D()
InitKeyboard()
InitSprite()

Add3DArchive("Data/Torus", #PB_3DArchive_FileSystem)

Window = OpenWindow(#PB_Any,0,0,1024,768,"Torus")
OpenWindowedScreen(WindowID(window),0,0,1024,768)

;
; Ambience Lumiére blanche
AmbientColor(RGB(255, 255, 255))
CreateLight(#PB_Any,RGB(255, 255, 255), 0,10,100)

;
; Préparation d'un torus
Mesh = LoadMesh(#PB_Any, "Torus.mesh")
TransformMesh(Mesh, 0,0,0, 1.70, 0.02, 1.70, 35,0,0) 
Texture = LoadTexture(#PB_Any, "Eau1.tga")
Materiel = CreateMaterial(#PB_Any,TextureID(Texture))
RotateMaterial(materiel, 90, #PB_Material_Fixed)
MaterialBlendingMode(Materiel, #PB_Material_AlphaBlend) ;Transparence sur le Materiel
ScrollMaterial(Materiel, 0.00, 0.10, #PB_Material_Animated, 0) ;Scrolling de la texture 
Entity = CreateEntity(#PB_Any, MeshID(Mesh), MaterialID(materiel))

;
;Camera 
Camera = CreateCamera(#PB_Any,0,0,100,100)
CameraBackColor(Camera, RGB(145, 182, 201))
MoveCamera(camera,0,0,4)
CameraLookAt(camera,0,0,0)

While #True
  
  event = WindowEvent()
  
  ExamineKeyboard()  
  
  If event = #PB_Event_CloseWindow Or KeyboardPushed(#PB_Key_Escape)
    Break
  EndIf  
  
  RenderWorld()
  FlipBuffers()
Wend 

Re: Rond dans l'eau (Rotation de texture sur un mesh torus)

Publié : dim. 30/juin/2013 16:24
par SPH
Waouw, ca le fait !! 8O

Re: Rond dans l'eau (Rotation de texture sur un mesh torus)

Publié : dim. 30/juin/2013 18:24
par Fred
Y'a de l'idée !

Re: Rond dans l'eau (Rotation de texture sur un mesh torus)

Publié : dim. 30/juin/2013 19:18
par G-Rom
Super sympa ! :mrgreen:
Ca sent la démo d'une île tropicale ou de jungle qui approche :mrgreen:

Re: Rond dans l'eau (Rotation de texture sur un mesh torus)

Publié : dim. 30/juin/2013 19:29
par Ar-S
Je trouve que ça se rapproche plus de l'onde de choc d'une explosion de planète, il faudrait juste agrandir le torus en plus du scroll.
En tout cas merci pour tes exemples, c'est top.

Re: Rond dans l'eau (Rotation de texture sur un mesh torus)

Publié : dim. 30/juin/2013 21:13
par falsam
Ar-S a écrit :Je trouve que ça se rapproche plus de l'onde de choc d'une explosion de planète, il faudrait juste agrandir le torus en plus du scroll.
En tout cas merci pour tes exemples, c'est top.
Merdum alors c'est raté pour l'onde dans l'eau :mrgreen:

Tu peux agrandir le torus en hauteur. Modifie la ligne TransformMesh(Mesh, 0,0,0, 1.70, 0.02, 1.70, 35,0,0) en remplaçant 0.02 par 2.00 par exemple.

Si vous le souhaiter je peux faire un torus avec un trou central plus large.