Dynamic materials to enhance animations – BLOG UPDATE (Final Thesis Animation)

ds

General links

These links are example work and example footage of similar work people have done.

http://0-ieeexplore.ieee.org.brum.beds.ac.uk/stamp/stamp.jsp?tp=&arnumber=1309258
The link above is about real time dynamic wrinkles, the example being jeans/bending of the limbs.

Simulation of Static and Dynamic Wrinkles of Skin
http://www.miralab.ch/repository/papers../96.pdf

Human Wrinkling study – information about facial wrinkling and expression lines.
http://onlinelibrary.wiley.com/doi/10.1111/j.1365-2133.2010.09709.x/pdf

Dynamic Wrinkles Simulation for 3D facial expressions – more realism/human based
http://zhangyu.50megs.com/Wrinkle.htm

Impact of expressive wrinkles on perception of a Virtual Character’s Facial Expressions of Emotions
http://perso.limsi.fr/courgeon/pages/pdfs/Courgeon-et-al-IVA09.pdf

Dynamic normal maps in real time

Not a peer reviewed source, but a good example of bump map wrinkles, they are even dynamic and work with the game engine.
http://freesdk.crydev.net/display/SDKDOC3/Creating+Wrinkle+Maps

This seems to more of an up-to date post on the topic, it gives some rather interesting images which I could maybe use.
http://developer.amd.com/wordpress/media/2012/10/Oat-Wrinkles%28Siggraph07%29.pdf
http://www.chrisoat.com/papers/Chapter4-Oat-Animated_Wrinkle_Maps.pdf

The above .pdf are from AMD – They have done some research as a company into this subject.

This has an interesting workflow image – I could maybe use something similar too this for my project. It might better explain my idea.
http://liris.cnrs.fr/Documents/Liris-4451.pdf

Working on the final animation

From the practical research I’ve done so far into my final thesis animation. I’ve found out that if I use the default material morphing in 3Ds max, I see that sometimes the texture will go from main colour, to grey then into the secondary colour. This is a huge issue when it comes to creating the facial animation/bump maps. Something I’ve done to prevent this is buy a student version of Morph-o-matic. This basically is a more advanced version of 3Ds max morpher which is what I need for this project. After downloading the trial for this software, I found that it has actually fixed this error. The plugin is a lot more advanced, but much more suited for my task in hand.

ostrichMorphing
Another thing that the character morphing suite has helped with is that there is something called “attach” in the compound object panel. This is something I didn’t really think I would need, but yet it’s the most important tool. What it allows the user to do is attach both a rig (bones) and a morpher modifier to the same object. So that allows me to seamlessly attach both objects and merge them together and make it look very polished. This is something I didn’t really think about beforehand, but defiantly would have been a huge problem otherwise.attatch

I’m hopefully going to be using reaction manager to get the morph targets setup! This means it’s a little more user friendly for me (the animator). This being said, it will take a while to setup, but after its setup it should be simple enough to animate the ostrich. As well as the reaction manager targets to animate, the textures should animate at the same time!

Wrinkles are not just in the face, but they are also in the parts of body which squash, stretch and bend. For example the fingers have a huge amount of wrinkles in. So I will consider about using morph targets to animate the ostrich. But footage generally wont show the legs, so I doubt I will be doing this.

Current head model for the ostrich

Current head model for the ostrich

http://upload.wikimedia.org/wikipedia/commons/d/dd/OstrichWing.jpg – Fun fact! Or Stupid myth?

 

I’m currently creating the main character. What I’m doing at the moment is creating the legs and the body of the ostrich using 3ds max and edit poly. This is very manual, but I’ve been using shortcuts as much as I can. At this moment in time, I have just finished making the legs and connected them to a body. The body is something I’m not sure if I will keep in that shape. The shape it is at the moment doesn’t look that right. The main reason for it not looking correct is because there are no feathers on the bird. This means that it doesn’t look like it have a very big body at the moment. This is something I didn’t really think too much about and I don’t really want to think about it too much either! mostly because I wont be focusing on feathers/making it look realistic. So I might do what the new film “Free birds” has done. Where basically the feathers are just inside the mesh. This makes it a little easier and harder at the same time. If I make them inside the mesh it will make it rather hard to modify. I will probably have to create a lot of different morph targets to get the bird to move its arms. This may be a little “over the top” because I will now be using 2 morph targets and a biped or bone skinned mesh. This is something I didn’t really want to do, just because there are so many things that could go wrong.

