est-il possible d'habiller automatiquement mon armature sur Blender ? J'ai fait un personnage avec les armatures, maintenant quand je regarde les tuto sur Youtube je voit que je devais faire le personnage d'abord puis placer les armatures, mais je trouve que dans mon cas ce serait plus facile de placer les armature puis habiller est ce possible ?
C'est vraiment pas la démarche la plus simple, et de base il n'y a aucuns outils pour créer un mesh d'après une armature.
Il y a bien ce script que j'ai trouvé sur un autre forum et mis à jour pour Blender 2.92 ci-dessous, mais ça reste peu intéressant et sans aucun contrôle. Il faut donc copier ce code, s'assurer d'avoir ton armature sélectionnée en object mode, ouvrir le script editor, créer un nouveau script, coller le script et l'exécuter avec le bouton play en haut à droite.
Une autre approche serait de en quelques sortes dessinser un squelette à partir d'un mesh en fil de fer et d'utiliser le modifier Skin. Là tu peux non va obtenir quelquechose de plus cohérent, et surtout tu peux contrôler la largeur du mesh généré par le modifier à chaque point du mesh initial.
import bpy
import math
import os
Meshname = "armature_mesh";
def convertVector(v):
return [v.x,v.y,v.z]
def main():
#make sure what we're going to work on is an actual armature.
if bpy.context.active_object.type != 'ARMATURE':
print("Active object must be an armature!!");
return 1;
theArmature=bpy.context.active_object;
#delete any previous attempts
if bpy.data.objects.get(Meshname) is not None:
bpy.ops.object.select_all(action='DESELECT')
bpy.data.objects[Meshname]
bpy.ops.object.delete(use_global=False)
#time to copy the armature to mesh
#define our data containers for the new obj
Verts=[]
Edges=[]
Faces=[]
#select the armature and enter edit mode, and get all the bones.
bpy.context.view_layer.objects.active = theArmature
bpy.ops.object.editmode_toggle()
bpy.ops.armature.select_all(action='SELECT')
bones = bpy.context.selected_bones
#loop through the bones, putting all the coords in the data containers.
for bone in bones :
Verts.append(convertVector(bone.head))
Verts.append(convertVector(bone.tail))
VertID = len(Verts)
Edges.append([VertID-2,VertID-1])
bpy.ops.object.editmode_toggle()
#make the object and add all the data.
mesh=bpy.data.meshes.new(Meshname)
mesh.from_pydata(Verts,Edges,Faces)
newMesh=bpy.data.objects.new(Meshname,mesh)
bpy.context.scene.collection.objects.link(newMesh)
#connect the connected bones by removing doubles
bpy.context.view_layer.objects.active = newMesh
bpy.ops.object.editmode_toggle()
bpy.ops.mesh.select_all(action='SELECT')
bpy.ops.mesh.remove_doubles()
bpy.ops.object.editmode_toggle()
bpy.ops.object.modifier_add(type='SKIN')
main();
Moderateur forum || FAQ 3D || discord 3D francophone || OC Tweak script
Pas d'aide concernant le code par MP, le forum est là pour ça :)
Moderateur forum || FAQ 3D || discord 3D francophone || OC Tweak script