TransformMesh() c'est pour travailler sur le mesh et non pas sur le material qui sera la partie visible.
C'est donc sur le material que tu vas devoir travailler en utlisant la fonction ScaleMaterial()
Code : Tout sélectionner
Enumeration Window
#Mainform
EndEnumeration
Enumeration Entities
#Mur
EndEnumeration
Enumeration Mateterial
#Damier
EndEnumeration
Global Event
InitEngine3D()
InitKeyboard()
InitSprite()
InitMouse()
;Pour cette démonstration, je me servirais des textures du dossier exemple
Add3DArchive(#PB_Compiler_Home + "Examples/3D/Data/Textures", #PB_3DArchive_FileSystem)
OpenWindow(#Mainform, 0, 0, 800, 600, "Travailler le material", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(#Mainform),0,0,800,600)
;Lumiere et ombre
AmbientColor(RGB(127, 127, 127))
CreateLight(#PB_Any,RGB(151, 251, 151), 0, 0, 100)
WorldShadows(#PB_Shadow_Additive)
;Camera
Camera = CreateCamera(#PB_Any,0,0,100,100)
CameraBackColor(Camera, RGB(145, 182, 201))
MoveCamera(Camera, 2, 5, 15)
CameraLookAt(Camera, 0,0,0)
;Création du materiel
CreateMaterial(#Damier, TextureID(LoadTexture(#PB_Any, "MRAMOR6X6.jpg")))
;Commente la ligne qui suit pour voir la différence
ScaleMaterial(#Damier, 0.2, 1)
;Création d'un cube de base d'une unité
CreateEntity(#Mur, MeshID(CreateCube(#PB_Any, 1)), MaterialID(#Damier))
;Redimentionnement du mur (On utilise un facteur d'échelle)
ScaleEntity(#Mur, 10, 2, 1)
Repeat
Repeat
Event = WindowEvent()
Select Event
Case #PB_Event_CloseWindow
End
EndSelect
Until Event = 0
If ExamineKeyboard()
If KeyboardPushed (#PB_Key_Escape)
Break
EndIf
EndIf
; Affiche le rendu de la scéne
RenderWorld(80)
FlipBuffers()
ForEver
Ce code comporte deux fois Repeat dans la boucle événementielle.
- Le premier Repeat traite les événements 3D
- Le second Repeat traite et vide les événements Windows. On a tendance à l'oublier et le code tôt ou tard se plante.