skinning
Clan Afficionado
Inscrit:
19/08/2008 11:44
Post(s): 89
bonjours a tous et merci a ceux du clan qui me répondent

j'ai une petite question à propos du skinning par exemple sur un bras
lorsque j'ai effectuer mon skinning au niveau de l'épaule ça serai arrangeant si certain vertex se déplaceraient plus haut que d'autre
j'aimerai en faite affiner mon skinning manuellement en déplacent les points au cour d'une animation je demande si c'est possible (astuce , je suis preneur)

Contribution le : 30/09/2009 18:23
Créer un fichier PDF de la contribution Imprimer


Re: skinning
OverdOzed
Inscrit:
06/07/2009 18:46
De Lyon
Post(s): 1660
Il existe un Script qui s'appelle Aniscuplt pour ça... en cherchant sur le net du devrait trouver...

Contribution le : 30/09/2009 18:36
_________________
Showreel | Pixels Clay and Noodles

Créer un fichier PDF de la contribution Imprimer


Re: skinning
Blendie
Inscrit:
14/09/2009 12:43
Post(s): 28
salut

Je pense que tu souhaites disposer de shapes correctrices activées par telle ou telle pose. Apparemment il existe un script python qui te permet de le faire. C'est
transfer_shapekey_to_transformed.py

Tu peux voir une video exemple à l'adresse suivante :
http://www.vimeo.com/2322230

c'est "Sculpting shape keys in Blender"

Maintenant, j'ai peut-etre mal interprèté ta demande. Aniscilpt est un outil formidablre pour corriger les silhouette apres baking et selon tel ou tel cadrage, mais viendrait plutot apres la phase de correction par les shapes drivées. A tout hasard je te colle le contenu du script ci apres . Tu l'enregistre avec le nom et l'extension si dessus mentionnée.


#!BPY

# This script transfer the shape from an object (base mesh without
# modifiers) to another object with modifiers (i.e. posed Armature).
# Only two objects must be selected.
# The active object transfers the shape to the other selected
# object (the target), as a new shape key.


import bpy
import time

from Blender import Mathutils
from Blender import Mesh
from Blender import Window
import Blender

iterations = 20
threshold = 1e-6

scene = bpy.data.scenes.active

if scene.objects.selected[0] == scene.objects.active:
active = 0
non_active = 1
else:
active = 1
non_active = 0


ob_1 = scene.objects.selected[non_active]
mesh_1 = ob_1.getData(mesh=1)

ob_2 = scene.objects.selected[active]
mesh_2 = ob_2.getData(mesh=1)



def extractX(ob, mesh):
x = []

for i in range(0, len(mesh.verts)):
v = mesh.verts[i]
x += [Mathutils.Vector(v.co)]

return x

def extractMappedX(ob, mesh):
totvert = len(mesh.verts)

mesh = Mesh.New()
mesh.getFromObject(ob.name)

x = []

# cheating, the original mapped verts happen
# to be at the end of the vertex array
for i in range(len(mesh.verts)-totvert, len(mesh.verts)):
v = mesh.verts[i]
x += [Mathutils.Vector(v.co)]

return x

def applyX(ob, mesh, x, new_shapekey_name):
for i in range(0, len(mesh.verts)):
v = mesh.verts[i]
v.co = x[i]

mesh.update(key=new_shapekey_name)

return x



mesh_1.update()
# If target object doesn't have Basis shape key, create it.
if not mesh_1.key:
ob_1.insertShapeKey()



# Insert new shape key
ob_1.insertShapeKey()

# Get New shape key name
keys_ob_1 = ob_1.data.key.blocks
new_shapekey_name = keys_ob_1[len(keys_ob_1) - 1].name

ob_1.pinShape = True
mesh_1.update(key=new_shapekey_name)



x = extractX(ob_1, mesh_1)
targetx = extractX(ob_2, mesh_2)

for iteration in range(0, iterations):
dx = [[], [], [], [], [], []]

mapx = extractMappedX(ob_1, mesh_1)

# finite differencing in X/Y/Z to get approximate gradient
for i in range(0, len(mesh_1.verts)):
epsilon = (targetx[i] - mapx[i]).length

if epsilon < threshold:
epsilon = 0.0

dx[0] += [x[i] + 0.5*epsilon*Mathutils.Vector([1, 0, 0])]
dx[1] += [x[i] + 0.5*epsilon*Mathutils.Vector([-1, 0, 0])]
dx[2] += [x[i] + 0.5*epsilon*Mathutils.Vector([0, 1, 0])]
dx[3] += [x[i] + 0.5*epsilon*Mathutils.Vector([0, -1, 0])]
dx[4] += [x[i] + 0.5*epsilon*Mathutils.Vector([0, 0, 1])]
dx[5] += [x[i] + 0.5*epsilon*Mathutils.Vector([0, 0, -1])]

