Outils pour utilisateurs

Outils du site


start

Ceci est une ancienne révision du document !


Animator.pbi version 1.20 (15 Avril 2023) Download Animator.zip

:!: Fonctionne uniquement avec PureBasic 6.01

Qu'est ce que Animator.pbi ?

Animator.pbi est un module codé avec le langage PureBasic permettant de créer des objets animés chacun étant au format JSON.

■ Un objet est représenté par la liste structurée récursive NewSkeleton().

■ Un objet animé est défini par un ensemble de joints reliés les uns les autres. Chaque join est lié à la structure récursive NewSkeleton.

■ Sur chaque joint, on peut ajouter une ou plusieurs entité simple (Cube, Sphere, etc …) ou des meshes OGRE3D. chaque entité peut être associé à un fichier .material ou à une couleur ou une texture.

■ Sur chaque joint, on peut ajouter une ou plusieurs animation. Chaque animation est configurée avec une timeline composée de clés définissant la rotation et le déplacement.

Hello world

Nous allons voir comment animer un cube qui monte et qui descend en effectuant une rotation sur l'axe y.

Insérer le module Animator.pbi au début de votre code.

XIncludeFile "Animator110.pbi"
UseModule Animator

Initialiser l'objet animée que vous souhaitez créer.

Define NewList Cube.NewSkeleton()

Insérons un joint au point de coordonnée 0,0,0 sur l'axe x,y,z.

Define j0 = AddJoin(Cube(), "Mon Cube", 0, 0, 0)

Ajouter un cube rouge sur les mêmes coordonnées que le join.

AttachJoinEntity(j0, "Cube", "rgb(255,0,0)", 0,0,0)

C'est le moment de créer une animation pour le join j0 que vous appellerez par exemple “run”. Vous allez pour cela créer un timeline qui sera composé de deux clés : Une première clé pour indiquer au cube qu'il va monter d'une unité et faire une rotation de 90° et une seconde clé pour indiquer au cube qu'il va redescendre tout en continuant sa rotation de 90°.

If CreateJoinAnimation(j0, "run")
  AddJoinKey(j0, "run", 0,90,0, 0,1,0)
  AddJoinKey(j0, "run", 0,90,0, 0,-1,0)
EndIf

Votre animation est terminée. Vous pouvez la sauvegarder.

SaveSkeleton(cube(), "cube.json")

Le code complet.

EnableExplicit
XIncludeFile "Animator110.pbi" : UseModule Animator
 
Define NewList Cube.NewSkeleton()
 
Define j0 = AddJoin(cube(), "Mon Cube", 0, 0, 0)
 
AttachJoinEntity(j0, "Cube", "rgb(255,0,0)", 0,0,0)
 
If CreateJoinAnimation(j0, "run")
  AddJoinKey(j0, "run", 0,90,0, 0,1,0)
  AddJoinKey(j0, "run", 0,90,0, 0,-1,0)
EndIf
SaveSkeleton(cube(), "cube.json")

Voir le résultat

Charger le skeleton.

LoadSkeleton(cube(), "cube.json")

Jouer l'animation “run” avec un framerate de 120 images.

Playanimation(cube(), "run", 120)

Le code complet.

XIncludeFile "Animator110.pbi" : UseModule Animator
EnableExplicit
 
; Initialisation de l'objet ou avatar animé
Define NewList cube.NewSkeleton()
 
; Download du skeleton
LoadSkeleton(cube(), "cube.json")
 
; Rendu dans une scene 3D
InitEngine3D() : InitSprite() : InitKeyboard()
 
OpenWindow(0, 0, 0, 800, 600, "Hello World [Esc : Quitter]", #PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(0), 0, 0, 800, 600, 0, 0, 0)
 
; Lumière
CreateLight(#PB_Any, RGB(255, 255, 255), 100, 100, 0, #PB_Light_Point)
 
; Caméra
CreateCamera(0, 0, 0, 100, 100)
CameraBackColor(0, RGB(218, 165, 32))
MoveCamera(0, 2, 1, -2, #PB_Absolute | #PB_Local)
CameraLookAt(0, 0, 0.5, 0)
 
; Création de l'objet animé
CreateAvatar(cube() )
 
Repeat
  While WindowEvent() : Wend
  ExamineKeyboard()
 
  ; Jouer l'animation "run"
  ; framerate de 120 images pour chaque clé de l'animation 
  Playanimation(cube(), "run", 120)  
 
  RenderWorld()
  FlipBuffers()
Until KeyboardReleased(#PB_Key_Escape)

Cliquez sur la fonctionnalité que vous désirez voir.

start.1681564574.txt.gz · Dernière modification : 2023/04/15 15:16 de falsam