current ostrich model

Bellow are the download links for the body and legs. These are personal use.

bodyCurrent

legsBackup1

head

current

Neck and head are not connected fully/polished here. Mostly because I’ve detached them for the morphing. So I briefly put them together just for this render.

South African chameleon

This is my next model! (Part of the storyboard)

chameleon2ChameleonMax

FinalYearProject

This model is going well so far, I’ve got a low poly version which I’m working on. This is mostly because I will be using the morphing probably for a brief and basic animation for the guy sneezing!

concept

The gif image I made above. I may look choppy and bad. But basically this is it. What I mean is, this is the exact effect I’m going for. I know the wrinkles are just a rough place holder I made in photoshop. But the concept behind it is exactly what I’m looking for.

I think already from the little demo I can see that the wrinkles help the angry look of the character. I think when I get the bump maps working and actually place realistic wrinkles that exist from a human (reference images) then this effect can happen!

Just to update what I’m doing, I will include some of the latest test renders I’ve done. I’m currently on time and it’s actually really fun to play with!

currentModel currentModel2 currentModel4 enough headMorphsI’ve decided before I do a draft animation, that it is best if I remodel the ostrich anyway. A quad topology which is represented in the image bellow makes it much easier to texture, animate and overall look better (easier to subdivide). That being said, it means that I’m delaying my draft render from my Gantt chart. It allows me to work on my final ostrich faster, as I can just use this model on my final render. Although I might change some features, it’s a lot better for me to change the models now rather than later.

ostrichQuad

The materials is rather advanced. I’m using the slate editor in 3Ds max to replicate what the materials

materialWorkflow

From this, we can see that there is a base, mat.1 and mat2 on the right hand side. This is linked up to the morph target port.

materialWorkflow3

Trying to simple explain this, the basic bitmap images are going into a composite map before being used as a diffuse texture. This example will be using the bump map as a texture overlay on the normal bitmap image, this will give the wrinkles look like there’s shadows inside the bump texture.

materialWorkflow2

Using the curve editor, I instance the percentage that the morphing is moved by (red boxes) and pasted it into the material morphing amount (blue boxes). What this means is that when I move the morphing, the percentage of the composite material will be changed. The above 2 images are a great representation of how the textures will work. It also shows how the rig will dynamic. This took a lot of time and research to get perfect. That being said, this may get more complex when adding different material slots such as specular level and animated textures. The above examples are only an example of using 2 maps… I will be using this with around 40 textures, it will get much more complex and I’m probably going to encounter some errors.

terrain

Download link for terrain so far… terrain

I might try exploring using the massFX to animate some of the scenes. It makes it really easy to create a fluid movement, it saves actually keyframing the object.

constrains

In yellow it shows the constraints of each bone.

 

I’ve actually finalized my model of the ostrich. I’m not using any plugins to create it, this saves quite a few resources doing so. What I’m using instead of the alternative “attach” with the Creat’O’Matic suite is something called proBoolean. This is in the create – compound objects section of 3Ds max and it allows me to actually change the alter the model both before and after the attachment.

ostrichModelostrichv5

This shows a basic model of the ostrich. It’s fine for the stage I’m at now. I can start to add finer details to the model if need-be. Feathers can be added later in the animation.

ostrich-boneRig ostrichBoneRigged ostrichRig

I’m using inverse kinematics for the bone rig inside the ostrich. This is generally much easier to animate and faster compared to forward kinematic (FK). I’m using the HI Solver in 3ds max which allows me to rather dynamically move parts of the ostrich. This does take longer to setup, but its faster in the animation stage. I also made sure that my morph targets still work by adding a blink animation. It all seems to work fine, and I might even use a different facial rig to what I planned. Because I’m using proboolean now, I can actually instance a head. This allows much more control and I could technically speaking have a head off camera with controllers to make it more user friendly for me to animate. The issue with having sliders and box controllers attached to the model is that when I move it, the controllers move. The bone rig will move the controllers and it will get rather annoying to see the face and its outcome.