for j in range(0, 6):
applyX(ob_1, mesh_1, dx[j], new_shapekey_name)
dx[j] = extractMappedX(ob_1, mesh_1)

# take a step in the direction of the gradient
for i in range(0, len(mesh_1.verts)):
epsilon = (targetx[i] - mapx[i]).length

if epsilon >= threshold:
Gx = list((dx[0][i] - dx[1][i])/epsilon)
Gy = list((dx[2][i] - dx[3][i])/epsilon)
Gz = list((dx[4][i] - dx[5][i])/epsilon)
G = Mathutils.Matrix(Gx, Gy, Gz)

x[i] += G*(targetx[i] - mapx[i])

applyX(ob_1, mesh_1, x, new_shapekey_name)



mesh_1.update(key=new_shapekey_name)
ob_1.pinShape = False


Window.RedrawAll()
Blender.SaveUndoState("Subsurf Fit")

Contribution le : 01/10/2009 09:09
Créer un fichier PDF de la contribution Imprimer


Re: skinning
Fou Furieux du Clan
Inscrit:
10/03/2009 14:34
De Italy
Post(s): 160
salut y a t il quelqu'un qui peut m'expliquer comment faire fonctionner le sript parce que je l'ai mis dans C:\Program Files\Blender Foundation\Blender\.blender\scripts mais ça ne marche pas quand je lance un conseil svp

Contribution le : 26/12/2009 15:53
Créer un fichier PDF de la contribution Imprimer


Re: skinning
Fou Furieux du Clan
Inscrit:
12/01/2009 21:15
Post(s): 267
Comment a tu fait le skinning? automatique?
Tu peut peut être essayé d'assigné ton squelette manuellement pour que ton épaule se plis comme tu veut.

Contribution le : 27/12/2009 11:56
Créer un fichier PDF de la contribution Imprimer


Re: skinning
Fou Furieux du Clan
Inscrit:
10/03/2009 14:34
De Italy
Post(s): 160
je ne comprend pas ce que tu veux me dire en faite j'ai fait le skinning manuellement jusqu'as la tête il ne fallait pas voici le script j'ai mis en rouge le message d'erreur "non active" ci dessous

#!BPY

# This script transfer the shape from an object (base mesh without
# modifiers) to another object with modifiers (i.e. posed Armature).
# Only two objects must be selected.
# The active object transfers the shape to the other selected
# object (the target), as a new shape key.


import bpy
import time

from Blender import Mathutils
from Blender import Mesh
from Blender import Window
import Blender

iterations = 20
threshold = 1e-6

scene = bpy.data.scenes.active

if scene.objects.selected[0] == scene.objects.active:
non active = 0
else:
active = 1
non_active = 0


ob_1 = scene.objects.selected[non_active]
mesh_1 = ob_1.getData(mesh=1)

ob_2 = scene.objects.selected[active]
mesh_2 = ob_2.getData(mesh=1)



def extractX(ob, mesh):
x = []

for i in range(0, len(mesh.verts)):
v = mesh.verts[i]
x += [Mathutils.Vector(v.co)]

return x

def extractMappedX(ob, mesh):
totvert = len(mesh.verts)

mesh = Mesh.New()
mesh.getFromObject(ob.name)

x = []

# cheating, the original mapped verts happen
# to be at the end of the vertex array
for i in range(len(mesh.verts)-totvert, len(mesh.verts)):
v = mesh.verts[i]
x += [Mathutils.Vector(v.co)]

return x

def applyX(ob, mesh, x, new_shapekey_name):
for i in range(0, len(mesh.verts)):
v = mesh.verts[i]
v.co = x[i]

mesh.update(key=new_shapekey_name)

return x



mesh_1.update()
# If target object doesn't have Basis shape key, create it.
if not mesh_1.key:
ob_1.insertShapeKey()



# Insert new shape key
ob_1.insertShapeKey()

# Get New shape key name
keys_ob_1 = ob_1.data.key.blocks
new_shapekey_name = keys_ob_1[len(keys_ob_1) - 1].name

ob_1.pinShape = True
mesh_1.update(key=new_shapekey_name)



x = extractX(ob_1, mesh_1)
targetx = extractX(ob_2, mesh_2)

for iteration in range(0, iterations):
dx = [[], [], [], [], [], []]

mapx = extractMappedX(ob_1, mesh_1)

# finite differencing in X/Y/Z to get approximate gradient
for i in range(0, len(mesh_1.verts)):
epsilon = (targetx[i] - mapx[i]).length

if epsilon < threshold:
epsilon = 0.0

dx[0] += [x[i] + 0.5*epsilon*Mathutils.Vector([1, 0, 0])]
dx[1] += [x[i] + 0.5*epsilon*Mathutils.Vector([-1, 0, 0])]
dx[2] += [x[i] + 0.5*epsilon*Mathutils.Vector([0, 1, 0])]
dx[3] += [x[i] + 0.5*epsilon*Mathutils.Vector([0, -1, 0])]
dx[4] += [x[i] + 0.5*epsilon*Mathutils.Vector([0, 0, 1])]
dx[5] += [x[i] + 0.5*epsilon*Mathutils.Vector([0, 0, -1])]

