Displacement trickery.

Here you can find ICE tutorials and learning material
User avatar
McNistor
Posts: 605
Joined: 06 Aug 2009, 17:26

Displacement trickery.

Post by McNistor » 26 Feb 2014, 23:57

Hey y'all!

I've been linked by a friend with something very interesting and as it happens I pondered over it a few times in the past.
Have a look at this:



The original thread is this:
http://forums.newtek.com/showthread.php ... n-Progress

Now the 10 points question: is it possible to do something like this in XSI through the power of ICE (I'm assuming)? Note that the way it's acomplished in Lightwave is by using a "compound" not at the shader level. Looking back at how I was trying to blend displacement maps with a mix shader when I tried to do something similar in XSI (a while back not very recently :P), a wave of shameful silliness engulfs me. :o)

I hope this is the right section to post something like this. Now, let the ICE brainiacs talk!
The society that separates its scholars from its warriors will have its thinking done by cowards and its fighting done by fools.
-Thucydides

Pooby
Posts: 501
Joined: 27 Aug 2010, 22:25

Re: Displacement trickery.

Post by Pooby » 27 Feb 2014, 00:27

Any deformation and displacement you see done with lightwave can be achieved far far easier and elegantly with xsi and ICE. When I see Chris's work in LW I can't help but imagine what he'd do with some software that he isn't constantly fighting.

What specifically do you want to know? The tension map aspect is easy to make in ICE and you can feed the resulting scalar in to the render tree if you so wish.

User avatar
McNistor
Posts: 605
Joined: 06 Aug 2009, 17:26

Re: Displacement trickery.

Post by McNistor » 27 Feb 2014, 00:55

I was hoping Paul would come take a look. :)

Yeah, I was sure XSI could do this much easier (by itself :P).
The tension map - what is it actually and what is it driven by? I' assuming it's a weightmap which changes values based on... tension. But how do you define that tension?
Then there's the matter of having a # of disp. maps and how you mix/drive them by the weightmap/s but we'll cross that bridge when we get there.
The society that separates its scholars from its warriors will have its thinking done by cowards and its fighting done by fools.
-Thucydides

Pooby
Posts: 501
Joined: 27 Aug 2010, 22:25

Re: Displacement trickery.

Post by Pooby » 27 Feb 2014, 01:10

You have a duplicate mesh in neutral face pose. Measure the edge lengths. Compare them to the deforming version and use the difference to drive a value which you feed into whatever.
I'll try and do a tutorial in the morning.

User avatar
McNistor
Posts: 605
Joined: 06 Aug 2009, 17:26

Re: Displacement trickery.

Post by McNistor » 27 Feb 2014, 01:23

Pooby wrote:You have a duplicate mesh in neutral face pose. Measure the edge lengths. Compare them to the deforming version and use the difference to drive a value which you feed into whatever.
I'll try and do a tutorial in the morning.
I didn't get an "aha!" moment since I'm in the dark when in ICE and I'd have to roll up my sleeves to armpits before I could put in practice what you said, therefore I hope you do find the time and mood to do the tutorial.
Thanks for listening.
The society that separates its scholars from its warriors will have its thinking done by cowards and its fighting done by fools.
-Thucydides

Pooby
Posts: 501
Joined: 27 Aug 2010, 22:25

Re: Displacement trickery.

Post by Pooby » 27 Feb 2014, 12:44


User avatar
druitre
Posts: 471
Joined: 25 Jun 2009, 23:35

Re: Displacement trickery.

Post by druitre » 27 Feb 2014, 14:00