ostrichOnBasicTerrain

more research…

The links above are for realistic uses of dynamic material maps… I personally want to try them out. But not sure if I can blend with the final animation.

I’ve also been researching audio that could be good for the animation.

 

This is the very latest and final model of the ostrich. I use the word final loosely as I can dynamically change the model and it’s texture as everything is setup in a non destructive way. (Using proboolean) so I have access to anything I actually want to change.

finalOstrich rigging13

The render above shows the rather basic diffuse layer which is on the ostrich. I will add feathers later on, it’s not too important at the moment as the diffuse texture can even been changed at the very last second using this texture and animation setup.

controllers

The image above shows the controllers I have setup on the ostrich facial rig. The circles that are inside the squares when moved alter the face of the ostrich. This allows me to animate the ostrich a little easier. Plus I’ve get the IK solvers all over the ostrich so I can key-frame animate the bones easier too.

#BUG! I did my first animation test… The bones worked perfectly, made it very easy to move around, but there is an issue with the mouth opening morph targets… I noticed that when I use any of the beak open or mouth open that the actual body of the ostrich twitches around and jitters all over the place. I personally have no idea what is causing this, luckily all the other morph targets seem to be fine so if worst comes to worst I can just use bones inside the mouth… This being said, this might cause more issues that solve. The thing I might need to try is just moving fewer vertexes, It might be because I rotated the axis of the morph targets which might be giving it a bad time. I made sure that my scene scale is fine, so the only issue I can think of is that when morphing the mouth it’s changing  the symmetry of vertexes which causes the rest of the body to twitch.

I’ve been experimenting with vector graphics for the wrinkles. Just to make sure that they actually work with the composite material and the parameter instanced morphing. I did a simple with 3 images.

1 With the words “Morphing number 1”

2 with the words “Morphing Number 2”

3 with the words “Morphing number 3” but with 3 different coloured boxes, r,g&b.

The 3 different graphics where to test the text transition and colour transition. Obviously this was the first time trying so I needed to make sure I was able to debug it if there was errors so the 3 image where appropriate.

It works! Somewhat.

Pros – Vector is always better, if there’s anything you can use vector graphics for, it’s always better to do so.

Cons –

Not viewable in the viewport # I managed to fix this issue, but using the composite I’ll be unable to see it using the original bitmap.

No more animated materials. I didn’t plan to use any animated materials, but It was good to know that I would be able to use them if I wanted to. That being said, I could always just use bitmap animated textures if needed and vector graphics for the other textures.

materialSlate render

To make sure that the vector graphics works fine, I’m going to do a few tests on the ostrich and the wrinkles.

Firstly I’m just going to paint wrinkles onto the ostrich using viewport canvas. Then use this texture as a test for one of the morph targets. Then I’ll just test and make sure that my work flow works fine (as tested before). Then I will actually draw over the new image I’ve just made using Microsoft Expression Design (My preferred vector graphic creator). This allows me to simple draw over the lines. Then I’ll be able to test to see if the vector graphic works using the composite material and the composite diffuse map type. It is difficult to follow, so I’ll try to explain with some graphics.

After doing some tests, I’ve found that vector graphics work! I think I will use this for my final project. The issue I was getting is that the bitmap images, although they were high resolution. Bitmaps are very linear when going diagonal in a very small amount of pixels it is very visible when not ultra-high res. So a vector will fix this. So base texture can still be bitmap, I don’t have issues with the base texture.

Another issue that I might been to fix…

I only have a limited amount of textures. So what if I composite my composite and composite a vector graphic?

ostrich

ostrichRigging15 ostrichRunning

After studying the locomotion for some time. I noticed that the legs of the ostrich weren’t actually straight. They tended to bend and come up at the back. This is probably more on a full sprint and run then walking, but it’s something I implemented in my running test.  Above are backups of the latest ostrich model and the animation above.

http://news.bbc.co.uk/earth/hi/earth_news/newsid_9129000/9129081.stm

ostrichFront

Ostrich front, this shows the leg bends a bit more clearer…

ostrichFace

This demonstrates the ostrich facial animations.

