• Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
    Dedicated community for Japanese speakers
  • 한국 커뮤니티
    Dedicated community for Korean speakers
Exit
0

Blendshap Support For Facial Animations

Community Beginner ,
Jan 04, 2023 Jan 04, 2023

Copy link to clipboard

Copied

When are we going to get Blendshap Support For Facial Animations?

TOPICS
Feature request

Views

179

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Adobe Employee ,
Jan 05, 2023 Jan 05, 2023

Copy link to clipboard

Copied

Hi @Mia21926898f70t Belendshapes are on the radar, but I do not have a date for you at this time. I will updated you here when I have more information. Thanks

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Apr 13, 2023 Apr 13, 2023

Copy link to clipboard

Copied

LATEST

Know this isn't an ideal solution but I just figured out a way around this. In blender, create an armature with a bone at every vertex of your mesh with copy location constraints to the respective vertex. Bake the action of the bones as they follow your shapekey animation, then parent the mesh to the armature. I haven't tested too extensivly but this first test works well - about 500verts and 500bones -> https://adobeaero.app.link/bVm2Jy9qYyb

 

Here's a script that automates the bone creation and the constraint creation

import bpy

mesh_object = bpy.context.active_object
mesh_object.name = "MyMesh"

# Create an armature object
bpy.ops.object.armature_add()
armature_object = bpy.context.active_object
armature_object.name = "MyArmature"
armature = armature_object.data

# Enter Edit mode on the armature
bpy.context.view_layer.objects.active = armature_object
bpy.ops.object.mode_set(mode='EDIT')

# Iterate through each vertex in the mesh
mesh = mesh_object.data
for vert in mesh.vertices:
# Create a bone for each vertex
bone = armature.edit_bones.new("Bone_" + str(vert.index))
# Set the bone's head and tail to the vertex location
bone.head = vert.co

# Set the bone's roll to align with the vertex normal
bone.roll = vert.normal.angle((0, 0, 1))

# Exit Edit mode on the armature
bpy.ops.object.mode_set(mode='OBJECT')

# Create a vertex group for each vertex in the mesh
mesh = mesh_object.data
for vert in mesh.vertices:
# Create a vertex group for the vertex
vg = mesh_object.vertex_groups.new(name="Vertex_" + str(vert.index))
# Add the vertex to the vertex group
vg.add([vert.index], 1.0, 'REPLACE')

# Clear existing bone constraints
bpy.ops.object.mode_set(mode='POSE')
bpy.ops.pose.select_all(action='SELECT')
bpy.ops.pose.constraints_clear()

# Add a Copy Location constraint to each bone of the armature
for pose_bone in armature_object.pose.bones:
bone_name = pose_bone.name
vertex_group_name = "Vertex_" + bone_name.split("_")[-1]

# Check if the vertex group exists in the mesh
if vertex_group_name in mesh_object.vertex_groups:
# Create a Copy Location constraint for the bone
constraint = pose_bone.constraints.new('COPY_LOCATION')
constraint.name = "Copy Location: " + bone_name
constraint.target = mesh_object
constraint.subtarget = vertex_group_name

 

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines