[EN STAND-BY] Plaig4Anims, la solution idéale pour vos animations !
-
Je ne te savais pas aussi compétent Plaigon, en tout cas moi cette API me fait les yeux, c’est très exactement mon domaine d’activité alors je ne peux que te remercier pour la qualité du travail accomplis et à venir
-
Juste un grand whoua, c’est du grand travail comme les autres l’ont déjà dit ^^ Je me rappelle la galère que c’est l’importation d’animations dans
minecraft et de garantir leur stabilité, vraiment un grand bravo
-
Merci beaucoup Tristepin, ton message m’a fait extrêmement plaisir. L’importation d’animations a toujours été une vraie galère, mais Ama semble avoir réussi avant moi, d’ailleurs il n’est pas exclu que la 3.0 inclue une compatibilité avec sa CraftStudio API, je n’en dis pas +

-
Pour ce qui est des items c’est vraiment un aspect différent concernant les importations d’animations de ce type ou pas?
-
Non, aucune différence par rapport aux entités: lire le fichier binaire, l’enregistrer en mémoire (automatique après la lecture) et le dessiner, via IItemRenderer par exemple.
-
Bonjour, bonsoir chers lecteurs,
rapide message pour vous signaler une update du post initial. J’ai complété la rubrique “téléchargements”, malgré un échec au sondage, enfin bon…
La vidéo tuto sortira d’ici 1 ou 2 semaines, avec la v2.0, en attendant la v1.5 vous permettra tout de même d’importer des .mdl, n’hésitez pas à poser vos questions, j’y répondrai
-
J’ai vraiment hâte de voir le tuto
! -
Salut conquerorguepard, content de voir ton message encourageant, mais gardons à l’esprit que patience est mère de sagesse.
Néanmoins, ce temps perdu à attendre n’est pas vain, pour preuve, j’ai fini le week-end dernier l’optimisation de la ram allouée par la lib, afin d’en faire une réduction astronomique, car avec ce modèle (voir screen + bas), j’ai atteint une taille en mémoire 4 fois moins élevée avec le loader v2.0! Ce qui est littéralement et incroyablement bénéfique lorsqu’on souhaite charger plusieurs dizaines d’animations !