ostrichLegThis shows the ostrich legs and going in on themselves. I think the angle of the photo may exaggerate it, but the leg actually bends in on itself as it goes backwards. I did replicate this in my animation. But taking into consideration that there are no feathers on my ostrich yet, it might look a little strange at the moment. I think with the feathers around the ostrich will make it look a lot better.

 

 

 

bonesWalking0000This is the bones inside the ostrich. You can see I actually needed to manually move the feet bones. It suites the animation and this subtle thing needs to be done otherwise it’d look strange. Although the ostrich walking like this looks strange, its how an ostrich walks.

cowBoyHat hatslateMax script

I decided to write a small script for one of the repetitive tasks I needed to do.

try (closeRolloutFloater RolloutFloaterTemplate) catch()

rollout RolloutTemplate “With Object selected”
(
button myButton “Seed + 1”

on myButton pressed do
(
maxOps.cloneNodes $ cloneType:#copy newNodes:&nnl
select nnl
$.modifiers[#Noise].seed +=1
)
)

RolloutFloaterTemplate = newrolloutfloater “Seed plus 1” 200 100
addrollout RolloutTemplate RolloutFloaterTemplate

I wrote this simple script, what it basically does it to check to see if a window is already open, if not it will open otherwise do nothing (try catch). Then with an object selected, it’ll duplicate and plus 1 to the noise seed. I needed to do a lot of these because in my animation there are doing to be rocks in the background, this allows me to actually just easily create multiple rocks with hardly any effort.

scriptExample

Sphere with noise selected

scriptExample2

Seed is automatically changed

This should just save me sometime for the terrain modelling. It’s very simple but a time saver!

I’ve also started remodelling the terrain floor. I’ve noticed that the floor looks very blocky. What I did is converted the normal plane into an editable poly and using the modelling ribbon inside 3Ds max I actually changed the topology into a less linear layout. I don’t mind breaking the tri/quad topology rule for the floor, it wont be animated and there will just be a planer texture to it anyway, so I think this has a much better result and looks a lot more organic.

topology

newTerrainStyle

Using a displacement map above the new topology gives it a rough terrain feel, it can be duplicated in minutes!

newTerrainStyle

This means that the floor is less poly that the normal quad topology displacement with turbo smooth ontop, I can do some more tests to compare it later on in the project.

New update! 3Ds max 2015 is announced. I’ve already read through all of the new features, one of which would help in my project. I’m not sure when it will be released, but I’m sure I’ll benefit from the updates. Quad chamfer modifier would be perfect for my bugs life “flik” character I’m modelling. I’ve already basically done him, but I’m just working on ways to make it easier to make him… At the moment I can make him dynamically but he has more polys that I wanted. So I’m working on a way to dynamically model him without as many polys. I’m getting it down as the pipeline usually goes something like this.

Sphere, FFD, SLICE*, CAP HOLES, QUADIFY MESH** TURBO SMOOTH

* Depending on how many slices there are in the model

** This is what annoys me. I have to add more segments to the model to make it look right.

I can easily just model it using edit poly, would take me 5 minutes. That’s not the point though. I’d like to have a dynamic way which is low poly too! I think this updated feature in 3ds max will fix this. So I’m looking forward to trying out this new software.

Final year project update

I might be slightly changing my artifact. The plan at the moment in the storyboard is to basically duplicate the ostrich I have already created rigged and textured. The new idea I have it to actually create another character.

I was thinking about replacing this second ostrich that would be seen in the animation with a tribal character. This would allow me to subtly change the storyboard.

Reasoning behind this?

Well, I’ve got a while left before the VIVA is due. I can make the animation better if I do this and create this new character. Another reason is that the wrinkles can be more relatable.

The idea I had is to have a tribal human that is peering over a rock looking at eggs for example. Then I could have a really high detailed hand and fingers with material morphing (like the demo example I showed in lesson). This would allow me to actually show off different techniques and would be much more repeatable to the people watching.

I think this will be an improvement on my final artifact and not necessarily the write-up. What I mean by this is that all of the testing and research has been done on the character. I know how to achieve the dynamic morphing technique, I could even improve the write up if I create a dynamic morphing setup using bones. Then I can say material morphing and geometry morphing using morph targets and bones for the final artefact.

I think it will add somewhat to the humor of the animation too.

I decided to redo the storyboard that I’ve already created. It will start the same character “flik” from bug’s life which gets instantly eaten by this ostrich, then it will be casually walking along. Then from a far, a human head will be visible peering over a rock. The camera can actually move to his view (hence seeing the hands using dynamic material morphing). After this I can have a first person style look to the animation (seeing the ostrich eggs in his eyes). I can have an ostrich head appear from the top of the screen downwards. This will be for comic effect, this should started the human which intern startles the ostrich. The ostrich will be flailing around as the human starts running towards the eggs. Maybe with spear in hand. The ostrich obviously needs to defend the eggs and chases him, this is a good chance to go in slow motion? So the spear could be chucked towards the ostrich as it dodges and basically chases the human off into the distance.

I may not change the script… I’ve been experimenting more with the ostrich and its wrinkles. Here is a render ostrich with some example vector wrinkles with bitmap blur. It’s already starting to look good!

wrinkles

It may look subtle, but I may have to increase the bump amount/decrease the blur amount depending on the distance of the render!

cowboy boot

cowboy boot

This is a render with adding the hat and shoes to the ostrich. I think soon the next step is to change the diffuse of the ostrich. I’m not too happy with the bulk colour texture, so I might have to add some feathers too it. But for now, I can still progress, but it needs to be done!

cowBoyOstrich

I thought I would create a backup and post the latest bugs life ant.

bugsLife03 FinalFlik

Now he’s rigged! Just posting the final model and the rig here.

bugsLifeFinalFlik

Also been working on the environment and ostrich diffuse texture

ostrichNew ostrichNewDiffuse

I think theres a huge different already! I like the diffuse texture of the ostrich, simple yet effective.

error!

Now I wanted to start doing the wrinkles for the ostriches face today, ive come across an error. I decided to use a composite map to determine which wrinkle to use. Then I was going to use a composite map as a mask. This wasn’t successful. I managed to get it working fine, but once I actually completed it I noticed that I wasn’t actually able to access the opacity amount for each mask in the dope search editor in 3Ds max. This is what I was basically going to use to change the morph percentage amount on. So I’m probably going to have to actually create a composite standard map rather than a composite material map. ,This is a slight setback, but needs to be done.

Animatic is here

FIX FOR THAT ISSUE!

I changed everything to morph… found another error!!!! D:

so I decided to use reaction manager than using dopesheet. This fixed the issue for the first issue I posted above. So, everything works! So so complex. Hardest thing I’ve ever done, I will struggle to explain this to people.

1 2 DONEWRINKLES

3

4FINISHED

Finished the ostrich model! I do need to add the hat and boots to the ostrich rig skin, but that’s it!

All I need to do is animate and finish some tweaks in the environment.

firstRender

renderTest2


This is a panorama render. It shows the current progress. wrinkleExample2FINISHED-WESTERN Cowboy ostrich is done. antTest2Ostrich eggs ostricheggsflik I’ve been having struggles with rendering, I have decided to learn some new mental ray tools. It’s risky as deadline date is coming close and I want to finish this in 3 days. But, this new feature makes my soon look 3x better and is 4x faster to render! win win. ostricheggs2 flik2flik3battle ostrichBattle wrinkles2   This is the latest panorama of the scene.


This is a draft render, mix with some actual footage screenshots and viewport recording. The story for the first 30s should be clear though

Final artfact can be found on the “final year project” tab.

I’ve now got this blog post publicly available. You can use any of the models/scenes that I’ve used here, but please let me know/ leave a comment if you do use them. I’d recommend watching the video which will be available at. (YouTube.com/hertswestuk – video coming soon). This is a walk through on how I created the materials which is basically the technical part of the project.

2 thoughts on “Dynamic materials to enhance animations – BLOG UPDATE (Final Thesis Animation)

  1. Tonia

    When someone writes an article he/she maintains the idea of a user in his/her brain that how a user can know it.
    Therefore that’s why this post is great. Thanks!

  2. test

    You’re so cool! I don’t believe I have read through something
    like that before. So nice to find another person with
    original thoughts on this issue. Really.. many thanks for starting this up.
    This website is something that is required on the web, someone
    with a bit of originality!

Leave a Reply

Your email address will not be published.


*