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
The Blender Clan 'tchat Impact de la compression sur le temps de rendu 0 17 Aujourd'hui 09:57:17
Bibi09 
[WIP] et travaux terminés Visage humain 3 173 Hier 20:52:10
meltingman 
Hors Sujet !! un personnage de Blendman :) - Modélisation a partir de cubes 0 27 Hier 20:42:05
meltingman 
Hors Sujet !! les tutos de Moonboots    [1][2][3]...[17] 160 12742 Hier 17:22:37
moonboots 
Questions & Réponses [résolu] Png et liseré blanc 5 185 23/07 20:56:32
meltingman 
Hors Sujet !! Sinoceratops project - Ateliers suivies de A à l'Animation    [1][2][3] 28 1399 23/07 16:11:40
meltingman 
Questions & Réponses [non résolu] armature qui suit une autre armature 2 68 23/07 16:05:53
meltingman 
The Blender Clan 'tchat Avenir du blender clan    [1][2][3]...[26] 256 29712 20/07 20:56:17
Bibi09 
Graphisme alternatif faire de la bd avec blender    [1][2][3]...[5] 43 2040 20/07 20:31:31
blend74 
[WIP] et travaux terminés Mission sur Mars - Terminé 5 179 19/07 11:41:42
BlendX 
[WIP] et travaux terminés [WIP] sinocératops    [1][2] 10 401 18/07 21:02:55
meltingman 
Le coin des geeks Colorisation, Krita ou Photoshop ?    [1][2] 14 472 18/07 20:50:51
sapajou 
Questions & Réponses Trace de la trajectoire d'un objet 5 194 17/07 18:33:25
moonboots 
Questions & Réponses Problème intersect boolean 5 206 16/07 15:40:44
Altasien 
Questions & Réponses Artefacts de verre sous Eevee 7 224 14/07 15:58:03
moonboots 
[WIP] et travaux terminés Anatomie open source dans Blender 5 647 14/07 07:26:06
Melodicpinpon 
[WIP] et travaux terminés modelisation et animation de petits persos    [1][2][3][4] 32 1294 12/07 19:21:52
blend74 
Questions & Réponses [résolu] Séparer les objets crées avec Miroir. 2 194 10/07 16:30:26
Papy_Octet 
Hors Sujet !! Adieu Audacity, bonjour Tenacity    [1][2] 17 578 08/07 14:55:48
Redstar 
Questions & Réponses [résolu] Array : modification de dimensions entre des pièces copiées ? 8 539 07/07 18:55:22
JaAlVir657 

Qui est en ligne
94 utilisateur(s) en ligne (dont 69 sur Forums)

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


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