FR can be tricky, best bet is to use a secondary mesh to do your ice stuff
with. Just refer to FRs point positions in your ICE tree somehow ( I am not
an ICE guy, but I know basic the logic behind this)  Brad did this when we
used ICE to add some more awesome to our face animations done with FR.

On Wed, Dec 3, 2014 at 7:07 PM, Nicolas Esposito <[email protected]> wrote:

> I think I'm doing something wrong, or FR is mocking me...
>
> As you can see from the jpg "Store position" I'm storing the initial point
> position values in a custom attribute ( tmp.origin )
>
> Then I compare ( by setting another ice node in animation mode ) the point
> position values by getting the self.origin and getting the distance to the
> point position of the shape point position.
> Looks like its not working, because I have huge values, while if I try to
> plug the point position I have proper values ( 0 around the neck area,
> other values different to zero arounf the mounth )
>
> I also notice that I cannot trigger the shapes from the shape manager,
> probably because of the lipsync itself, or the envelope or something
> else...so I'm thinking that FR overrides/reset the shapes ( considering tha
> absurd values I got ).
>
> I also tried to import all the shapes as single meshes and apply an ice
> tree on them, but if I try to reference a value which is on another mesh it
> breaks ( some strange error )
>
> At this point I'm thinking to go with the game export and then get all the
> info from there, but I would like to know if I'm doing something wrong.
>
> Also, most important, I have a list of 3d vectors if I compare the points
> position...even if I plug an array average node I still have 3d
> vectors...what I have to do to have a single ( average? ) scalar value?
> ​
>  Original_point_position.JPG
> <https://docs.google.com/file/d/0ByXsl1-14iQENDMzb2V5VjZDT3M/edit?usp=drive_web>
> ​​
>  Store_point_position.JPG
> <https://docs.google.com/file/d/0ByXsl1-14iQEYUhEcC1YbVRzYUE/edit?usp=drive_web>
> ​​
>  Get_distance.JPG
> <https://docs.google.com/file/d/0ByXsl1-14iQEVXZPSlpmMlV5WWc/edit?usp=drive_web>
> ​
>
> 2014-12-03 16:41 GMT+01:00 Max Crow <[email protected]>:
>
>> Hi Nicolas,
>> Right, a phenome watcher on one mesh to drive phenomes on another is that
>> it? So its a kind of inverse of the picture I gave you. Perhaps, if you set
>> up each phenome in the ice tree and then compare the distance to its self
>> on the mesh as it moves. The average of the array puts out a scalar value,
>> so when this hits zero you will have a match. if you add a rescale node you
>> can make go from 0 to 1.   You would have to have the original shape
>> positions stored first to compare. It's a thought anyway.
>>
>> Max
>>
>> On Wed, Dec 3, 2014 at 2:44 PM, Nicolas Esposito <[email protected]>
>> wrote:
>>
>>> Hi Max,
>>> Thanks for the answer...a couple of minutes ago I was scrolling thru
>>> Paul Smith tutorial anb I watched exactly what your image shows, which is
>>> very usefull :)
>>>
>>> Actually I'm trying a workaround on my previous discussion here on the
>>> mailing list ( Lipsync from Facerobot - get anim values )
>>>
>>> The suuggestion by Luc-Eric is exactly what I'm looking for, but not
>>> being able to script is a hige problem for me :)
>>>
>>> The description above is the workaround for me, means that I extracted
>>> all the phonemes as single meshes from the main mesh.
>>>
>>> Since during the lipsync the phonemes value goes from 0 to 1 I'm trying
>>> to set the base mesh point position to be my "0" value and each phoneme
>>> mesh point position to be my "1" value. During the animation I have all
>>> those points position which corresponds to my shapes, so I have a 100%
>>> match when the phoneme is spoken ( obviously with a blend between each
>>> phoneme when spoken ).
>>>
>>> What I find difficult is how to convert all those 3d vectors from the
>>> base mesh points position to be my "0", and ( for example ) the phoneme
>>> "ah" points position to be my "1" value, so that at each frame I have a
>>> blend value for every phoneme, so that I can drive the shapes which I
>>> previously created.
>>>
>>> Hope its clear
>>>
>>> 2014-12-03 13:39 GMT+01:00 Max Crow <[email protected]>:
>>>
>>>> Hi Nicolas,
>>>>
>>>> get the point position, add it to the shape position then linear
>>>> interpolate from the original point position and you have an ICE shape
>>>> manager. Very cool and useful.
>>>>
>>>> Hope this helps.
>>>> Max
>>>>
>>>>
>>>> https://www.dropbox.com/s/orxwfdphyl6x75y/Shape%20Manager%20in%20ICE.jpg?dl=0
>>>>
>>>> On Wed, Dec 3, 2014 at 10:49 AM, Nicolas Esposito <[email protected]>
>>>> wrote:
>>>>
>>>>> Hi all,
>>>>>
>>>>> I'm having some difficulties with comparing two shapes using point
>>>>> position...let me explain.
>>>>>
>>>>> Basically I have the base mesh and I created a couple of blend shapes
>>>>> via the shape manager.
>>>>> The shape are animated and driven externally.
>>>>>
>>>>> I'm not so good with ICE and I may be saying bs, so bare with me :)
>>>>> What I would like to do is to get the original mesh point position (
>>>>> so an array of point position ) and compare those to all the blend shapes 
>>>>> I
>>>>> have.
>>>>> By doing this I will have an array of values which indicate the
>>>>> difference between them ( base mesh compared with first blend shape, base
>>>>> mesh compared to second blend shape, and so on ); I would like to reduce
>>>>> that list to a single value in order to output a value from 0 to 1 so 
>>>>> that:
>>>>> Base mesh point position: value is 0
>>>>> First Blend Shape point position: value is 1
>>>>>
>>>>> Basically ( if possible! ) I would like to check when the base shape
>>>>> point position are matching ( or how close they are to ) the first Blend
>>>>> Shape, exactly how the shape manager shape values are displayed when keyed
>>>>> manually.
>>>>> The main point is to have the blend shape value ( again, 0 is the base
>>>>> mesh, 1 is the value when the first blend shape is match ) for each frame
>>>>> using the point position as my source.
>>>>>
>>>>> Doable? I'm having context issues using point position and I don't
>>>>> know how I could transform the list of arrays into a single value in order
>>>>> to output and rescale that value to be 0 ( for the base mesh ) and 1 ( for
>>>>> the first blend shape )
>>>>>
>>>>> Any help will be appreciated
>>>>>
>>>>> Cheers
>>>>>
>>>>> Nicolas
>>>>>
>>>>
>>>>
>>>
>>
>

Reply via email to