-
On pourra animer des models Techne avec ça ? Ou faut refaire les models sur ton logiciel
? -
Non, techne est vieux, il faut passer à autre chose. Si t’es au-delà de la 1.7.10, encore une fois, la lib d’Ama, sera la meilleure option. La mienne sera utile lorsqu’on souhaite importer des animations qu’on a rip d’un jeux video, ou même lorsqu’on sait modéliser sous blender, maya, 3ds max ou autre…
La 3.0 sera peut-être l’occasion de collaborer avec Ama pour exporter les modèles de Craftstudio en mdl, lisible par ma lib, mais je doute que ce soit une priorité dans l’absolue. -
Je sais bien, mais tous les anciens models x) ? J’ai pas envie d’avoir tout à refaire
!
Faudrait tenter de faire un truc pour insérer tout ça par exemple :package net.minecraft.src; public class ModelNew extends ModelBase { //fields ModelRenderer tete; ModelRenderer corps; ModelRenderer jambe_droite_arriere; ModelRenderer jambe_gauche_arriere; ModelRenderer jambe_droite_avant; ModelRenderer jambe_gauche_avant; ModelRenderer queue; ModelRenderer machoire_haute; ModelRenderer machoire_basse; ModelRenderer cou; ModelRenderer Dos; public ModelNew() { textureWidth = 64; textureHeight = 32; tete = new ModelRenderer(this, 10, 18); tete.addBox(-1F, -4F, -3F, 3, 4, 3); tete.setRotationPoint(-1F, 19F, -8F); tete.setTextureSize(64, 32); tete.mirror = true; setRotation(tete, 0F, 0F, 0F); corps = new ModelRenderer(this, 44, 8); corps.addBox(-4F, -7F, -4F, 5, 12, 5); corps.setRotationPoint(1F, 17F, 0F); corps.setTextureSize(64, 32); corps.mirror = true; setRotation(corps, 1.570796F, 0F, 0F); jambe_droite_arriere = new ModelRenderer(this, 0, 19); jambe_droite_arriere.addBox(-1F, 0F, -1F, 2, 5, 2); jambe_droite_arriere.setRotationPoint(-3F, 19F, 2F); jambe_droite_arriere.setTextureSize(64, 32); jambe_droite_arriere.mirror = true; setRotation(jambe_droite_arriere, 0F, 0F, 0F); jambe_gauche_arriere = new ModelRenderer(this, 0, 19); jambe_gauche_arriere.addBox(-1F, 0F, -1F, 2, 5, 2); jambe_gauche_arriere.setRotationPoint(2F, 19F, 2F); jambe_gauche_arriere.setTextureSize(64, 32); jambe_gauche_arriere.mirror = true; setRotation(jambe_gauche_arriere, 0F, 0F, 0F); jambe_droite_avant = new ModelRenderer(this, 0, 19); jambe_droite_avant.addBox(-1F, 0F, -1F, 2, 5, 2); jambe_droite_avant.setRotationPoint(-3F, 19F, -5F); jambe_droite_avant.setTextureSize(64, 32); jambe_droite_avant.mirror = true; setRotation(jambe_droite_avant, 0F, 0F, 0F); jambe_gauche_avant = new ModelRenderer(this, 0, 19); jambe_gauche_avant.addBox(-1F, 0F, -1F, 2, 5, 2); jambe_gauche_avant.setRotationPoint(2F, 19F, -5F); jambe_gauche_avant.setTextureSize(64, 32); jambe_gauche_avant.mirror = true; setRotation(jambe_gauche_avant, 0F, 0F, 0F); queue = new ModelRenderer(this, 0, 1); queue.addBox(0F, 0F, 0F, 1, 2, 12); queue.setRotationPoint(-1F, 16F, 3F); queue.setTextureSize(64, 32); queue.mirror = true; setRotation(queue, -0.2617994F, 0F, 0F); machoire_haute = new ModelRenderer(this, 36, 0); machoire_haute.addBox(0F, 0F, 0F, 3, 2, 4); machoire_haute.setRotationPoint(-2F, 16F, -14F); machoire_haute.setTextureSize(64, 32); machoire_haute.mirror = true; setRotation(machoire_haute, 0.2443461F, 0F, 0F); machoire_basse = new ModelRenderer(this, 23, 19); machoire_basse.addBox(0F, 0F, 0F, 3, 2, 3); machoire_basse.setRotationPoint(-2F, 16.8F, -13.3F); machoire_basse.setTextureSize(64, 32); machoire_basse.mirror = true; setRotation(machoire_basse, -0.0523599F, 0F, 0F); cou = new ModelRenderer(this, 51, 0); cou.addBox(0F, 0F, 0F, 3, 4, 3); cou.setRotationPoint(-2F, 15F, -8F); cou.setTextureSize(64, 32); cou.mirror = true; setRotation(cou, -0.3816453F, 0F, 0F); Dos = new ModelRenderer(this, 26, 10); Dos.addBox(0F, 0F, 0F, 3, 2, 6); Dos.setRotationPoint(-2F, 15F, -3F); Dos.setTextureSize(64, 32); Dos.mirror = true; setRotation(Dos, 0F, 0F, 0F); } public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { super.render(entity, f, f1, f2, f3, f4, f5); setRotationAngles(f, f1, f2, f3, f4, f5); tete.render(f5); corps.render(f5); jambe_droite_arriere.render(f5); jambe_gauche_arriere.render(f5); jambe_droite_avant.render(f5); jambe_gauche_avant.render(f5); queue.render(f5); machoire_haute.render(f5); machoire_basse.render(f5); cou.render(f5); Dos.render(f5); } private void setRotation(ModelRenderer model, float x, float y, float z) { model.rotateAngleX = x; model.rotateAngleY = y; model.rotateAngleZ = z; } public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5) { super.setRotationAngles(f, f1, f2, f3, f4, f5); } }Ainsi, ça pourrait rajouter de l’intérêt à ton Plaig4anim
! On pourrait amener tous les models venant des autres logiciels pour faire les animations sur le tiens 
-
Très propre tous ça
-
Merci Riizn !
Bonne idée conquerorguepard, mais encore une fois ce n’est pas ma priorité pour la v2.0 (voir rubrique “UPCOMING FEATURES”).
En revanche, si je peux te filer un coup de main, je te conseillerai ce petit outil. Il te permettra de convertir tes modèles .tcn (exportés de techne), au format obj. A partir de là, tu n’auras plus qu’à rig ton modèle 3d, à le skin avec sa texture, puis à l’animer et enfin à l’exporter au format mdl, supporté par ma lib. L’outil que je te recommande est 3ds max, je ferai plusieurs tutos d’ici 1 à 2 semaines pour réaliser toutes ces choses-là. En attendant, tu as une noesis, qui te permettra la conversion smd (format d’animation supporté par 3ds max) -> mdl (vieux format supporté par ma lib).
Voilà, n’hésite pas si t’as des questions, je suis dispo
-
Cool merci ;).
Bah grouille pour tes nouvelles versions stp
! Je t’attends pour poursuivre mes mobs moi x).
Que veut dire “rig”? -
Le processus de **rigging **d’un modèle 3d fixe, consiste à découper ses membres articulés afin de faire apparaître une hiérarchie parent>fils. Pour ce faire on utilise des bones qu’on modélise à l’intérieur des meshes, puis on les lies entres-eux via des joints qui définissent les axes de rotation disponibles pour telle articulation.
-
ça veut dire quoi “meshes” et “bones” (hormis os :p).
Par parents fils, grosso modo, c’est lier les membres entre eux ? -
“Meshes” signifie littéralement “forme”. Il s’agit d’un ensembles de polygones constituant le modèle. Et bones c’est l’enveloppe squelettique “caché” sous les meshes et permettant l’animation.
La hiérarchie des bones pourrait s’apparenter à ton épaule, qui est parent de ton bras, puis de ton avant-bras, puis de ta main, puis enfin de tes doigts. Ainsi quand l’épaule subit une orientation, il y a un effet de conséquence à l’ensemble des fils. -
#PRISE EN MAIN(PRISE EN MAIN)
Nouvelle section (26/02/2018)
Dans ce mini-tutoriel, nous aborderont uniquement l’insertion complète (lecture, gestion en mémoire et rendu) du modèle au format .mdl dans Minecraft.
De ce fait, j’exclurai partiellement la partie “Modélisation” sous 3ds Max. Voici néanmoins deux, trois conseils pour ceux qui s’y intéresseraient:-
Si vous débutez dans la modélisation, sachez qu’il serait judicieux d’avoir quelques bases avec le software 3ds max (raccourcis claviers, modélisation avec un blueprint, scale/translate/rotate, connaissance des principaux modiifiers, etc…).
-
Une fois votre modèle finie, vous devrez export l’uv map, et la remplir. Voici le parfait tutoriel concernant cette tâche
-
C’est bon! Vous pouvez désormais vous applaudir, le plus dur vient d’être fait, il ne vous reste plus qu’à découper votre modèle, mais vous verrez c’est très facile !
Pour découper votre modèle, la solution la + simple sera de le rig, c’est-à-dire de lui créer son enveloppe squelettique. Ensuite vous devrez appliquer le processus de “finning”, puis ensuite “attacher” le bone à sa mesh dans laquelle il est “caché”, où pour faire court skin le modèle 3D. Ces 3 étapes sont d’une longueur relative à la “taille” du modèle. J’ai moi même appris par une suite de vidéos tutoriels, la première ici. -
Une fois fait, le reste ne sera que du plaisir, à savoir animer le tout ! Voilà une petite vidéo vous montrant 2 types d’animation sur 3ds max. Enfin une vidéo bonus vous montrant l’animation par suivi de trajectoire. Petit bonus: je vous mets ici à disposition un steve tout prêt à être animer, c’est cadeau !
A quoi ressemble-t-il ?