for j in range(0, 6):
applyX(ob_1, mesh_1, dx[j], new_shapekey_name)
dx[j] = extractMappedX(ob_1, mesh_1)

# take a step in the direction of the gradient
for i in range(0, len(mesh_1.verts)):
epsilon = (targetx[i] - mapx[i]).length

if epsilon >= threshold:
Gx = list((dx[0][i] - dx[1][i])/epsilon)
Gy = list((dx[2][i] - dx[3][i])/epsilon)
Gz = list((dx[4][i] - dx[5][i])/epsilon)
G = Mathutils.Matrix(Gx, Gy, Gz)

x[i] += G*(targetx[i] - mapx[i])

applyX(ob_1, mesh_1, x, new_shapekey_name)



mesh_1.update(key=new_shapekey_name)
ob_1.pinShape = False


Window.RedrawAll()
Blender.SaveUndoState("Subsurf Fit")

Contribution le : 27/12/2009 16:49
Créer un fichier PDF de la contribution Imprimer



 Haut   Précédent   Suivant




Enregistrer votre réponse
Compte*
Nom   Mot de passe   Authentification
Message:*



[Recherche avancée]



Sujets récemment répondus
Forums Sujets Réponses Lus Dernières contributions
[WIP] et travaux terminés [terminé] Wild Landscape - Terminé 8 265 Aujourd'hui 09:53:49
BlendX 
Python & Plugins BlenderGeoAlt - Générer le terrain d'après des coordonnées 0 47 Aujourd'hui 01:52:10
BlendX 
Hors Sujet !! les tutos de Moonboots    [1][2][3]...[17] 163 13096 Hier 18:58:55
moonboots 
Python & Plugins Vegetation addon - tree, animation et plus ! 7 1660 27/07 23:26:14
ferrari6 
Python & Plugins [terminé] City pack Cars pour Blender 2 337 27/07 23:22:24
ferrari6 
Questions & Réponses [non résolu] armature qui suit une autre armature 3 150 27/07 13:27:17
Many 
Graphisme alternatif faire de la bd avec blender    [1][2][3]...[5] 44 2275 27/07 11:04:48
blend74 
Inkscape Créer des fichiers dxf séparé 0 35 27/07 10:01:46
Redstar 
Moteur de jeu GameBlender et alternatives [non résolu] Cs (vaisseau)    [1][2][3]...[54] 539 163645 26/07 20:38:05
sbkodama 
Python & Plugins Mesh Cranium ( base mesh pour la sculpture 3D ) 0 58 26/07 08:52:22
stev 
[WIP] et travaux terminés Visage humain 4 243 26/07 07:08:36
Guilleto 
The Blender Clan 'tchat Les tutos de Stev ( CG Groovy ) 5 634 26/07 06:16:16
stev 
The Blender Clan 'tchat Impact de la compression sur le temps de rendu 0 76 25/07 09:57:17
Bibi09 
Hors Sujet !! un personnage de Blendman :) - Modélisation a partir de cubes 0 139 24/07 20:42:05
meltingman 
Questions & Réponses [résolu] Png et liseré blanc 5 253 23/07 20:56:32
meltingman 
Hors Sujet !! Sinoceratops project - Ateliers suivies de A à l'Animation    [1][2][3] 28 1536 23/07 16:11:40
meltingman 
The Blender Clan 'tchat Avenir du blender clan    [1][2][3]...[26] 256 30084 20/07 20:56:17
Bibi09 
[WIP] et travaux terminés [WIP] sinocératops    [1][2] 10 512 18/07 21:02:55
meltingman 
Le coin des geeks Colorisation, Krita ou Photoshop ?    [1][2] 14 605 18/07 20:50:51
sapajou 
Questions & Réponses Trace de la trajectoire d'un objet 5 257 17/07 18:33:25
moonboots 

Qui est en ligne
167 utilisateur(s) en ligne (dont 113 sur Forums)

Membre(s): 0
Invité(s): 167


plus...
Nouveaux membres

Nemo
11/3/2021
qingjie 10/3/2021
Kask909 9/3/2021
marie-antoinette 7/3/2021
Bugs 7/3/2021
lolorogli75 4/3/2021
Flagiel 4/3/2021
thedeathclown 1/3/2021
Littlespoon 28/2/2021
luxperpetua 27/2/2021
Dernier Ajout
2020-09-24.jpg

Evènements à venir
Aou 4
Anniversaire de xemphra
Aou 7
anniversaire Cem47
Aou 13
Anniversaire Siskas
plus 252 plus d'élément(s)
 Par Mickaël Guédon [ebrain] © 2003-2021 The Blender Clan - hébergé par TuxFamily - Site déclaré à la CNIL sous le numéro 1155445