ClipTexture()
Publié : sam. 08/oct./2005 9:37
C'est l'équivalent de la fonction ClipSprite() mais pour une texture.
Je vais ajouter cette fonction dans la lib M3D_Matrix3D.
Voici une démo , il suffit d'appuyer sur une des touches du curseur pour animer le personnage.
J'utilise cette image

Je vais ajouter cette fonction dans la lib M3D_Matrix3D.
Voici une démo , il suffit d'appuyer sur une des touches du curseur pour animer le personnage.
J'utilise cette image
Code : Tout sélectionner
Structure UV
u.f
v.f
EndStructure
Structure Facette
P1.uv
P2.uv
P3.uv
P4.uv
EndStructure
Declare ClipTexture(x.f,y.f,l.f,h.f)
If InitEngine3D()=0 Or InitSprite()=0 Or InitKeyboard()=0
End ; pas de MessageRequester() pour une démo , on sort direct !
EndIf
OpenScreen(1024,768,32,"")
;Mesh
CreateMesh(0)
SetMeshData(0, #PB_Mesh_Vertices , ?PlainVertices, 4)
SetMeshData(0, #PB_Mesh_Triangles , ?IndexPlain , 4)
SetMeshData(0, #PB_Mesh_Normals , ?PlainNormals, 4)
SetMeshData(0, #PB_Mesh_UVCoordinates, ?PlainTexture , 4)
;Texture
LoadTexture(0, "BlondeHero.JPG")
;Entity
CreateEntity(0, MeshID(0), CreateMaterial(0, TextureID(0)))
ResizeEntity(0,0.5,0,0.5)
RotateEntity(0, 0,90,0)
;Camera
CreateCamera(0, 0, 0, 100, 100)
CameraLocate(0,0,0,7)
AmbientColor(RGB(255,255,255))
;Variables
l.f=1.0/3.0 ; 3 images sur la largeur
h.f=1.0/4.0 ; 4 images en hauteur
max=150
Tps=ElapsedMilliseconds()
ClipTexture(image*l,h,l,h)
Repeat
If ElapsedMilliseconds()-Tps>max
Tps=ElapsedMilliseconds()
image+1
If image>2
image=0
EndIf
EndIf
If ExamineKeyboard()
If KeyboardPushed(#PB_Key_Left)
ClipTexture(image*l,0,l,h)
ElseIf KeyboardPushed(#PB_Key_Down)
ClipTexture(image*l,h,l,h)
ElseIf KeyboardPushed(#PB_Key_Right)
ClipTexture(image*l,h*2,l,h)
ElseIf KeyboardPushed(#PB_Key_Up)
ClipTexture(image*l,h*3,l,h)
EndIf
EndIf
RenderWorld()
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)
End
Procedure ClipTexture(x.f,y.f,l.f,h.f)
*Ptr.Facette=?PlainTexture
*Ptr\P2\u=x
*Ptr\P2\v=y
*Ptr\P3\u=x+l
*Ptr\P3\v=y
*Ptr\P4\u=x+l
*Ptr\P4\v=y+h
*Ptr\P1\u=x
*Ptr\P1\v=y+h
SetMeshData(0, #PB_Mesh_UVCoordinates, ?PlainTexture , 4)
EndProcedure
DataSection
PlainVertices:
Data.f -0.5,0,-0.5
Data.f -0.5,0,0.5
Data.f 0.5,0,0.5
Data.f 0.5,0,-0.5
PlainNormals:
Data.f 0,1,0
Data.f 0,1,0
Data.f 0,1,0
Data.f 0,1,0
PlainTexture:
Data.f 0,0
Data.f 0,1
Data.f 1,1
Data.f 1,0
IndexPlain:
Data.w 0,1,2
Data.w 2,3,0
Data.w 2,1,0
Data.w 0,3,2
EndDataSection