[PB 5.50] - Créer et texturer un cube
Publié : mar. 11/oct./2016 21:22
Avec PB 5.50, le cube possède six sub-meshes pour le rendre facile à texturer sur chacune des faces.
■ Il est encore possible d'appliquer globalement une texture sur un cube lors de la création de l'entité de cette manière.
■ Pour texturer chaque face d'une entité (cube) avec PB5.50 il faut
- Loader une texture par face.
- Créer l'entité sans appliquer de material : CreateEntity(0, MeshID(0), #PB_Material_None)
- Texturer chaque face avec l'instruction SetEntityMaterial(0, MaterialID(#Material), Sub-Mesh)
■ Code exemple.
■ Il est encore possible d'appliquer globalement une texture sur un cube lors de la création de l'entité de cette manière.
Code : Tout sélectionner
LoadTexture(0, "texture.jpg")
CreateMaterial(0, TextureID(0))
CreateEntity(0, MeshID(0), MaterialID(0))
- Loader une texture par face.
- Créer l'entité sans appliquer de material : CreateEntity(0, MeshID(0), #PB_Material_None)
- Texturer chaque face avec l'instruction SetEntityMaterial(0, MaterialID(#Material), Sub-Mesh)
■ Code exemple.
Code : Tout sélectionner
;[PB 5.50] - Create cube
;Avec PB 5.50, le cube possède six sub-meshes pour le rendre facile à texturer sur chacune des faces.
;With PB 5.50, the cube have six submeshes to make it easy to texture its faces separately.
LoadFont(0, "Arial", 20)
InitEngine3D() : InitKeyboard() : InitSprite()
UseJPEGImageEncoder()
OpenWindow(0,0,0,1024,768,"Cube Texturing")
OpenWindowedScreen(WindowID(0),0,0,1024,768)
Add3DArchive(".", #PB_3DArchive_FileSystem)
CreateCamera(0, 0, 0, 100, 100)
CameraBackColor(0, RGB(245, 222, 179))
MoveCamera(0, 5, 5, 5)
CameraLookAt(0, 0, 0, 0)
CreateLight(0, RGB(255, 255, 255), -100, 200, 100)
;Creer un cube mesh - Create a cube mesh
CreateCube(0, 2)
;Créer six textures & materiel - Create six textures & materials
For n = 0 To 5
CreateImage(n, 128, 128, 24, RGB(154, 205, 50))
StartDrawing(ImageOutput(n))
DrawingMode(#PB_2DDrawing_Transparent)
DrawingFont(FontID(0))
DrawText(20, 20, "Face " + n, RGB(255, 255, 255))
StopDrawing()
SaveImage(n, "texture" + n + ".jpg", #PB_ImagePlugin_JPEG)
CreateMaterial(n, TextureID(LoadTexture(#PB_Any, "texture" + n + ".jpg")))
Next
;Creation entité (Cube) - Create entitity (Cube)
CreateEntity(0, MeshID(0), #PB_Material_None)
;Texturer chaque cotés du cube - Texturing each side of the cube
For n = 0 To 5
SetEntityMaterial(0, MaterialID(n), n)
Next
While #True
Repeat
Event = WindowEvent()
Select Event
Case #PB_Event_CloseWindow
End
EndSelect
Until Event = 0
RotateEntity(0, 0.1, 0.2, 0.3, #PB_Relative)
If ExamineKeyboard()
If KeyboardReleased(#PB_Key_Escape)
Break
EndIf
EndIf
RenderWorld()
FlipBuffers()
Wend