Community
Bifrost Forum
Welcome to the Bifrost Forum. This is the place for artists using Bifrost to ask and answer questions, browse popular topics, and share knowledge about creating effects procedurally using Bifrost. You can also visit the Bifrost Community on AREA to download an array of ready-to-use graphs, read Bifrost news and updates, and find the latest tutorials.
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

simple question regarding blendshapes

22 REPLIES 22
Reply
Message 1 of 23
ADFU
2095 Views, 22 Replies

simple question regarding blendshapes

Hi all,

 

I'm a noob and want to create my blendshape ( and other deform ) setups in bifrost the way I used to do them in ICE. The problem is this : I've imported my geo, and blendshapetarget into maya, created a basic blendshape setup, and deleted the target object ( as I would've done it in xsi, because I thought I can acces the vectors later ). However, I'm not sure where to look for those vectors..

Just to test things, I've imported back the previously deleted target object and made this setup, however, I'm sure there's a more elegant solution

22 REPLIES 22
Message 2 of 23
mjcg91
in reply to: ADFU

The easiest way to blend between two shapes is by using a linear interpolation. You can control the blend weight using the fraction value.

blend_shape_lerp.jpg

Maxime Jeanmougin - Technical Artist
https://maximejeanmougin.com

Join the Bifrost Addicts community on Discord:
https://discord.gg/bifrost-addicts
Tags (1)
Message 3 of 23
ADFU
in reply to: mjcg91

Thanks for the quick answer!

Based on your post I'll rephrase my question, because the main issue I have is not being able to get the data I want, the reason I didn't stick to linear interpolation is that later I want to do things to my vertices as they're moving from A to B.

It seems to me, that in your case you have both geometry in your scene, don't you ( as pSphere1_orig and pSphere1_target )? What I want is to access the previously stored blendshapes ( as vectors ) on my only scene geometry. I can't see the stored blendshape on my object in the outliner ( display intermediate enabled ), but the blendshape is there in the shape editor, I can play with the weights. What I can't do is getting that data into the bifrost graph, drag and drop doesn't work from the shape editor. Also tried typing in case it's hiding from me :). I hope this makes sense, also I might miss something trivial/ or misread your graph ( noob here as I mentioned ).

Message 4 of 23
ADFU
in reply to: ADFU

Also, I just bumped into your compound topic, I only skimmed through but great stuff, I'll dig in later! One of the first things I wanted to make is nonlinear interpolation between blendshapes, but if someone already made/published it I'd skip to the next thing.

Message 5 of 23
mjcg91
in reply to: ADFU

Ah, I understand your problem now. Unfortunately, I think there isn't a way to import shapes stored into a mesh. You can use a watchpoint on your input mesh and check what data it can imports from Maya, but target shapes are not one of these.

Maxime Jeanmougin - Technical Artist
https://maximejeanmougin.com

Join the Bifrost Addicts community on Discord:
https://discord.gg/bifrost-addicts
Message 6 of 23
mspeer
in reply to: ADFU

Hi!

You can use "Rebuild Target" in the Shape Editor to get a unique shape for your target, if you want to rebuild the blendshape animation in Bifrost.

If you only want to do something while animating the transition from A to B, then only importing the "result" mesh and the value of the slider into Bifrost could work.

Message 7 of 23
ADFU
in reply to: mspeer

thanks for the info, I'll give it a go again and see how it goes, cheers!

Message 8 of 23
ADFU
in reply to: mspeer

Thanks again for the help, my conclusion is that facial rigs must wait. It wouldn't be efficient to store hundreds of objects ( per character ) in a scene just to access them as blendshapes. 

Moving on the next thing.. I've made a simple setup in SI to create curved interpolation between object and its blendshape ( video left : linear, right : using the setup below ), and recreated it in bifrost ( screenshot ). Although the setup seems identical to me, the result is different. If some of you could take a look and tell me the where I went wrong I'd appreciate it!

 

Also, isn't it possible to set keyframes inside the graph, or import a locators posX to animate values?

Message 9 of 23
mjcg91
in reply to: ADFU

I think I know what's going on. In Bifrost, you are using "max", as if you want to get the maximum value inside the length array, but that's not what this node does.

As you can see, you input an array but it's still outputting an array. The "max" node returns the maximum value between different input values. This node is commonly used to clamp stuff. If you want to get the max value inside an array, you need to use "array_bounds" instead.

Maxime Jeanmougin - Technical Artist
https://maximejeanmougin.com

Join the Bifrost Addicts community on Discord:
https://discord.gg/bifrost-addicts
Tags (1)
Message 10 of 23
ADFU
in reply to: mjcg91

indeed sir, thank you! Yeah, the array output was not what I expected there.. now I know why

Message 11 of 23
EnriqueOneAnimation
in reply to: ADFU

This is a really good topic.  I agree that Bifrost needs a way to access blendshapes somehow,  maybe in a muted shape deformer?   We cant have 300 extra geometries living on a rig, 1 for each shape.  It would get really messy and potentially slow things down.

 

In ICE we were able to import the shape deltas directly into the graph and use them

Message 12 of 23
stephen.yee
in reply to: ADFU

>What I want is to access the previously stored blendshapes ( as vectors ) on my only scene geometry.

 

Hi,

 

Just to answer your original question, the delta vectors for blendshapes are stored as attributes on the blendshape node itself:

 

 blendShapeAttrs.png

 

I think the inputPointsTarget stores the blend shape's target positions/delta vectors and the inputComponentsTarget stores the corresponding vertex IDs. Unfortunately, I don't know of a way to connect these attributes directly to the inputs of a bifrost board node. Maybe with some MEL scripting one can get the values from the blendshape and transform them into a form that can be accepted by the bifrost board? I'm not sure.

 

 

Message 13 of 23

 

Hi guys

 

Can I get a more higher-level description of what you are trying to accomplish by "using Bifrost with Maya blend-shapes"?  I never used ICE so I don't know what people were doing with it.

 

If you can give me a concrete example and where the user value lies, then I can discuss this with the Bifrost team.

 

thanks

Marcus

 

Message 14 of 23

Hi Markus,

  Okay so with ICE we could drag and drop blendshape deltas into the graph and they would come out as vectors.  So we could add them together or subtract them at our will.

 

What this did is it made it possible for us to use all of the nodes in ICE (or Bifrost) to come up with our own home made BlendShape Deformers.

 

With all of those amazing nodes to work with we could come up with truly intelligent blendshape rigs that had deeper logic than we could get out of the vanilla shape deformers.

 

The immediate value for Bifrost is that people could start using it to create complicated facial rigs that are blendshape based.

 

A facial rig can have hundreds of shapes, so naturally people dont want to have 300 geometries living on each rig.  Having access to the blendshape deltas somehow would keep scene file size down and also be really convenient.

 

When ICE came out for Softimage, we basically stopped using the built in BlendShape Deformer and started creating our own.  The nodes in ICE were far more powerful than the stuff we had access to in the vanilla DCC.  It will be the same with Bifrost.  Maya still doesn't have a ton of basic math nodes that Bifrost does.  It will open a lot of doors for us.

 

 

Message 15 of 23

 

Hi Enrique,

Thanks a lot for this - it helps!

 

You say you don't want the 300 shapes living on the rig.  In the "Bifrost Solution" you have in mind - where would the shapes live then?  Would you encode them somehow in the Bifrost graph itself?  Are you not simply moving the problem of managing/storing all those shapes out of the DG and into Bifrost?  I am unclear as to how this is better? (And I profess I suck at rigs, animation etc., so accept my apologies if this is a stupid question 🙂

 

Marcus

 

Message 16 of 23

Thats a good point Marcus.  In Softimage the shapes could be found stored within a cluster as their own individual object that you could drag and drop into the ICE graph.  So it was easy to just drop them into the graph.

 

With Maya its not like that, they are part of the shape deformer and you cant just click them and drag and drop.   

 

I wonder if we could just drop the Shape deformer into Bifrost and then access the shapes as outputs of that?  Maybe that would work?

Message 17 of 23
ADFU
in reply to: marcus.nordenstam

Hi again,

 

and thanks everyone for keeping the topic alive, I'm a bit busy atm 🙂

 There's a difference in 'storage size', 300 target geometry will be a lot bigger than 300 deltas, because scene geometry stores each point position of those geometries ( and who knows what else ), but the overlapping point positions in the deltas are 0,0,0. At least in softimage, not sure how maya handles it, but I guess it's the same.

 

Another thing I have to do ( other the things mentioned by others ), is to filter the junk out of the deltas before I start to work with them. When they are sculpted they often bring in invisible random noise in all point position, so step one is check vector length on all these shapes, and filter out anything that moves less than a certain value ( mudbox is one app, that loves doing this noise production ), and write out the filtered result. Can be easily streamlined without a line of code in ICE.

 

I could write more example, but Enrique summed it up perfectly, that is exactly how it happened here as well when ICE showed up as an alternative for facial rigging. Bending vectors, combining complex eye rigs with custom deformers or using a low and a high res geo for different solvers, and combining all these in one network gives much more possibility, and even a single user can build very complex things without a line of code.

 

edit : just noticed the scene size mentioned, apologies for bringing it up again 🙂

Message 18 of 23
Christoph_Schaedl
in reply to: ADFU

Not related to the question above some insides how you could work with Blendshapes in Bifrost.

Take a look at Pauls vimeo.

https://vimeo.com/456918075

https://vimeo.com/456958298

----------------------------------------------------------------
https://linktr.ee/cg_oglu
Message 19 of 23

Yep its a great video, and I think it helps make clear why us ex-Softimage people would like to import the shape deltas somehow, as a rig can have hundreds or thousands of shapes and we just cant have those GEO's living on the rig. File size would get crazy, and its just kind of messy

Message 20 of 23
rodbrunet
in reply to: ADFU

Hello, 

 

I have a parametric head which I wrapped over several random head sculpts, creating different likenesses. Is it possible to have all these heads share a master blendshape setup?

I followed Paul Smith's tutorials which work great. (Thank you Paul!) However, the eye look around and blinks do not transfer to new incoming base heads. 

 

The orgininal process works perfectly when using the shape editor. Attempting to recreate in Bifrost as a learning spike. 

 

Thank you.

Can't find what you're looking for? Ask the community or share your knowledge.

Post to forums  

Autodesk Design & Make Report