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 à partir de 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 3D (ou avatar) . Chaque création pourra être sauvegarder au format JSON.

■ Un objet est représenté par une liste structurée récursive.

■ Un objet animé est défini par un ensemble de jointures reliés les unes aux autres. Chaque jointure est liée aussi à une structure récursive.

■ Sur chaque jointure, vous ajouterez une ou plusieurs entités simples (Cube, Sphere, etc …) ou des meshes OGRE3D. chaque entité peut être associé à un fichier .material ou à une couleur au format RGB/RGBA ou une texture.

■ Sur chaque jointure, Vous pourrez ajouter une ou plusieurs animations. 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.1683905788.txt.gz · Dernière modification : 2023/05/12 17:36 de falsam