Ha, my 'aha' moment here was that I'd have done the same! I must be getting just as good as Paul at ICE :P
(never mind that I'd have taken half the day to get it done, fumbling around for the right nodes etc but still)

Anyway, I saw that video too last week and wondered what Chris had been doing in LW to get it working like that, thanks for the link to the newtek thread. Is it all tensionmaps driving morphs?

User avatar
McNistor
Posts: 605
Joined: 06 Aug 2009, 17:26

Re: Displacement trickery.

Post by McNistor » 27 Feb 2014, 18:15

Pooby wrote:https://vimeo.com/87754394

there you go
Thanks a bunch Paul!
Will take a look soon and follow up with anything I might have unclear.

Edit: Watched it, very useful. I have lots of unknowns at the moment but I won't bother anyone for the moment with any questions that could be a case of RTFM.
The society that separates its scholars from its warriors will have its thinking done by cowards and its fighting done by fools.
-Thucydides

Nick3d
Posts: 71
Joined: 10 Aug 2011, 14:16

Re: Displacement trickery.

Post by Nick3d » 13 Mar 2014, 12:54

This looks very similar to what Kevin Margo ( Blur ) did using Facerobot and custom tools in order to trigger the displacement deformations

http://2009.kevinmargo.com/behind-the-scenes/

Second post, look at Dante's Inferno

He's "rendermapping" an animated mask of weighting and CAV which trigger the displacement.

You can do that with Facerobot using the Game Export pipeline, but unfortunately I haven't figured out how to bake the animated mask from there, but using Paul's tutorial ( thanks for sharing! ) that should be achievable easily using ICE to get the data and bake it to a texture map.

EDIT: Just watched the Making a Displacement map writer made by Paul, Pixel Particles looks like is the way to go!

User avatar
probiner
Posts: 127
Joined: 17 Apr 2013, 11:52

Re: Displacement trickery.

Post by probiner » 22 Mar 2014, 00:45

Image
http://www.si-community.com/community/viewtopic.php?f=12&t=4000

Pancho
Posts: 659
Joined: 19 Sep 2010, 11:28

Re: Displacement trickery.

Post by Pancho » 22 Mar 2014, 09:00

Did you do the example you are prersenting here with the skin wrinkles? If yes, how do you get the wrinkles from the stress computation? Are they prepainted and only their influence is changing or are they dynamically generated?

Cheers!

Nick3d
Posts: 71
Joined: 10 Aug 2011, 14:16

Re: Displacement trickery.

Post by Nick3d » 22 Mar 2014, 13:11

Pancho wrote:Did you do the example you are prersenting here with the skin wrinkles? If yes, how do you get the wrinkles from the stress computation? Are they prepainted and only their influence is changing or are they dynamically generated?

Cheers!
I'll show my demo in 1-2 weeks, not because its complicated but I have too much to do right now :)

Anyway to get the wrinkles showing while the character makes expressions what you need to do is use a static mesh and an animated mesh, then follow the tutorial Paul Smith did on the tension map.
Then, if you take a look at the displacement map tutorial you notice that Paul uses the pixel particles plugins, which allows you to write an animated map to disk.
Basically you need to bake the animated weightmap done with the tension map tutorial, then import that into the render tree.
What I'm doing is to create a "static" normal map ( face not moving ) and an "expression" normal map ( wrinkles on the eyes, forhead... ) and the animated mask need to be blended ( add ) with the normal map, and the animated mask you baked are driving the white areas of the masked animated map, allowing the "expression" mask to kick in and get the wrinkles showing

Hope its clear ;)

Thinking about not using pixel particles and not baking the weightmap I'm looking if there is a way to drive the blend between the normal maps using the arrays values in ICE, but with the mask you have a smooth and good result...needs some testing but I think that could be done easily ;)

Inside the Unreal Development Kit I'm using a different technique that is doing the same thing, but with the animated mask there is too mumch memory consumption, so I ended up using an alternative technique which works great...but sorry, I'm not sharing that one :)

Nick3d
Posts: 71
Joined: 10 Aug 2011, 14:16

Re: Displacement trickery.

Post by Nick3d » 23 Mar 2014, 18:19

https://www.youtube.com/watch?v=os61y6p9MvI

Quick test.
This is based on the Tension map technique, I've created the same technique using the pixel particle plugin, but unfortunately seems that I'm not able to bake out the images from ice, it render just one single image, even if I try to run the animation it doesn't render out the image sequence :(

As you can see, using this technique, the area surrounding the mouth are basically not considered due to the large distance between the static mesh and the animated mesh.

Anyway I used the game export tool to see the normal maps in realtime, unfortunately the OGL shader looks like ass, so I'll export everything out into UE4 to show then in realtime :)

Pancho
Posts: 659
Joined: 19 Sep 2010, 11:28

Re: Displacement trickery.

Post by Pancho » 23 Mar 2014, 23:48

THen you made a mistake with your ICE tree. The distance between the two meshes never plays a role. It's the realtive distance of the neighbouring points which counts, compared between both meshes. You somehow measure the distance between both meshes. At least that's what I guess.

Nick3d
Posts: 71
Joined: 10 Aug 2011, 14:16

Re: R: Displacement trickery.

Post by Nick3d » 24 Mar 2014, 09:45

The distance is not base on the mesh distance but by the point and neighbourghs so the ice tree should be correct (quite the same as shown in the videotutorial)
I think that the main problem is the actual distance of the points,where.on the forhead is very small and on the mouth area is quite big,so I guess I have to make clusters or try to separate the two main areas
I get pixel particles to write the texture to disk,but it needs some tweakings

Pancho
Posts: 659
Joined: 19 Sep 2010, 11:28

Re: Displacement trickery.

Post by Pancho » 25 Mar 2014, 07:28

I see. Then you could animate the most extreme poses and store all the stretching values per point in an array (each point one array). On your last frame you could get the maximum value in the array and write it into a weight map. Freeze the weight map. Afterwards this weight map could serve in a rescale compound as the maximum value. The effect could be to get something like a "normalized" stretch value for each point.

Post Reply

Who is online

Users browsing this forum: No registered users and 18 guests