| Microbe3D: Micro Moteur 3D pour les fichiers
Wavefront .OBJ utilisant Warp3D
Microbe3D.library: Alain Thellier - Paris - FRANCE - 2011-2013 |
| Microbe3D est une couche
par dessus Warp3D. Ce qui permet de simplifier
l'utilisation de la 3D |
|
Pourquoi Microbe3D? Microbe3D est un petit moteur 3D qui affiche directement des fichiers Wavefront .OBJ MICROBE3D veut dire "MICRo .OBj Engine for warp3D" (Micro Moteur Warp3D pour fichiers .OBJ) La philosophie générale est "Faire
simple et toujours plus simple"
|
Un modèle d’objet 3D sous OS 4 avec plusieurs éclairages
MICROBE3D Implémentation des Bones/Skins (développment en cours sept 2013)
Exemple sur partygirl.obj
Définition des bones dans Excel avec retour visuel sur image
de face et coté
(graph points)
Par exemple un « bone » sera défini entre
« Coude » et « Poignet »
Visualisation des « bones » en rouge
Chaque bone est défini par 2 points (exemple « coude »
à « poignet ») et une
distance à ce segment nommé « BONE->radius »
= rayon
Ces 2 points et ce rayon définissent donc un « cylindre
» englobant le bone
Grace à l’algo de Fab tout les points de la « Skin »
compris dans le cylindre
rouge (exemple « coude » à « poignet »)
sont affecté au BONE (« coude »)
Modèle de base et cylindres des bones :
Après les « Instance »s de Microbe3D (cad des axes)
permettent de bouger les
bones :
Modèle récent à 21 bones y compris pouce,orteils,tete
Torse
Cou
Tete
EpauleG
CoudeG
PoignetG
DoigtsG
PouceG
HancheG
GenouG
ChevilleG
OrteilsG
EpauleD
CoudeD
PoignetD
DoigtsD
PouceD
HancheD
GenouD
ChevilleD
OrteilsD
Resultat une fois tout les bones déplacés (remarquer le
cou, les mains et le
bout des pieds)
Modeles Anciens à 14 bones (pieds et mains sans bones)
Hierarchie des 14 bones et ancienne représentations des bones
(triangles)
Jolie pose « je suis une fille rebelle j’ai des grosse bottes
» mais bug à
l’entrecuisse & Epaule droite
Erreur sur Epaule droite mais jolie pose ‘oui j’aurai pu faire de la
danse
classique »
A FAIRE
Partage de force entre 2 bones = articulation souple (implémenté
à bogue)
Gestion des amplitudes (limiter les positions possibles pour bone =
pas
contorsionniste) (implémenté à tester)
Definition de l’axe « naturel » du Bone (à faire)
Eclairage gestion des vertex-normales dans ce cas (à faire =
gros morceaux…
nombreux problèmes théoriques)
Alain Thellier – 2013
ATTENTION: ne pas tester vanille.bon devant votre femme ;-)
Partage de force - Théorie du fonctionnement
Toujours plus souple la PartyGirl (noter la jonction souple bassin-torse)
Il existe 2 nouveaux concept dans Microbe3D
Les Bones
Les Skins
Les bones sont des articulations créées à l'intérieur
d'un même objet 3D
Ces articulations s'appliquent à une partie de l'objet qui bouge
avec le bone comme un peau.
Il s'agit en fait d'une liste de points à qui on applique le
mouvement de l'articulation
Exemple: soit un objet3D humain
On définit 3 axes : épaule, coude, poignet
Le bone "bras" est de epaule à coude
Le bone "avantbras" est de coude à poignet
Les points les plus proches de "bras" sont affectés à
la skin de "bras"
Les points les plus proches de "avantbras" sont affectés à
la skin de "avantbras"
(ici intervient aussi BONE->radius le rayon du cylindre définissant
le bone)
Si on procéde simplement ainsi l'articulation aura la forme d'une
cassure comme un bout de bois cassé et sera pas souple comme un
tuyau de caoutchouc
Donc j'ai ajouté le partage de force: un partie du bras est
déformée (=le coude) par le mouvement du bras et de l'avant
bras
Néanmoins la plupart des articulations humaines sont assez raides
ce sont pas des bras de poulpe donc il faut limiter ce partage
Ainsi le coude déforme les 5 dernier cm du bras et les 5 premiers
cm de l'avant bras
J'ai mis ce ratio en pourcentage : les 20 derniers % du bras et les
20 premiers % de l'avant bras donc 0.8 et 0.2
J'appelle ces valeurs BONE->min (généralement 0.2)
BONE->max (généralement 0.8)
Une articulation raide = 0.1 et 0.9 ou souple = 0.4 0.6
Fichiers .BON
Désormais on peut affecter des Bones/skins à un Objet
3D soi même
Deux exemples: PartyGirl.Bon et vanille.bon
Et les fichiers Excel pour poser les axes
Syntaxe:
Read vanille/vanille_nude.objCharge le fichier objet 3D sur lequel on va créer des Bones/skins
BoneAxis Bassin 0.00 0.09 0.00BoneAxis définit les axes (articulations) des Bones mais aussi leur point extrémité
BoneAxis EpauleG 0.17 0.63 -0.03
BoneAxis CoudeG 0.35 0.44 -0.03
BoneAxis PoignetG 0.56 0.24 -0.03
Bone Bassin Scene Bassin Torse
BoneInfluence 0.25 0.2 0.21
BoneRmax 180.0 180.0 180.0
BoneRmin -180.0 -180.0 -180.0Bone BrasG Torse EpauleG CoudeG
BoneInfluence 0.065 0.2 0.8
BoneRmax 130.0 85.0 55.0
BoneRmin -80.0 -60.0 -100.0
Bone crée un nouveau Bone
BoneInfluence definit quel point seront dans le bone et le partage
de force
BoneRmax et BoneRmin donnent l'amplitude du mouvement de rotation d'un
Bone
Bone BrasG Torse EpauleG CoudeGBrasG est le nouveau bone
Bone Bassin Scene Bassin TorseBoneParent peut être "Scene" si pas de Bone parent
Bone Torse Parent Torse Tete
Bone Tete Parent Tete Crane
BoneInfluence 0.065 0.2 0.8Definit radius min max pour ce Bone
Voilà , Convaincu mon gars ?
Alain Thellier – 2013