PureBasic

Forums PureBasic
Nous sommes le Mar 20/Aoû/2019 11:27

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 1 message ] 
Auteur Message
 Sujet du message: Mesh : CreatePyramid()
MessagePosté: Lun 02/Avr/2018 18:50 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6849
Localisation: IDF (Yvelines)
Syntaxe
    Resultat = CreatePyramid(#Mesh, Width.f, Height.f, [SizeTop.f=0])

Description
    Crée un mesh pyramide.

Arguments
    #Mesh Le numéro d'identification du nouveau mesh. #PB_Any peut être utilisé pour générer automatiquement ce numéro.
    Width.f Largeur de la pyramide.
    Height.f Hauteur de la pyramide.
    SizeTop.f Largeur de la pyramide au sommet. (0 par défaut)

Valeur de retour
    Renvoie une valeur non nulle en cas de succès, zéro sinon.
    Si #PB_Any a été utilisé pour le paramètre #Mesh alors la valeur de retour est le numéro d'identification, généré automatiquement.

Exemple.
Code:
Global MouseX.f, MouseY.f

Declare CreatePyramid(Mesh, Width.f, Height.f, SizeTop.f=0)

InitEngine3D() : InitKeyboard() : InitSprite() : InitMouse()

OpenWindow(0, 0, 0, 1024, 768, "Create Pyramide", #PB_Window_Maximize | #PB_Window_BorderLess)
OpenWindowedScreen(WindowID(0),0, 0, WindowWidth(0) , WindowHeight(0))

Add3DArchive(#PB_Compiler_Home + "Examples\3D\Data\Textures", #PB_3DArchive_FileSystem)
Add3DArchive(#PB_Compiler_Home + "Examples/3D/Data/Packs/waterworld.zip", #PB_3DArchive_Zip)
Add3DArchive(#PB_Compiler_Home + "examples/3d/Data/Packs/desert.zip", #PB_3DArchive_Zip)

SkyBox("desert07.jpg")

;Caméra, Lumiere & Ombre
CreateCamera(0, 0, 0, 100, 100)
MoveCamera(0, 0, 1.5, 4)
CameraLookAt(0, 0, 0, 0)

CreateLight(#PB_Any, RGB(151, 251, 151), -200, 100, -500)
WorldShadows(#PB_Shadow_Additive)

CreateMaterial(0, TextureID(LoadTexture(-1, "Dirt.jpg")))
CreateMaterial(1, TextureID(LoadTexture(-1, "Floor02.jpg")))

CreatePlane(0, 5, 5, 1, 1, 5, 5)
CreateEntity(0, MeshID(0), MaterialID(0), 0, 0, 0)

;Deux pyramides
CreatePyramid(0, 1, 1, 0.5)
CreateEntity(1, MeshID(0), MaterialID(1), 1, 0.5, 1)

CreatePyramid(0, 1, 1, 0)
CreateEntity(2, MeshID(0), MaterialID(1), -1, 0.5, 1)

While #True 
  Repeat
    Event  = WindowEvent()
    Select Event
      Case #PB_Event_CloseWindow
        End
    EndSelect
  Until Event = 0   
 
  If ExamineKeyboard() 
    If KeyboardReleased(#PB_Key_Escape)
      Break
    EndIf   
  EndIf
 
  If ExamineMouse()
    MouseX = -MouseDeltaX() *  0.05
    MouseY = -MouseDeltaY() *  0.05 
  EndIf
 
  RotateCamera(0, MouseY, MouseX, 0, #PB_Relative)
 
  RenderWorld()
  FlipBuffers()
Wend

Procedure CreatePyramid(Mesh, Width.f, Height.f, SizeTop.f=0)
  Protected Dim MeshData.PB_MeshVertex(0)
  Protected Result = CreateCube(Mesh, Width)
 
  If Mesh = #PB_Any
    Mesh = Result
  EndIf
 
  GetMeshData(Mesh, 0, MeshData(), #PB_Mesh_Vertex | #PB_Mesh_UVCoordinate, 0, MeshVertexCount(Mesh)-1)
 
  ;(3, 10, 16)
  MeshData(3)\x   = -SizeTop/2
  MeshData(10)\x  = -SizeTop/2
  MeshData(16)\x  = -SizeTop/2
  MeshData(3)\z   = SizeTop/2
  MeshData(10)\z  = SizeTop/2
  MeshData(16)\z  = SizeTop/2
  MeshData(3)\y   = Height/2
  MeshData(10)\y  = Height/2
  MeshData(16)\y  = Height/2
 
  ;(6, 11, 19)
  MeshData(6)\x   = -SizeTop/2
  MeshData(11)\x  = -SizeTop/2
  MeshData(19)\x  = -SizeTop/2
  MeshData(6)\z   = -SizeTop/2
  MeshData(11)\z  = -SizeTop/2
  MeshData(19)\z  = -SizeTop/2
  MeshData(6)\y   = Height/2
  MeshData(11)\y  = Height/2
  MeshData(19)\y  = Height/2
 
  ;(7, 14, 18)
  MeshData(7)\x   = SizeTop/2
  MeshData(14)\x  = SizeTop/2
  MeshData(18)\x  = SizeTop/2
  MeshData(7)\z   = -SizeTop/2
  MeshData(14)\z  = -SizeTop/2
  MeshData(18)\z  = -SizeTop/2
  MeshData(7)\y   = Height/2
  MeshData(14)\y  = Height/2
  MeshData(18)\y  = Height/2
 
  ;(2, 15, 17)
  MeshData(2)\x   = SizeTop/2
  MeshData(15)\x  = SizeTop/2
  MeshData(17)\x  = SizeTop/2 
  MeshData(2)\z   = SizeTop/2
  MeshData(15)\z  = SizeTop/2
  MeshData(17)\z  = SizeTop/2
  MeshData(2)\y   = Height/2
  MeshData(15)\y  = Height/2
  MeshData(17)\y  = Height/2
 
  ;(0, 9, 23)
  MeshData(0)\y   = -Height/2
  MeshData(9)\y   = -Height/2
  MeshData(23)\y  = -Height/2
 
  ;(5, 8, 20)
  MeshData(5)\y   = -Height/2
  MeshData(8)\y   = -Height/2
  MeshData(20)\y  = -Height/2
 
  ;(4, 13, 21)
  MeshData(4)\y   = -Height/2
  MeshData(13)\y  = -Height/2
  MeshData(21)\y  = -Height/2
 
  ;(1, 12, 22)
  MeshData(1)\y   = -Height/2
  MeshData(12)\y  = -Height/2
  MeshData(22)\y  = -Height/2
 
  SetMeshData(Mesh, 0, MeshData(), #PB_Mesh_Vertex | #PB_Mesh_UVCoordinate, 0, MeshVertexCount(Mesh)-1)
 
  ProcedureReturn Result
EndProcedure

_________________

➽ Config PureBasic : i3, RAM 4Go, NVidia (1024 Mo), Windows 10 - PB 5.70 LTS
➽ Je papote aussi sur http://purebasic.chat

➽ Sites personnels http://falsam.com & EasySprite.js

➽ Je ne réponds pas aux MP techniques


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 1 message ] 

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 3 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  

 


Powered by phpBB © 2008 phpBB Group | Traduction par: phpBB-fr.com
subSilver+ theme by Canver Software, sponsor Sanal Modifiye