-
Une fois votre animation complètement finie, vous exporterez le modèle au format fbx. Et vous placerez ce dernier + ses textures associées dans un même dossier.
-
Enfin, la dernière étape avant la partie “code” sera de convertir le modèle du format .fbx vers .mdl. Pour ce faire vous téléchargerez noesis, que je vous mets à disposition ici, puis vous découvrirez par vous-même, c’est très intuitif ! Vous aurez sûrement un souci d’orientation du modèle une fois convertie, pas d’inquiétude, Noesis met à disposition une petite centaine de commande, tel que “rotate x y z”, comme le montre ce screen:

Une petite information additionnelle, où je vous propose de télécharger ce petit software nommé “qme31”, qui vous permet de charger vos animations .mdl, afin de vous assurer qu’elles sont prêtes à être rendue ! De plus, vous pourrez afficher les caractéristiques de votre modèle, en allant sur l’onglet View, puis model properties. La fenêtre ressemblera à ceci, s’offrant une organisation en plusieurs catégories (bounds, skin, eye position, etc…):

Voici son lien de téléchargement
[PARTIE CODE EN RÉDACTION…]
(demande par MP pour les instructions à suivre au niveau du code) -
-
Bonjour à tous et à toutes, nouvelle annonce, les sources sont désormais disponibles à cette adresse de téléchargement
EDIT: lien du repo: https://github.com/Plaigon/Plaig4Anims -
bon pour les models j’ai trouvé le truc qui nous interesse(Techne depassé il faut convertir)
https://www.minecraftforum.net/forums/mapping-and-modding-java-edition/mapping-and-modding-tutorials/2473522-convert-your-tabula-and-techne-models-to-wavefront