ive been searching for a tool like this for years!!! this helped out on a recent project i was gonna transfer shapes between but didnt wanna have to remember all positions of each individual polygon, this saved so much time
I wanted to take a moment to thank you for creating such a useful Blender add-on! It has made a big difference in my workflow, and I truly appreciate the time and effort you've put into developing it. Your work is incredibly valuable to the community. Thanks again!
I just watched a video of yours from 2 years ago where you explained how the big vfx industries actually work, and at the end you talked a bit about how to get a job there. You said talent and a good portfolio are the most important things. Maybe a video about the fundamentals of a great portfolio for the big industry, and what makes it stand out from others, and the generalist vs specialist thing, etc... Also, been watching you for a while now and love all your videos!
It’s very simple. Is the work you are presenting perfect? If not, if you can make it better, then do it. Would you hire yourself with such a portfolio? Could your stuff be on a TV show or a feature film?
@@BlenderBob Hey there. It s absolutly nice. one Question: do this work in Blender 2.79 ? because i do not want to work with this new "not blender anymore" ugly thing. It s just to much changed, i do not want to spend Months of my lifetime, to get the same Result i can have in 2.79 there i can do a lot of things. and: how to "install" this ? Any help here ? best Greetings :) And : Thank you in every case,doing this for free!
@@BlenderBobQuestion awnsered, no 2.79 support :( SyntaxError: invalid syntax Traceback (most recent call last): File "C:\Program Files (x86)\Blender Foundation\Blender\2.79\scripts\modules\addon_utils.py", line 331, in enable mod = __import__(module_name) File "C:\Users\.........\AppData\Roaming\Blender Foundation\Blender\2.79\scripts\addons\transferShapeKeysAddon.py", line 59 self.report({'ERROR'}, f"'{source_object.name}' does not have shape keys.") ^ SyntaxError: invalid syntax addon_utils.disable: transferShapeKeysAddon not disabled. hm.
Also... THANK YOU SO MUCH!!! that's amazing. I'm working with premade models and the rigging sofeware I'm using removes all shape keys for some reason.. this saved me HOURS of work :') you should make a video about how you made the plugin with chatgpt if you already haven't. anyway THANK YOU SO MUCH!!!
feature request: copy the driver dependencies as well. this script helps me already loads. but if i could copy all the drivers at the same time it would save me days ins character creation
On subscribers: you need to get some exposure on other popular Blender channels. I suggest a collab. After all, I didn't even know your channel existed until Donut Boy mentioned it in his newsletter. (I call Blender Guru 'Donut Boy' out of nothing but respect for his excellent donut-based Belnder tutorials, which he updates with every new version - and I can never remember his real name).
Thanks for sticking around, people come and go but the things you make and show will change people's lives forever. Keep it up my dude!! I love the way you think. Also, what version does you Add-on work with? Blender 3.4.6 is the one I'm hoping to use it with.
@@BlenderBob Will do. But first I need to finish the rest of the Sliders in another program, than I'll test it out by pushing it onto the original model with all the back loaded textures. [Don't worry, I'm talking about the model that has the bass materials and no Shape Keys, to put it simply it'd be the one I want the Shape Keys on].
I love you.. you know how you need to have a character in a T pose to use mocap stuff effectively? yeah..I already had spent a lot of time with facial shapekeys before realising..we cant apply armature modifiers to objects with shapekeys..got a work around using this . Thanks
Thank you for this addon, it doesn't work as I need but thanks anyways! : ) Does anyone know of an addon that lets me copy a select few shapekeys between models Instead of all of them?. And also this addon seems to require the mesh geometry to be perfectly similar since I tried it on my more complex meshes and got a lot of artifacts, even tho both meshes should be at least 95% similar. Also also it seems to destroy the keys for the target mesh and turns them all to 0 for some reason :D
There were some errors in 4.1 -> bl_info = { "name": "Shapekey Copy", "blender": (2, 80, 0), "category": "Tool", "author": "Blender Bob, Chat GPT", } import bpy from bpy.props import PointerProperty class ShapekeyTransferPanel(bpy.types.Panel): bl_label = "Shapekeys Copy" bl_idname = "PT_ShapekeyTransfer" bl_space_type = 'VIEW_3D' bl_region_type = 'UI' bl_category = 'Tool' def draw(self, context): layout = self.layout layout.prop_search(context.scene, "shapekey_source", context.scene, "objects", text="Source") layout.prop_search(context.scene, "shapekey_target", context.scene, "objects", text="Target") layout.operator("object.shapekey_transfer", text="Copy") class ShapekeyTransferOperator(bpy.types.Operator): bl_idname = "object.shapekey_transfer" bl_label = "Transfer Shapekeys" bl_description = "Transfer shapekeys from source to target object" bl_options = {'REGISTER', 'UNDO'} def execute(self, context): source_object = context.scene.shapekey_source target_object = context.scene.shapekey_target if source_object is None or target_object is None: self.report({'ERROR'}, "Please select both source and target objects.") return {'CANCELLED'} # Check if the source object has shape keys if not source_object.data.shape_keys: self.report({'ERROR'}, f"'{source_object.name}' does not have shape keys.") return {'CANCELLED'} # Make the target object the active object bpy.context.view_layer.objects.active = target_object # Create shape keys on the target object to match those on the source object for key in source_object.data.shape_keys.key_blocks: if target_object.data.shape_keys is None: bpy.ops.object.shape_key_add(from_mix=False)
# Check if the shape key already exists on the target object if key.name not in target_object.data.shape_keys.key_blocks: bpy.ops.object.shape_key_add(from_mix=False) target_object.data.shape_keys.key_blocks[-1].name = key.name # Set the value of the shape key to 1 target_object.data.shape_keys.key_blocks[key.name].value = 1.0 # Copy vertex positions from source object's shape key to target object's shape key for vert_src, vert_tgt in zip(key.data, target_object.data.shape_keys.key_blocks[key.name].data): vert_tgt.co = vert_src.co # Set the values of all shape keys on the target object to 0 for key in target_object.data.shape_keys.key_blocks: key.value = 0.0 self.report({'INFO'}, f"Shape keys copied from '{source_object.name}' to '{target_object.name}'. All shape key values set to 0.") return {'FINISHED'} def register(): bpy.utils.register_class(ShapekeyTransferPanel) bpy.utils.register_class(ShapekeyTransferOperator) bpy.types.Scene.shapekey_source = PointerProperty(type=bpy.types.Object, name="Source Object") bpy.types.Scene.shapekey_target = PointerProperty(type=bpy.types.Object, name="Target Object") def unregister(): bpy.utils.unregister_class(ShapekeyTransferPanel) bpy.utils.unregister_class(ShapekeyTransferOperator) del bpy.types.Scene.shapekey_source del bpy.types.Scene.shapekey_target if __name__ == "__main__": register()
I'm going to try this, but I'm wondering if this will also copy the drivers. My problem is that I want to change the resting pose, but I can't do that until I get rid of the shape keys with drivers. I can't just apply them permanently and lose them. So I want to duplicate a compelex model, delete the keys, apply the armature duplicate, then set the new resting pose. Then pull the old shape keys back.
@@BlenderBob I know how to apply and clear all the shape keys. The problem is that they're driven and can't be applied to most of the poses. Elbows for example would stick out a lot with a sharp corner.
thanks for this. I was able to copy the shape keys from one object to another. I'm copying mouth animation though -- is there a way to copy the shape key values, or shape key keyframes from one object to the other?
Thank you so much for this! One problem I am running into is when I copy the shape keys from one object to another, the second object moves location to the same place as the first object. Do you know of a way I can fix this? Edit: Nevermind I just figured it out! I needed to set the origins of the objects to their geometry first.
Really great script, but it somehow doesn't work for me. It just move target head in position of source head and change base shape target to source. It's abolutely same as just duplicate source head, but I just want to copy facial expression between heads with different shapes, but same topology. What I do wrong? Look like for me only work: "Object data property" - "Shape keys"(name of panel) - Tranfer shape key (under "arrow down" button). But it only copy one shape key in one time. Your tool looking amazing, but somehow it just move target to source position and did absolutely same shape. I tried create "Basis" shape for target face and after that copy shapekeys... but when I check shapekeys, all these shapekeys move head to source head position. Oh... sorry for my English, hope someone found soulution for that issue. I tried on Blender 4.0.2
doesnt seem to work correctly for me. Im trying to transfer shapekeys from a human body to some underwear. I did the thing with Basis & Original shapekey (without the original the underwear moves to the fingers like some sort of shrinkwrap mod) None of the shapekeys transfer over, only the original one works and sends the underwear back to its supposed position.
@@BlenderBobAh i see nevermind then. I just remembered that i already had a shapekey transfer add on that can do that, its from Royal Skies, also here on youtube.
Looks very interesting, definitely something i may need. Just trid to run the script in blender's text editor, and i don't think it worked. Would it be possible to get this as a proper addon in a zip?
@@BlenderBob I have the latest version of blender (4.2.3 LTS) I just tried copying the script from dropbox and put it into the text editor but nothing happened when i hit enter, so i tried putting it in a text file and saving it as a .py file, then dragging it into blender, but i don't see any side panels that have the name of the adon. Hopefully they'll approve it for the extensions site.
Bob, you're a f * * * ing wizard, I'm f * * * ing as it should be > 1 month ago video "Copy shape keys from one object to another in Blender" I'll follow you from all fake accounts, thank you
If they have the exact same topology only. But if you have a male and a female character it’s not going to create the facial key shapes from one model to another. It will morph the male to female or the opposite
ive been searching for a tool like this for years!!! this helped out on a recent project i was gonna transfer shapes between but didnt wanna have to remember all positions of each individual polygon, this saved so much time
This helps a lot. This will save me the trouble of having to redo some shape keys. Hours saved
I find your youtube videos brillient. i dont know why people no longer subscribe. Thank you for sharing your knowledge and time.
YOU SAVED ME A LOT OF TIME!!!!! He deserves more recognition...
You're welcome!
I wanted to take a moment to thank you for creating such a useful Blender add-on! It has made a big difference in my workflow, and I truly appreciate the time and effort you've put into developing it. Your work is incredibly valuable to the community.
Thanks again!
Thank you so much
Thank you! I just added it to Blender 4.2 and it is working like a charm!
Oh man, thank you very much. This literally saved a project here in the company!
Cool! I’ll wait for my 10% check in the mail! ;-)
@@BlenderBob Oh boy... don't worry..haha
A big thank you from France. Really very useful addon !
Bienvenue!
@@BlenderBob 😊
I just watched a video of yours from 2 years ago where you explained how the big vfx industries actually work, and at the end you talked a bit about how to get a job there. You said talent and a good portfolio are the most important things. Maybe a video about the fundamentals of a great portfolio for the big industry, and what makes it stand out from others, and the generalist vs specialist thing, etc... Also, been watching you for a while now and love all your videos!
It’s very simple. Is the work you are presenting perfect? If not, if you can make it better, then do it. Would you hire yourself with such a portfolio? Could your stuff be on a TV show or a feature film?
@@BlenderBob Hey there. It s absolutly nice. one Question: do this work in Blender 2.79 ?
because i do not want to work with this new "not blender anymore" ugly thing. It s just to much changed,
i do not want to spend Months of my lifetime, to get the same Result i can have in 2.79 there i can do a lot of things.
and:
how to "install" this ?
Any help here ?
best Greetings :) And : Thank you in every case,doing this for free!
@@BlenderBobQuestion awnsered, no 2.79 support :(
SyntaxError: invalid syntax
Traceback (most recent call last):
File "C:\Program Files (x86)\Blender Foundation\Blender\2.79\scripts\modules\addon_utils.py", line 331, in enable
mod = __import__(module_name)
File "C:\Users\.........\AppData\Roaming\Blender Foundation\Blender\2.79\scripts\addons\transferShapeKeysAddon.py", line 59
self.report({'ERROR'}, f"'{source_object.name}' does not have shape keys.")
^
SyntaxError: invalid syntax
addon_utils.disable: transferShapeKeysAddon not disabled.
hm.
Also... THANK YOU SO MUCH!!! that's amazing. I'm working with premade models and the rigging sofeware I'm using removes all shape keys for some reason.. this saved me HOURS of work :')
you should make a video about how you made the plugin with chatgpt if you already haven't. anyway THANK YOU SO MUCH!!!
Glad I could help.
feature request: copy the driver dependencies as well.
this script helps me already loads. but if i could copy all the drivers at the same time it would save me days ins character creation
Maybe if I find the time.
Simple and Very useful, thank you very much!
Finally Free addon (most of addons about this require payment in dollars and i am russian who have only rubles)
On subscribers: you need to get some exposure on other popular Blender channels. I suggest a collab. After all, I didn't even know your channel existed until Donut Boy mentioned it in his newsletter. (I call Blender Guru 'Donut Boy' out of nothing but respect for his excellent donut-based Belnder tutorials, which he updates with every new version - and I can never remember his real name).
Yes, 'Donut Boy' is his real name but his online persona is as Andrew Price. It's just a coincidence that he makes donut videos.🙃
this is an amazing plugin! thank you for sharing this! you saved my life better!
I'll be damned! :) Creative problem solving!!!! Happy Xmas!
This is Amazing! 10 out of 10 blender monkeys!
Maybe it's just the weird you tube algorithm hiding your channel 😮 subscribed keep on the great work 🎉
Thanks and Happy Christmas Bob
Thanks but today is not Christmas, it’s my birthday. :-)
Thank you very much sir! I’m very appreciate your shared in this video.This one save my time!
Thank you good sir.
Thanks man, you just saved my life with this haha
Thank you! Very helpful
Why doesn't bleeder have this function more openly available?
THANK YOU SOOOOOOOOOO MUCH😭💙
Well Done!
Great work, thank you for this. 👏
Thanks a lot!
Thanks for sticking around, people come and go but the things you make and show will change people's lives forever.
Keep it up my dude!! I love the way you think.
Also, what version does you Add-on work with? Blender 3.4.6 is the one I'm hoping to use it with.
Should work on all versions. Try it and tell me if it doesn’t
@@BlenderBob
Will do. But first I need to finish the rest of the Sliders in another program, than I'll test it out by pushing it onto the original model with all the back loaded textures. [Don't worry, I'm talking about the model that has the bass materials and no Shape Keys, to put it simply it'd be the one I want the Shape Keys on].
This is Gold my friend. Thank you so much
Thank you! Just what I needed.
This is just BRILLIANT!!!!!!!! THANKS A LOT!!!!!!!
This is so useful, thanks for this! Subscribed! :D
I love you.. you know how you need to have a character in a T pose to use mocap stuff effectively? yeah..I already had spent a lot of time with facial shapekeys before realising..we cant apply armature modifiers to objects with shapekeys..got a work around using this . Thanks
C’est made of for pretty much the same reason.
excellent! thanks!
still here from the early days ;O)
Thank you for this addon, it doesn't work as I need but thanks anyways! : )
Does anyone know of an addon that lets me copy a select few shapekeys between models Instead of all of them?.
And also this addon seems to require the mesh geometry to be perfectly similar since I tried it on my more complex meshes and got a lot of artifacts, even tho both meshes should be at least 95% similar. Also also it seems to destroy the keys for the target mesh and turns them all to 0 for some reason :D
This is very helpful!! thank s lot man, Sub!!!
Never left buddy 😅
Do we have to be programmers to get this addon? All I see is code.
Install it like any other addon.
@@BlenderBob ah now i see it, thank you : ) Wish there was an option to only copy over 1 or 2 shape keys tho : / hmm
thanks dad
Thank you! It works. How to copy a shape key that has a driver?
It should copy the keyshape but not the driver. Not designed for that.
Thanks u
There were some errors in 4.1 -> bl_info = {
"name": "Shapekey Copy",
"blender": (2, 80, 0),
"category": "Tool",
"author": "Blender Bob, Chat GPT",
}
import bpy
from bpy.props import PointerProperty
class ShapekeyTransferPanel(bpy.types.Panel):
bl_label = "Shapekeys Copy"
bl_idname = "PT_ShapekeyTransfer"
bl_space_type = 'VIEW_3D'
bl_region_type = 'UI'
bl_category = 'Tool'
def draw(self, context):
layout = self.layout
layout.prop_search(context.scene, "shapekey_source", context.scene, "objects", text="Source")
layout.prop_search(context.scene, "shapekey_target", context.scene, "objects", text="Target")
layout.operator("object.shapekey_transfer", text="Copy")
class ShapekeyTransferOperator(bpy.types.Operator):
bl_idname = "object.shapekey_transfer"
bl_label = "Transfer Shapekeys"
bl_description = "Transfer shapekeys from source to target object"
bl_options = {'REGISTER', 'UNDO'}
def execute(self, context):
source_object = context.scene.shapekey_source
target_object = context.scene.shapekey_target
if source_object is None or target_object is None:
self.report({'ERROR'}, "Please select both source and target objects.")
return {'CANCELLED'}
# Check if the source object has shape keys
if not source_object.data.shape_keys:
self.report({'ERROR'}, f"'{source_object.name}' does not have shape keys.")
return {'CANCELLED'}
# Make the target object the active object
bpy.context.view_layer.objects.active = target_object
# Create shape keys on the target object to match those on the source object
for key in source_object.data.shape_keys.key_blocks:
if target_object.data.shape_keys is None:
bpy.ops.object.shape_key_add(from_mix=False)
# Check if the shape key already exists on the target object
if key.name not in target_object.data.shape_keys.key_blocks:
bpy.ops.object.shape_key_add(from_mix=False)
target_object.data.shape_keys.key_blocks[-1].name = key.name
# Set the value of the shape key to 1
target_object.data.shape_keys.key_blocks[key.name].value = 1.0
# Copy vertex positions from source object's shape key to target object's shape key
for vert_src, vert_tgt in zip(key.data, target_object.data.shape_keys.key_blocks[key.name].data):
vert_tgt.co = vert_src.co
# Set the values of all shape keys on the target object to 0
for key in target_object.data.shape_keys.key_blocks:
key.value = 0.0
self.report({'INFO'}, f"Shape keys copied from '{source_object.name}' to '{target_object.name}'. All shape key values set to 0.")
return {'FINISHED'}
def register():
bpy.utils.register_class(ShapekeyTransferPanel)
bpy.utils.register_class(ShapekeyTransferOperator)
bpy.types.Scene.shapekey_source = PointerProperty(type=bpy.types.Object, name="Source Object")
bpy.types.Scene.shapekey_target = PointerProperty(type=bpy.types.Object, name="Target Object")
def unregister():
bpy.utils.unregister_class(ShapekeyTransferPanel)
bpy.utils.unregister_class(ShapekeyTransferOperator)
del bpy.types.Scene.shapekey_source
del bpy.types.Scene.shapekey_target
if __name__ == "__main__":
register()
Cool thanks! I updated the file
Intro: 🔊👂🔈
I'm going to try this, but I'm wondering if this will also copy the drivers.
My problem is that I want to change the resting pose, but I can't do that until I get rid of the shape keys with drivers. I can't just apply them permanently and lose them. So I want to duplicate a compelex model, delete the keys, apply the armature duplicate, then set the new resting pose. Then pull the old shape keys back.
You know you can apply any shape key as the base one?
@@BlenderBob I know how to apply and clear all the shape keys. The problem is that they're driven and can't be applied to most of the poses. Elbows for example would stick out a lot with a sharp corner.
@@BlenderBob It wouldn't work on blender 4.1.1 for my particular model. Error message about 'NoneType' object has no attribute 'key_blocks'.
thanks for this. I was able to copy the shape keys from one object to another. I'm copying mouth animation though -- is there a way to copy the shape key values, or shape key keyframes from one object to the other?
Yeah, you go to the dopesheet, in shape key editor, and assign the animation
Thank you so much for this! One problem I am running into is when I copy the shape keys from one object to another, the second object moves location to the same place as the first object. Do you know of a way I can fix this?
Edit: Nevermind I just figured it out! I needed to set the origins of the objects to their geometry first.
Really great script, but it somehow doesn't work for me. It just move target head in position of source head and change base shape target to source. It's abolutely same as just duplicate source head, but I just want to copy facial expression between heads with different shapes, but same topology. What I do wrong? Look like for me only work: "Object data property" - "Shape keys"(name of panel) - Tranfer shape key (under "arrow down" button). But it only copy one shape key in one time. Your tool looking amazing, but somehow it just move target to source position and did absolutely same shape. I tried create "Basis" shape for target face and after that copy shapekeys... but when I check shapekeys, all these shapekeys move head to source head position. Oh... sorry for my English, hope someone found soulution for that issue. I tried on Blender 4.0.2
Strange. You are the first one reporting this. Try exporting both models as OBJ to clean up anything that could affect it
doesnt seem to work correctly for me. Im trying to transfer shapekeys from a human body to some underwear.
I did the thing with Basis & Original shapekey (without the original the underwear moves to the fingers like some sort of shrinkwrap mod)
None of the shapekeys transfer over, only the original one works and sends the underwear back to its supposed position.
You can only transfer to another model that has the exact same topology. So from human to underwear that won’t work
@@BlenderBobAh i see nevermind then. I just remembered that i already had a shapekey transfer add on that can do that, its from Royal Skies, also here on youtube.
@@sayakiart Hi! What is the name of this addon? I can't find it.
Looks very interesting, definitely something i may need.
Just trid to run the script in blender's text editor, and i don't think it worked. Would it be possible to get this as a proper addon in a zip?
The addon has been submitted for 4.2 extensions. Waiting for approval. What doesn’t work when you run it and in which version of blender?
@@BlenderBob I have the latest version of blender (4.2.3 LTS) I just tried copying the script from dropbox and put it into the text editor but nothing happened when i hit enter, so i tried putting it in a text file and saving it as a .py file, then dragging it into blender, but i don't see any side panels that have the name of the adon. Hopefully they'll approve it for the extensions site.
@@TheGuardianofAzarath I just tried in 4.2.2 LTS and it works when I run it in the text editor. It apprears in the Tool tab of the viewport
Bob, you're a f * * * ing wizard, I'm f * * * ing as it should be
> 1 month ago video "Copy shape keys from one object to another in Blender"
I'll follow you from all fake accounts, thank you
Thank you sir can we copy face 51 face shape key from one model to another
If they have the exact same topology only. But if you have a male and a female character it’s not going to create the facial key shapes from one model to another. It will morph the male to female or the opposite
If I could subscribe twice I would
mesh scrambled after copying shape key
That’s because the I order of the polygons is not the same. You can only do this is the second topology is the same as the first one.
Subscribing just for foo bob pizza
Should I unsuscribe to suscribe again? :P
Just keep on doing things Bob Blender!!!
💛
ㄱㅅ (thanks)
i installed your add on but how do i see it in use?
This is a python file. How can i add thsi to blender?
Just install it like any other addon
@@BlenderBob yes but how do you do that??????
i can't figure out how to do it on 2.93
Maybe it’s missing some features
bump bump bump bump bump bump bumppp
👍👍
wait i dont have shape key copy how did you get that
Did you install the addon?
@@BlenderBob tried looking for it but couldnt find anything ehats the name again??
@@EmeraldVODS it' in the description. :-)
Can it copy from one .blend to another?
Nop
download link not working
I don't know what to tell you. Seems to work for everyone else. Works for me too. :-/
The link goes some text. A python script...? Maybe that's why no one is subscribing because you don't explain the whole process.
Just install it as any addon
I just explained it in the description. Thanks.
❤