Halloween Costume ideas 2015
Articles by "animation"
@dorothiar #arttips #interview 101 2 Column Template 2012 mentee 2013 2013 mentee 2014 2014 mentee 2014 Portfolio Winner 2014 SCBWI Portfolio Mentorship Winner 2015 mentee 3 Column Template 360 3d 3d print 3d printing 3delight 8bit Abbey McCulloch abstract acryla gouache acrylic action addon adobe Adobe Flash CS3 Adobe Illustrator Advanced Tutorials advection Advertising advice Agata Wierzbicka agents airplane Al Wiseman ALA Alan E. Cober Alan Lee Alex Ross Alexandra Compain-Tissier Alexandra Lekias Alexandra Levasseur Alexandre Korobov Alexis Winter algorithm alien ALT Amelie Hegardt Amit Shimoni amusement an Ana Aranda analog Andrea Hrjnak Andrea Hrnjak andrea offermann andreaoffermann andreazuill Andy Musser Angela DiTerlizzi Angelika Peißker animal logic animals animation animation nodes anime anisculpt Anja Kroencke Anna Higgie Anna Jensen Anna McKay Annabel Briens AnneBerry Anneke Krull Annu Kilpeläinen anstudy anthology António Soares ar arduino area armature arrange array array modifier arrow art art director art directors Art is fun! art reps art tools Artaksiniya arthictecture arthur rackham artists artwork ase Ashlyn Anstee Asian aspiring asset atom attribute attribute transfer audio Audrey Kawasaki augmented reality aurasma Aurelius Battaglia author illustrator automatic automation Autumn Whitehurst avatar Avrom Yanovsky AW14/15 award awards Babeth Lafon Babies baboon Baby Love Background background color bacteria bake baking ball Bamboo banner Banner images banner making Barbara Dziadosz barcode basic bbox beads beats Bec Winnel beginner Bel Johnstone Ben Denison Bernie Fuchs Berto Martinez Beth Krush better photos bge Bijou Karman Bike biscuit bishop black and white black and white art Blair Breitenstein blam blender blender game engine blender3d blending Blinkie Blinky blob blocks Blog Tips blogger Blogging Friends blogs Blonde blur effect in pixlr and photoshop blur images and pictures bmesh bmesh viewer bolognaragazziaward bombing bone bone modeling bones book book launch books boomerang bottle bounding box bowl bpy brian eno brian ormiston Brian Sanders brian won brick bridge Bridget Davies bright Brooke Boynton Hughes build modifier building burns business Buttons bvh cage Caitlin Shearer caldecott calibration camera camera settings camera tips Candle capcom card career Carole Wilmet cartoony Cassandra Rhodin cast Catherine Campbell Cecilia Carlstedt cell center pivot centipede cg cg photography chair challenge Chanel changin color in pixlr changing color chaos character Character Bible character development charcoal charles Charlie Dot Charlie Hebdo Children children's book illustration chocolate Christina Drejenstam christina forshay Christina K christinaforshay Christmas Cindy Derby circle circle dance city cityengine clock clones cloning cloth Cloud based clover CMYK Coco Chanel Cody and the Fountain of Happiness coffee collect collection Collections collision color color balance color cast color correction color mode color study colorful Commercial Use complexity component compositing composition computational thinking computer concept art Condensed Posts conference connect connect the dot connection Connie Lim Conrad Roset constrain constrast contagion content Contest contracts control converter copy copyright Corinna Luyken count Courtney Brims crack Craft craftsmanship Craig & Karl creative creativity creature cricket Cristina Garcia Martin critic criticism critique Crop Crop Tool cross section crowd csv cubism curve curve modifier custom Custom Blog Design Custom Blog Design Tutorial Custom Blog Designers Custom Illustration custom properties Custom Signature custom xml cut cutting plane cycle cycles dae Damien Florébert Cuypers Dan Hillier dance Daniel Egnéus Daniel Segrove Danny Roberts Daren Newman Dasha Tolstikova data data path David Blossom david diaz David Shrigley David Stone Martin Dean Hardscrabble Debbie debbie ohi debbieohi deform deformer degrees deleting background in pixler demo demoscene desaturation of images design design by numbers design process Design Tips dictionaries dictionary Different Text Writing in Pixlr digital digital paint Digital Scrapbook Freebies Digital Scrapbooking disk distance distractions distribute diversion DIY DIY Contest Dolf Veenvliet Doll Doll Bones dolls domino domino effect doodle Doodles door doraemon Doris Jackson Dorothia Rohner dots dpi draw drawing drill driven driver drivers dual versions dummy duplicate duplicates duplication dupliframe dvd dynamic dynamic paint dynamic text E Simms Campbell Easy easy pixlr Easy Tutorials Ed Graham Ed Vebell editing editing photos editors education effect effects ego Eleanor Dalton electric Elia Fernández eliza wheeler Elizabeth Mayville elizawheeler Emily Forgot Emma Zanelli emoticon happy-face Emotional storytelling empathetic characters empty entoforms envy epicycloid EPS Illustration Epson scanner erasers Erin Armstrong Erin Petson erinoshea ernest shepard Esra Roise euler evaluate line Eveline Tarunadjaja evenly spacing vertex event everywhere door exhibition Expandable Posts experiments explode exploded view export expression extrude eye eye color in pixlr eye trick eyeball face rig facial expressions facial setup factory Faiyaz Jafri Families fashion illustration fashion week fcurve feature Featured Fee Harding Feedback fence Fernanda Guedes fibonacci Fifi Lapin file File Types Finalists Finding Nemo fire fix photos Flash Tutorials flicker flip flip flop floor flop flow flower Flowers fnmatch focal point follow up font Fontaine Anderson Fonts food footage For Sale force form formula fractal fracture frame Frames Francois Berthoud Frank Bellamy Frank Furlong Franklin McMahon freckles Fred Steffen FrederiqueBertrand Free for Commercial Use Free for Personal Use Free Stock Photography Free transform tool Freebies Frenchillustration Fritz Siebel frosted mylar fruit ninja Fumi Mini Nakamura Fun function futurism FW2017 fx Gabriel Moreno Gabriella Ibarra game game animation gameart gamma gangnam style Garance Doré Gary Fernandéz gel medium generate generative generator geometric geometry Gerald Lazare Géraldine Georges GIF Gildo Medina Girl Giuseppe Castellano Giveaway glorar goals golden ratio google google docs Google Tools Grant Young graph graphite graphite transfer grease pencil grid group group node growth Gucci Guest Guil Godier gustave dore hair handbook Harper's Bazaar harpercollins Harvey Schmidt Haute Couture head Headers heat map Helena Hauss hexagon hexagonal grid Hiroshi Mizuno Hiroshi Tanabe Holiday Holly Black homology honeycomb hook horror houdini how to how to blur a face or an object in pixlr How to change eye color how to delete an object how to desaturate an image how to edit a image in pixlr how to erase an object how to fix red eye problem how to fix red eyes in pixlt How to fix the parts in pixlr in photoshop How to make a banner in pixlr How to overlap the nevus how to remove a object How to remove an object in pixlr how to remove red eyes How to Remove the Background of an Image in Pixlr How to remove the parts that you don't want in pixlr and photoshop how to replace color How to write a Patterned Text in Pixlr how-to Hsiao-Ron Cheng hsv hue humor Hyshil I love illustration magazine idea ideas Igor+André illusion illustrating illustration illustration board Illustration Books Illustration Intensive Illustration Now! Fashion illustration process Illustrations Illustrative Berlin illustrator Illustrator Intensive Illustrator Tutorials iloveillustration magazine image ediditing lessons Image Ready image sequences image theft imaginative import import text import vertex color improving photos inbetween index visualizer Info Ingrid Bockting ink inktober input Inspiration inspirational quotes install instance instance switching intensive interaction Intermediate Tutorials internet interoperability interpolation intersect intersect edges intersecting intersection interview introduction invoke subprogram io ipad Irana Doucer Isabella Hemmersbach islam islamic iteration Izzie Klingels Jack Hearne Jack Tremblay James Dignan James Gurney japanese Jason Brooks Jean Kim Jeanne Detallante Jen and Chris Creed Photography jen betton Jen Rofé Jenny Mörtsell Jeremy Combot Jeslyn Kate Jesse Auersalo Jessica Jessica Lanan jessicalanan jewellery jewelry jiggle Jim Schaeffing Joe Bowler Joe Cleary Joe Isom Joe Krush Johanna Goodman john maeda John Vernon Lord joint Jordan Sondler JPEG JPG jpop juana martinez-neal juanamartinezneal Judge Judit Garcia Talavera Judith van den Hoek Judy Byron Schachner Jules Julien Julian Beever Julie Verhoeven Jump Break Tool JW Anderson K-Fai Steele Kaethe Butcher Kareem Iliya karel zeman Kate van Harreveld Kathrin Kuhn Kathryn Ault Noble Kathryn Noble Katie Kath kdtree Kei Meguro Kelly Beeman Kelly Light Kelly Smith kelly sonnack Kelly Thompson keyframe keyframing kidlit kidlitartists kimberlygee Kirkus Review Kisoo Chai Kodak Konstantin Kakanias Korean illustration Kotaro Chiba Kozue Himi Kremos Ksenia Finogeeva KT Smail kuler Kustaa Saksi Lanan Laptop larry gritz lasso tool latte lattice Laura Callaghan Laura Laine Lauren Rille layer layering Layla Holzer layout leaf learning learning blender LED Leendert meets Ingrid lego length Leonard Starr lessons levels LFW A/W 14 liangzhu liero lightbox lighting lightning Lina Bodén Lina Ekstrand Linda Dorn line line connect line drawing lines Links Linky Love Linn Olofsdotter Lionel Gilbert Lisa Anchin Lisa Billvik Lisa Krannichfeld lisaanchin lisbeth zwerger Liselotte Watkins list list comprehension List First Last listing locator lofting logo Logo Design Lola Dupré London Fashion Week loop looping loops looptools Lorraine Fox lossless lossy lost weekend lostweekend lotte reininger Louis Glanzman louis vuitton Luciana Rondolini luciograph LULU* lv Lynnie Zulu Mac macgyver macouno maeda Magda Antoniuk magic Magnus Voll Mathiassen mailing mailings maker Makiko Sugawa making banners Malika Favre MAMP mandala manga map map range maplelam mapping Marcel George Maren Esdar Margot Macé Margot van Huijkelom Maribeth Olson Marie El-Ahmar Marilyn Conover Marina Esmeraldo Marine Marbleindex mario Marlies Niemeijer Marsha Riti Martha Rago Martin Krusche Martine Johanna mask masking material materials math matrix matrix apply matryoshka Matt Baker matte medium Matthew Woodson maya maze mdd Meagan Morrison measure megaman Megan Hess Meizhen Xu Mel Crawford memory mentee mentees mentors mentorship program Mercer Mayer Meridth McKean Gimbel mesh mesh cutter meshlab Meta Tags metal gear rising Meyoko Mia Overgaard Micca mice Michael Sanderson Michela Picchi middle grade midi miku Milan milipede minidom Minima Mio Matsumoto mirror cut Misc Miss Blackbirdy miss maple's seeds Miss Take Mitchell Hooks mixamo mixing Mobile Apps mocap mod model modeling modifier modular modulation modulus mold molecule molly idle Molly Ruttan Molly Ruttan Illustration money monitors monkey mono-zero monster monster university morph morpher mosaic mosquito motion motion capture motion capture mouse motion trail moto360 mountain muji Muriel Wood Murray Tinkelman mushroom Music and Podcasts My dead pony Nadia Flower Naiad Einsel Naja Conrad-Hansen Natalie Brockett Natalie Foss nathan vegdahl nautilus Nav Bar navigation needle-felting negotiating Neil Boyle neon nescbwi14 nested New Blogger Questions New Blogger Template Tutorials new user pixlr new year new york New York Fashion week Newbery nicholas nicholas bishop Nicholas Hong Niki Pilkington Niso Ramponi nla No Software node node-based nodebox noise non linear animation Non-Web Font normal Noumeda Carbone npr number NURBS NYFW object object color change object info octopus offset Ola Volo Olaf Hayek old formats opaque projector open movie open shading language open source openshadinglanguage opensoundcontrol optical organization origami original art show Ornaments osc Oscar Schlienger osipa osl outline outliner output Pages paint paint weight painting painting on illustration board painting on wood painting with movie painting with numbers Pair pandas panorama Paper paper lantern parabola parametric parent parenting particle particle info node particles pat david Pat Zietlow Miller pattern Patterned Text Paul Faassen Paul X. Johnson Paula Sanz Caballero PC pdb pebbles pencil Pencil Sketch pencils Penguin perfume perlin Peter Helck Photo CD.8B photo editing software Photo Reference Photobucket photographing art Photographs photography photomerge photoshop Photoshop Brushes Photoshop CS3 Photoshop elements photoshop pixlr desaturaion Photoshop tips Photoshop Tutorials Picture Book Builders picture books Pierre Louis Mascia Piet Paris Pietari Posti pingpong pinnochio pipes pixar pixel pixel art pixel generator pixlr Pixlr advanced Pixlr blog pixlr desaturate keep a colorful part pixlr editting pixlr express Pixlr forum Pixlr free transform Pixlr Lesson Pixlr lessons Pixlr mobile Pixlr resizing images pixlr shortcuts Pixlr tools pixlr tutorial pixlr tutorial with pictures Pixlr Tutorials pixlr white black pixlr.com plant plot plotting ply PNG PNG Illustration podcast point point color pointilism polka dots polyCut polygon Pomme Chan pop-overs portfolio Portfolio award portfolio showcase portfolio-advice portrait position Post Dividers postcard poster Posting pot powdered graphite powerhousemuseum Prada presentation print printmaking Prize procedular procedural process processing programming projection Promotion property prototype PSD psy publishing pulse puppet puppetry pydriver pydrivers pyhandler pyhandlers pyramide python quad quick select set quick tips qumarion Rabbit Moon Rachel Ryle radians radius ramp random random motion randomization randomize range float raspi Ray Houlihan reading reading XML READY-TO-WEAR realflow Rebecca Clarke rebecca dautremer Rebecka Skog rebuild recursive recursivedrawing red eye remove reducing glare reference referencing release remesh modifier remix removal remove remove red eyes remove unwanted objects Removing backgroung render rendering renderman repeat repeater repeating replace replacement replacing color representation rerouter resample resampling research Resizing image resolutions retopology retro review revolve rgb rib Ricardo Fumanal Richard Scarry rig rigging rigify Rikke Jorgensen ring ripple roadkill Robert Heindel Robert J. Lee Robert McCloskey Robert Shore Roberta Zeta Robin Rosenthal robot robotic rocks Rodolfo Montalvo Roller Coaster rotation Rousseau rsl Rubin Pfeffer ruler tool Russ Mills russian rut S/S14 S/S15 S/S16 Sabine Pieper sadako Saftey Pins Sainte Maria Sale Sam Weber Sanda Suy Sandy Kossin santoso Sara Andreasson Sara Singh Sarah Jacoby saturation artist tools scan scanners scanning scatter scbwi SCBWI 2015 mentee SCBWI conference scbwi germany SCBWI mentorship scbwi-la scratch scratchboards screensaver screw screw modifier script scrub sculpting seamless Seamless Patterns Search Engines select by material select by name select by type SEO sequence series set keyframe set keyframes shader shading shadow Shannon Stirnweis shape grammars shape key shapekeys shapes shards shatter Sheilah Beckett shell ship shipping shipwright Shoes SHOWstudio shuffle Sid Barron Sidebar Titles Signature Silja Goetz silkworm Simon and Schuster Simon Varela simple simplicity simulation sine Site Engine Optimization Sjoukje Bierma sketch Sketches sketching skin skin modifier skinning slice slicing slides sloth slow parent smoke smoothstep SN snake Sneek Peek snippet Snow Snow White Snowflakes soccerball social media Social Media Buttons Social Networking society of illustrators Society6 soft body softbody Sonia Menti sound sound wave space spaceship sparta special spider spiderman spiderweb spin spiral Spiros Halaris Spiros Halaris x Urban Decay spline Spot Healing Tool spreadsheet SS16 stack stacking stair stamp Stan Galli star starfish stencyl step Steven G. Dobson still Stina Persson stone stones storytelling strand strand info strands street art string stripes structure studies studio style stylistic summary Summary Posts Summer sun supplies surface Susan Farrington suzanne Suzanne Kaufman sverchok swatch switch sydney system table table of contents take out background Tal Drori tangent tangled Taschen teaching teapot Template Templates tentacle Tess Jacobson Tex Avery text text editor Text Formats Text Styles in Pixlr texture texturing The Cartorialist The Grudge Keeper The Purple Book thinker1 Thomas B. Sawyer thread TIFF tile tilecam tiling time time code Tina Berning Tina Kugler tips tips for artists Toby Neilan Tom Baxter Tom Bjarnason tombow tomie depaola tool tools topology tower Tracy Turnbull Train transfer drawing transferring sketch transform transformation transit travel triangle wave Tricia Springstubb trigger tris tristan lock tube tubes Tutorials twitter type tool typeface typography unbake unity3d universal unquad utah uv valentine Valentino Valerie Servais vanilla variable variation variety vase vector vectorized Velwyn Yossy venus Veronica Ballart Lilja vertex vertex color vertex group vertex paint vertex weight VFX Victoria Boysen video Videos viewer Vintage virtual virtual studio visualization vivid vividfestival VOGUE volumetric voronoi Vote voxel voxelated voxelation walking teapot Walter Einsel wand tool water soluble graphite watercolor wav wave we need diverse books web webbing Week Themes weight welcome Wendy magazine Wendy Plovmand what casues red eyes What is Pixlr Wherever You Go Wide Awake Bear wiggle Will Davies Winner Winnie Fitch Winnie Truong Winter wire wired wireframe wolfram Woman wood woodwork wool wooly wordpress work workflow World writing writing XML www.pixlr.com XML YA yayoi kusama Yelena Bryksenkova yoda Yoko Furusho Yuliya zaha hadid zen zsphere

I just realized that I might need to change the format of this blog and introduce more video tutorials. Blog is great for quick snippet animations and notes to keep track progress, but it could be difficult to actually explain some topics. Especially with animation where objects moves. I will use Anim GIF, but needs to always watch for the size.

Anyways, let's continue with our AN animation topics.

This article is particularly "boring" but I need to write about it because it is actually important. If you think you know about all these and you rather skip, you should not!

F-CURVE & INTERPOLATION

I have written about this in the past, but I like to explore this in AN context.

Let's assume that every object in Blender has the default of 9 attributes we can keyframe. Supposed we MANUALLY keyframe using hotkey I and choose LocRotScale.

When I talk F-Curves, it means a Curve that represent animation like you see in Graph Editor for a single or multiple channels.

BELOW: I am selecting one channel / attribute, the Loc X of Cube. Curve represented in red, it has 2 keyframes.



Interpolation is smaller components that mades F-Curves, it's the "in between" curve. You can pick one preset interpolations and assign it to a keyframe.

BELOW: all the interpolation options you can have for keyframe.



We could observer the FCurve created for this one object like below:

First, use "FCurves from Object" node.



NODE: FCurve Info

Using "FCurve Info" node, we can get a bit of details of FCurve related with this object.

From keyframed default Cube:

  • Data Path will give you output like: location, rotation, scale.
  • Array Index will let you know if the data comes as 1, or 3 (vector), or more (?).

Don't be surprised when we see "Get List Element" node suddenly pops out. Because we are very likely dealing with multiple items / list of FCurves.

What even more interesting is when we add Custom Attribute, maybe called "prop" and we can see this also using the setup above.


Watch the output in the "Debug" node. It is described as ["prop"]. Or whatever you name this ["customAttribute"].


NODE: FCurve Keyframes



This is a very straight forward node, it will spit out Keyframes FRAMES (position in time) and VALUES. Very handy and you will use it some point.

NODE: Evaluate Curve

One more node can be useful for us to "evaluate" or to spit out VALUE, based on position in TIME (Frame). The "Frame" option can either be "Absolute" or "Offset". You use Absolute if you want to specify the exact frame and want to find out what value at that frame. Use Offset if you want to take consideration the TICK in the timeline.



CONCEPTUALLY SPEAKING...
In node based system, you are basically generating, modifying, sampling, mapping values. And everything you see and control are Driver and Driven attributes.


DATA PATH & ATTRIBUTE VALUE

There are nodes that deal directly with value of attributes in that X point in time.

For the input field, you type in: location, rotation_euler (!), scale, or ["prop"], or ["whatever"] custom name. Hover any attribute in Blender property panel if you are unsure about the exact attribute name.


NODE: Interpolation From FCurve

We can apparently turn an FCurve into interpolation and the range become 0-1, like below:


There is also "Mix Interpolation" node that comes in handy if you like to mix 2 kind of interpolations.  The possibilities are endless, but if you are like me, I found this overwhelming at the moment.

In fact for most animation purpose, probably you rather worry about Action and NLA style block animation that you can mix and match and offset. I will have to consult AN developers and see if this is something they have in mind to make.

I did saw this video from ElinterCambiador YouTube channel that uses AN to offset NLA:
https://www.youtube.com/watch?v=0uP0cRJhoBg

Observing Wiggle Animation + Set Keyframe >> Baking

Wiggle Animation is the most basic but rather cool procedural animation we can do really easily using AN Wiggle node, because it just works when we plug Time into Evolution and the value changes overtime to drive any atttribute.

Wiggling or any other procedural animation, we will soon want to "bake" it as FCurve. And for that we use "Set Keyframe" node.

It is a stand alone node that just do the job, if you provide it with the right "attribute name". Below, you see I am telling it to keyframe "location" attribute, but all 3 values of location. I know it because of the -1 in the value. You can assign 0, 1, or 2, to keyframe individual attributes



There are also some Boolean type options that you can use to further control this "Set Keyframes" node let say, perhaps you want to keyframe between frame 50 - 100 only:




IMPORTANT POINTS SO FAR...

There are 2 types of animations:
1) Manual Keyframe Animation
2) Procedural Animation (auto generated) via expressions, premade node, etc >> AN nodes will help you to do this.

AN nodes animation will override the existing animation. It works like Drivers.
AN nodes animation can be baked into f-curve.

Values + Time  >> Keyframes >> Interpolations >> F-Curve >> Action >> Animation

When it comes to AN or any kind of node based animation, we will often deals with components of things. And things can feel complex very quickly, especially when dealing with lots of objects.

A good way of thinking, I think is to break things down to a single task for one object, then we can expand from there.

BELOW: Baked Sine Wave motion using Expression node. I like seeing the animation being baked with the playback running.




COMING SOON....

What I would like to cover next might more on:
  • AN Useful Snippets (!)
  • How AN can be used to generate mesh like Sverchok
  • AN Group Loop
  • AN PyNode
  • AN node creation
  • More on animating Text, because Text is interesting case
AN Animation Nodes is really powerful, even I still know so little, but lots of potential here. 


Like a Sverchok....





Finally, we arrived to "animation" topic! EXCITING!

So far, YOU should be more familiar with how AN nodes can custom control your 3D object:
- Tranformation (translation/position, rotation, scaling)
- Loops
- Numbers
- Text / String
- Instances

All these components and concepts not easy, but once understand everything makes sense. You could skip previous articles, and make this article your start, however I want you think as a whole.

SIMPLE ANIMATION SETUP


Above is my recommendation for absolute beginner node setup to create animation using AN. Imagine a single 3D object transform that you will control using AN. Later on, you will learn how to control and animation ANY attribute of an object.

(I am actually very curious how AN will handle Blender Bones / Armature Skeleton, if it gets developed into that area. We will wait and see.... it's my wishlist for Jacques and AN developers :D)

OK let's break down the network above.

Our main focus node is "Animate Matrix" node. It has every INPUT slots we need for now.

If you Ctrl+A and search-create AN node, it will give you list of nodes that deal with animation.

  • Animate Matrix deals with whole transform (translate, rotate, scale)
  • Animate Vector deals with vector / 3 values.
  • Animate Float deals with a floating value.
  • Animate Color deals with color.
  • Animate Euler and Quaternion, my guess, is dealing with angle.



Like mentioned in previous blog post, animation will deal with Time, Start, End, Interpolation and Duration. All those data will be handled by AN animate nodes to create animation.

TIME: For Time input, we can just plugin the "Time Info" node. That is the simplest. However, I like to use "Repeat Time" node as well, so that we have more control on the behaviour of animation. I set it to "Loop" so that the animation will loop overtime.

START and END: For "Animate Matrix" node obviously we will need Matrix start and Matrix end, so we use "Compose Matrix" node. Don't be scared by the name, just think of this as a node that will provide a transformational data for an object. Think: translation, rotation, scale.

INTERPOLATION: You can use your own curve drawing using "Interpolation from Curve Mapping" node. Or for simplicity, you can use Blender's own interpolation curve presets shown under "Construct Interpolation" node.

Now, the Curve presets we have are like below:


I am very tempted to try to describe each and every curve interpolation preset here, but it is best when  you view it yourself animating the object.

I will create Animated GIF to give example result.

ANIMATION GIF EXAMPLES

(I will add GIF later... maybe)

The idea is really to "trace" or project a single motion of attribute, and so you can really see how the curve actually looks like, to cause a particular motion (fast, slow, slowing in, bouncing, etc) when the value travel over time.


Of course, if you are animating a character, your pose, silhouette, you probably care less about the graph or animation curve between keyframes. However, for lots of procedural animation, this basic curves are something you want to know really well.



In the meantime, there is this really beautiful GIF animation from this website:
http://1ucasvb.tumblr.com/post/44666043888/easing-functions-are-an-immensely-useful-tool-for

Borrowed from http://1ucasvb.tumblr.com


DEBUG INTERPOLATION

You see,"Debug Interpolation" node here is also used so that we can see the resulting anim curve in a bigger picture. For interpolation such as "Bounce" we can have the effect for both at the easeIn and easeOut,  OR either easeIn and easeOut.


Remember to think simple for now:
ANIMATION = INTERPOLATION between 2 VALUES over TIME.


Happy animating...! 🤓







Icospherical Suzanne Clones.
Positioning monkeys into Icosphere Vertex position.

If you are following this blog, or just randomly browsing the articles, you might notice that I have strange interest over node-based procedural modeling and animation method. I like the idea on how we can crunch numbers and data to the computer, and let the computer does some complex processing for you. And I also have big interest on data visualization. So whenever there is an opportunity to explore such tools in Blender, I jump on it.

By now, there are already quite a few node-based add-ons for Blender as for today. Eventually, they will be unified under one Blender node tree, I have that believe in Blender. I am quite picky on which node-based add on to choose. So far, I found Sverchok and recently Animation Nodes (AN).

The tools I pick based on my familiarity with Maya, Houdini, and a bit of Softimage ICE. I think node-based system shoud be user friendly and does it the Blender way, yet universal.

Sverchok is one Blender add-on that I have seriously explored in the past for its node-based procedural ability. I believe Sverchok was originally designed for procedural 3D modeling, however, Sverchok also can "move" and "animate" mesh and later on can animate objects thanks to Sverchok developers that allow animation to happen.

Animation Nodes (AN), is yet another add-on that allows us to create procedural animation in Blender by creating and connecting nodes, and let the data flow do the animation job.

One can think of procedural node-based worklow just like creating, modifying, and transforming a non-destructive ways, similar to Blender's own Modifiers. For example, there are Mesh Modifiers and Animation Curve Modifiers (inside Graph Editor, allowing you to generate, tweak and modify animation curve without destroying anything).


1. Generator Modifier inside Graph Editor.
2. Adding Noise Modifier on top of Generator Modifier, and Multiplying them together.


Few words of cautions, when dealing with node-based system, you may need to be comfortable with some programming concepts, such as:

  • Data types (float, integer, string, vector, matrix, etc)
  • Data conversion
  • Arrays and Lists
  • Loop and Iteration
  • Functions
  • Variables
However, unlike typed programming language, node-based is usually more visual and less abstract. In fact, node-based is can be really very advantageous and helpful for "non-technical" computer artists to have this ability to clearly see what is going on without worrying about the complexity of language. You could create a complex setup and modify certain setup for own purpose just by understanding the logic.

In my own word and understanding, a node is really a container that hides complexity and reveal functions, so we may care more about the data input, data output and data flow to get the final result. How all the functions work together. A bit like LEGO bricks, we kind of need to know what each block can do and how it can attach together to build a structure.

Understanding the concepts is more important than memorizing complex node-tree. You will find really quickly that there are many possibilities to achieve the same result. Some are more elegant, simpler, some are complex underneath, but beautifully presented. Sometimes a complex node-tree is good for some matters, but the more specialized, the harder to customize. 

Now, AN probably does not have a full complete set of animation nodes at this point, but it is growing and the number of nodes will continue to increase as it is continue to mature. Keep in mind also that nodes might change over time, this is the nature of the tool, once again I have to mention.

What really intrigues me with tool like AN, is the openness and potential both for learning and development. If you have enough skills you can eventually create your own nodes that you can share with other artists. And when we collaboratively create node-tree of certain setup, ideally we can re-use and build more complex tools.

So in this article thinking about Animation Nodes, I am trying to map out our learning areas. So I will be jumping around from topic to topic.

Enough preaching, let's explore this Animation Nodes add-on together! 


THINKING ANIMATION PROCEDURALLY

Manually animating in computer graphics involves keyframing values of attributes in different frames. The animation will then be created when the computer interpolate or create in betweens for those values that we specified when we playback the time. The speed of acceleration and the weighting of the interpolation (animation curve) can be adjusted manually via Graph Editor, whether we have linear motion, slow in slow out, stepped, etc.

NOTE: For character animation, usually animating involving posing the character controllers (!) and animator worried more about the actual emotion or story to tell. We will get there, but at the moment, we go to the most basic first.

In reality we are really controlling the motion of object using f-curve over time. Simple enough concepts that takes a while to understand. Make sure you understand that concept first.

Procedurally animating is pretty similar, just that user is a little bit more exposed into smaller components. We still be dealing with VALUES over TIME, and then CONTROL-ing how the values get interpolated.

Procedural animation is great for something that involves repetitions. Every so often, we would like to apply similar animations to a bunch of objects, with slight offsets or variations. Perhaps it is a building with lots of windows that we like to open at slightly different time, or maybe it is the lights that need to turn on not at the same time, but in a slightly offset kind of way (more interesting).

What can we control or animate? Ideally we want our node based to control everything. Animation Nodes seems to be able to do so already, even at this stage. If there are missing tools, one can always write Python code for it or request the developers.


1. Objects (tranform of objects: Translate, Rotate, Scale, Visibility)
2. Text
3. Mesh (vertices) or Curve
4. Color
5. Attributes
6. Others

Usually Motion Graphics animation deals a lot with these kinds of animations. It's good idea to look around for inspiration on YouTube or Vimeo for this kind of things.

Before dealing with complex nodes and array of multiple objects and exciting stuffs like loops, we should really start by building simple node-tree setup that does something to an object.

This is when you are free to experiment yourself by observing NODES and guessing what and how they function with the rest of nodes. Do make mistakes, but find out why and figure out how to resolve it.

In fact, if I think of "storyline" of learning curve for AN, it is going to go like this:
1. Positioning static object(s), eg. in flat map coordinate or spherical
2. Arranging object(s)
3. Animating object
4. Working with multiple objects
4. Other stuffs.

GENERATING SIMPLE MOTION RECIPE

Node Recipes:

  • Time Info (!)
  • Combine/Separate Vector
  • Object Transforms
There is ONE really special value that we can use for animation, and that is TIME, and it is commonly shown as Frames or Subframes when playback is run (Ctrl+A hotkey).

Time at the very basic means we are aware of Start Frame, End Frame, playback length or durations. Later on, you will find out that we can have "multiple timelines" for each object. It's one of biggest driving force of animation.

In AN, time value is accessed via "Time Info" node. When you run the playback or scrub in timeline, the Time value is also changing. Time Info node spits out Frame number value as Floating value (fractional).

So at the very basic, we could in theory plug that single value to control Translate XYZ, Rotate XYZ, and Scale XYZ of Object Transform.


Above, you see I plug a single value output from Time Info node into X of "Combine Vector". Then, I plug the Vector (3 values) into the position of Object Transform node to DRIVE the default "Cube" object in 3D scene.

You may notice that moving object one unit per frame is too big of a step, so we can reduce the speed for example by multiplying the value with 0.1. This results in Time that is 10 times slower (1/10). Below is how I figure it out.

I use Debug node already here. This is a quick way to see the OUTPUT VALUES at any point in the node tree. There are few debug nodes here, we will sure be looking at them time to time.


Now that you are familiar about Time value output, you can try pluggging this into Scale, this time below I plug it into Scale XYZ so it will "grow" the scale of "Cube" overtime.

If the value is the same for all 3 values Vector, you can use "Vector from Value" node, instead of plugging 3 noodles into "Combine Vector" slots.


You can also try plugging the value into Rotate XYZ.


Noticed that you have this automatically created "Vector to Euler" node. And you also have option to use Degree.

In degree, 360 degree is a full rotation. In Euler angle, .... well I do not know, maybe you know. But we can SEE the result in 3D. I use Suzanne the monkey object so I can tell if it hits 360 degree rotation.

NOTE: Later on this Vector business is important to indicate the direction axis of an object, especially when dealing with Matrix. A bit too advanced for now, I supposed.


Knowing that we can use values to control many things using nodes, we need to think of DRIVE and DRIVEN values.

Straight from top of my head, procedural motion can be driven using:
- Generated Values / Numbers
- Other Objects (master and slave)
- F-Curve via keyframing
- Math (with formula or expressions over time)
- Sound > Curve

NODE: VECTOR WIGGLE

Vector Wiggle is an interesting node. When we feed Time Info node (frame) into the Evolution, it will spit out smooth Vector positions over time and can drive an object so it is moving just like insect fly in the air.

I believe this Wiggle is also called 3 x Noise values (XYZ). Unlike Random that gives a random values resulting in a jumpy values between frame, Noise will give values that are closer to each other, meaning smoother motion.

Okey, so far, we know Time and Vector Wiggle can drive the motion of objects. Vector Wiggle itself is a specialized node that is based on Math Formula and Expressions. I might cover and explore this are more in depth. But looking at Math through procedural animation is a lof of fun.

Complex procedural motions can be created using Physics, Dynamics, and perhaps Particle simulations and behaviour animation like used in games. Actually if we get creative, maybe we can already use Blender's dynamics to work together with AN node.

MOTION BY COPYING OTHER MOTION



Above will result of 2 x Suzanne to be always on the left and right side of Cube object, 3 units apart.


MOTION BY F-CURVE

When we hit I to keyframe an object transforms, we are very likely creating minimum of 9 f-curves for translateXYZ, rotationXYZ, and scaleXYZ.

I believe we could "sample" and modify animation curve using AN nodes. I have not yet looked into this, but this could be interesting.


JUMP AHEAD: F-CURVE ANIMATION OFFSET SNAKE MOTION via TEMPLATE

AN add-on gives a bunch of really useful templates to use and to study. Feel free to try them. Personally I found the templates to be pretty complex, however, can be broken down.


When I tried to create this snake motions, I was doing it like below. The differences between above and below is that:

ABOVE: From the template, we are able to create this Master and Slaves very quickly. One object is animated using f-curve, and then all the rest of objects, become slaves clones of another object / same object as the master.

BELOW: Here the node tree is using a simple Loop system that simply delay the motion of clones to follow one master. I am doing it in a way that I understand it.









AN MATH NODES


Reciprocal Number node contains lots of basic Math Formula that you can use for noding. Maybe it should be called Math Formula node? :)

Expression node allows you to more easily type formula and creates your own input variables and plugging your own numbers.


Sine wave + Cosine wave = Circular Motion (translation)



AN TEXT OBJECT

AN add-on seems to be capable of dealing with Blender Text Object quite elegantly. There are few AN nodes that are dealing especially with text/string type of data and output it into Text Object.

In fact, I have a feeling that we can talk and play with Text Object. String type of object is really very interesting. If you know Python scripting a bit, Python is pretty amazing when slicing, combining text, list of text, etc, etc.



You create Blender Text Object and use the eyedropper thing to source the Text Object on Text Object Output node. THEN, you activate that Text Input button thingy and input your own text.


Random Text node generates string of text characters.




Create List node & Get List of Element node

You will get this really often with AN nodes especially when you started to dealing with multiple inputs. You supply some list of data/values and then you pick an element based on "Index".

In Python, let say we have list of text:
mylist = [ "Apple", "Banana", "Papaya", "Durian" ]

mylist[0] => "Apple"
mylist[2] => "Papaya"



String of Text can be totally awesome, I cannot emphasis this more.

Imagine if we supply text like this:

  • 010001000100
  • 010101010101
  • 000100010001

Those text can easily become like audio beats to procedurally control animations!

OTHER RECOMMENDED LANGUAGES

I really do not want to overload you with programming theories, however if you are serious about node and procedural workflow, you may want to also side-learn creative programming languages below that are available and open source.

  • ChucK (audio programming)
  • Processing (creative visual programming, based on Java and Javascript p5.js)
  • Python (Blender scripting language and also language that is used widely in computer graphics and many areas).

You can learn it in tandem, but if too hard, you pick one below while learning tool like Animation Nodes (AN). The idea is to understand the logic and concept of programming and the flow of data, not so much about the language itself.

It is still pretty early to talk about animation inside Sverchok, however I decided to do this early on because PROCEDURAL ANIMATION is interesting area to explore and to understand.

This is something that is potentially become a lot easier to do (hopefully!).

NOTE:
Keep in mind that Node-Tree animation in Blender itself has limitation, like: animation cannot actually be viewed in Graph Editor as f-curve. Keep this in mind. The keyframes itself is viewable inside Dope Sheet and the timing can be tweaked. However the spacing or how fast or slow the animation is, cannot be adjusted, meaning the time animation is linear.

TIME => VALUE

Typically when talking about ANIMATION in 3D Computer Graphics, we talk about keyframing attribute / property / parameter in different time, and what happened is indeed a changing or interpolation between 2 different VALUE over TIME.

In animation, we have ORIGIN and DESTINATION of value. What we see is a smooth moving picture what we know as animation. We need around 15 FPS (frame per second) at least for it to start becoming smooth. 24-30 FPS is common for film. 60 FPS for current next generation game animation.

The animation interpolation can be LINEAR (straight line) or other type of animation curves to give the illusion of weight or a change in speed, ease in, ease out, a more naturalistic motion.

The VALUE over TIME animation concept can be applied to:
  • Any kind of Transformation data (Location, Rotation, Scale)
  • Blendshape or Shapekey animation = special Vertex Animation
  • Armature Bone animation => another transformational animation
  • Other keyable properties including custom property

VALUE => VALUE

There is also another type of computer animation, in which VALUE is changing dependant of other VALUE (of course TIME itself is a value, however we make a distinction in our case). Blender calls it DRIVERS. Sometimes it is also called Expressions.

DRIVER and EXPRESSION is something that is closer to Procedural Animation concept. And that is exactly what we will do inside Sverchok.

There will be some "limitation" to our ability to do animation inside Sverchok. But I think anything is possible with a bit of creativity. We just have to do it in the most raw and low level kind of thinking at the moment. Which could be interesting because we are setting up what under the hood.

Not the simplest, but still pretty elegant when things are setup carefully.

Normally when dealing with animation that is closer to the raw nature of computer graphics, the result tends to be more ABSTRACT, and this ART is often called MOTION GRAPHICS. The distinction is often made between CHARACTER ANIMATION and these type of animation.

Probably the abstraction just happens, because of these elements:
  • REPETITION
  • REPLICATION
  • LOOP
  • PARTICLES
  • DYNAMICS
  • SOUND
  • COLOR

MASH IN MAYA AND OTHER STUFFS

Maya, the giant 3D software have plugin called "Mash" that does some Motion Graphics trick.
https://vimeo.com/channels/mainframemash/
https://vimeo.com/67639794

That's a neat paid plugin from the demo. I have not used it, maybe I should give it a try.

UPDATE:
I downloaded MASH plugin for Maya, and played a bit with it. From what I understand, this is basically a clever framework for Maya's Particle System and Instancing.

Normally it would be quite complicated to setup all this. MASH actually make it quite easy to create some interesting motion graphics animations with repetition of objects:
- Distribute and Arrangement of Many Objects in Grid
- Animate Particle Instances along Curve
- Randomize Particle Instances via ID, etc
- Adding Random and Noise to the Movement of Particle Instances
- Controlling Particles in Trigonometry Motion (Sine, etc)
- Controllable Influence Objects
- Offset and Delay in Motion
- Control over Visibility



Overall, pretty impressive set of Nodes in Maya to make working with Particles and Instancing for Motion Graphics animation a lot more elegant.

However, even with MASH, there is not so much smooth workflow on the Maya Node Graph itself. MASH manages to connect all these advance Node with lots of attributes to have control over the array of Particles and Instancing, great for artists, however in the long term, this kind of framework is difficult to be expanded by artists.

One thing about current state of Node Editing and Graphing in Maya == it is a mess and a nightmare, basically. The node graph architecture seriously needs to change there. Houdini 3D node graph is a lot cleaner and much simpler to use.

Maya Node Editor is not a place to work.

I supposed, looking at this in regards to current state of Blender Particles and Sverchok, and thinking what could be potentially happening in the future, or what not, we are definitely in the good track.

One day we will be able to do all these more easily and more elegantly inside Blender! Let's hope so.

I heard that Cinema4D is probably still the king of motion graphics in 3D. I can agree with that, even though I don't use much of Cinema4D myself. Many Graphic Designers and Motion Graphics artist are using it and Cinema 4D Mograph has some unique quality about it.

Side Effects Houdini 3D can also do animation and some weird complex abstract animation, because the fact that in Houdini, animation is viewed as CHANNELS and CURVES. Every Points (or Vertices) in Houdini can be seen as Curves, which is really unusual.

If you want to do pure procedural animation, Houdini is a great one to get on. However, it can be very complex easily and you need more brain capacity to setup animation like that.

How about Blender and Sverchok? Well Blender can always blend it. I think SEMI-PROCEDURAL is what I would call it.

NOTE:
Always remember that Sverchok is a result of time and energy of its developers. Just like Blender, the development relies on hard work of developers, I think donation can help.

VIRTUAL <=> REAL ANIMATION

I will be talking about another concept here, which will relate to animating in Sverchok.

REAL => VIRTUAL
Take a look at this "QUMARION" robot puppet for CG Animators:
http://www.clip-studio.com/quma/en/

The Qumarion robot puppet allows animators to pose the robot puppet and having its pose information data translated back to the virtual figure inside computer.

The idea is not far different from Motion Capture, recording motion data from human or other creature or device and applying it into virtual character or objcets.

VIRTUAL => REAL
In Robotic technology, we control the robot using a simulation or a program.

VIRTUAL <=> REAL
What would be cool (a dream of many geeks) is to have interaction both ways.

Okey, you understand all above, what is this have anything to do with Sverchok and Blender?

BLENDER DATA <=> SVERCHOK DATA

Remember how I wrote that when we are inside Sverchok, we are working with "ghost mesh" and they are not real (just preview) and they are unlike the Objects in 3D View yet, until we bake them out for Blender to render?  Now, I feel that procedurally animating inside Sverchok will be a little bit like that.

I also mentioned that generating and modying mesh inside Sverchok is like working in Edit Mode of Blender. We are not really modifying the original mesh, but we are creating a duplicate of original mesh and we can do anything with it. The result baked mesh is a new object.

There is also this talk by Bret Victor about "Drawing Dynamic Visualizations":
https://vimeo.com/66085662

In that talk, Bret is discussing the idea of being able to manipulate DATA and VISUALIZATION BOTH WAYS. That is clearly a neat idea. And when working with 3D objects have been doing that to the certain extent without knowing it.

I need to make sure that concept is clear first before you continue on.

VERTEX ANIMATION and TRANSFORMATIONAL ANIMATION

So, if we are modifying mesh in Sverchok, or even animating ( when dealing with time and interpolated values) inside Sverchok, we are really animating the mesh components (VERTEX ANIMATION)

Now, what if we just want to animate the TRANSFORM (location, rotation, scale)? That is actually when we are modifying the MATRIX.

When we are actually animating the VERTEX or the MATRIX in Sverchok, we are really not modifying the real object in 3D view, yet. Not until we bake the animation data or pipe the animation back into object.

I will try to explore the possibility to make it as simple as I can. So that in the end, it is as if we are animating using DRIVERS or EXPRESSION.  I hope that the Sverchok developers can help to provide the nodes that does this in elegant way.

The GRAND IDEA here is to be able to PIPE IN and OUT the ANIMATION DATA, from and to or perhaps both ways between Sverchok and normal Blender 3D environment that we know.

In Sverchok, we often see, generate, manipulate the DATA as raw as we like to: NUMBERS. And that is what we can do. Generally though, the end users, just care more about the CONTROL and the RESULTING ANIMATION. Being able to interactively see the changes and then bake out the animation just like it was shown in the preview.


---- EVERY NODE COLORED YELLOW BELOW IS KEYABLE ----

SIMPLE VERTEX ANIMATION

Vertex Animation is what Sverchok is should be best at! There are plenty of nodes already that allows you to transform the vertices of any mesh object.



Remember that this is very different to actually "transforming" (move, rotate, scale) an object. You are really editing the component of the mesh here. This is just like if you are animating using Shapekeys.

In my previous post, I have kind of touching on how we can CLONE object into an animated line that is deforming like a SINE WAVE. That is also an animation.

BAKING VERTEX ANIMATION => OUT OF BLENDER
Baking out vertex animation is straight forward process. If the Vertex Count (total number of vertices) is the same, this can be done easily using Blender MDD or PC (point cache) export-import add on.

NOTE: If our Vertex Animation in Sverchok is changing the Vertex Count each frame (mesh not just deforming, but also generating or destroying vertices), we need to deal with it differently. Perhaps exporting each baked mesh as OBJ.

For example, the SAPLING GROWING animation below using Subsurf + Build Modifier can be replicated inside Sverchok.



SVERCHOK WAY:

The same effect can be used to "grow" Suzanne mesh:

EDGE:



POLY:




IMPORT VERTEX ANIMATION => INTO BLENDER

Importing back is also very simple, just use the Mesh Cache Modifier.

MORE VERTEX ANIMATION

Watch this video:
"Math for Game Developers" by Jorge Rodriguez
https://www.youtube.com/watch?v=sKCF8A3XGxQ

Now, we should understand about Point and 2D Vector.

In 3D though, we often care more about Vertices (that vertex in 3D space) and 3D Vector. And in Sverchok, you would deal with these guys often, but using node.

So, if we like to "move" the position of every points of a mesh, we can simply use Vectors Move node. By doing so, we really animate the Vertex in 3D space.

In the example node tree below, I am using the Frame Info node, output the current Frame in the Playback and use the value to move Suzanne in X axis.

The animation will be created when there is a value changing slowly (that our eyes can see). At this moment, I will only show you a LINEAR speed of animation. We have not talk about Slow In and Slow Out yet.


Ghost of Suzanne, escaping from her Shell.

Remember that when working in Sverchok, we really is working on the ghost of the mesh, until we bake out the result, whether as many meshes or simply bake the Point Cloud Cache using Point Cache Export and the reload it back into Blender using Mesh Cache.

That is few example of Vertex Animation. It is really not much different to animating using Armature Bones or when we are doing blendshapes using Shapekeys or when we are simulating cloth or softbody dynamic.

SIMPLE TRANSFORMATION ANIMATION



The basic concept to change the Transformation value is like above. What we want to transform and interpolate the matrix value over time so that we can have animation.

Let's look at an example using Empty.

Matrix Interpolation is one node we can use to linearly interpolate between 2 Matrix data.


You may notice that we can GO OVER, or OVERSHOOT the value beyond the intended SOURCE and DESTINATION. We can LIMIT that by using MAP RANGE node. We actually need that CLAMP option of Map Range, allowing us to Limit the value MIN and MAX for animation.



ARRAY MATRIX TRANSFORMATION ANIMATION

Remember "Vectorized Input"? Or "Array Input"? Dealing and animating multiple data, how exciting! We have come to this.

This is actually another reason of Procedural workflow. We want to be able to control a large amount of data, with as little effort as possible.

For ARRAY of transformation, what came up to your head right away? PARTICLES! Particle is indeed the common ways we like to deal with large amount of data. To be really good with procedural animator, we want to be God of Particles, I mean, really understand Particles.

With Particles, we commonly want and able to have control all below:

  • Position
  • Rotation
  • Scale / Radius
  • Motion vector of Particles
  • Color
  • Life / Age
  • Instances / Clones / Duplications
  • Other Types of Data
All above property of Particles also need to be animated over time. Animating by not so much by a mean of keyframing, but often by the use expression.

Personally I think Particles in Blender is quite decent and powerful above the standard. I believe that Blender Particles real strength is not yet shown, many of its feature is often overlooked.  Particle Instancing workflow is quite easy to use. It works nicely with Group and Referenced/Linked objects.

So, how can Sverchok deal with this?


Well, like I said at the first paragraph above, we are quite early in term of dealing with animation using Sverchok. But, then again, ANIMATION is what interest me personally and with some creative and clever setup, you can do it.

Sverchok would really needs:
- Special Instancing Node (!)
- Particle Nodes (!)

Regardless the limitation, let see what we can already do.

CHANGING MANY VALUES

Below is one simple example I could think of when we want to clone many objects and have a bit of animation. However, as you may see the animation below is not really a typical animation yet because there is no in between. This continues changing of many values is created by changing the SEED value of random.



What would be nice is that for every different variation of STATE created by RANDOM SEED, we can interpolate the value for each.

Let's keep it simpler for now. Just a linear one and all moving at the same time.




ANIMATING MANY VALUES, WITH RANDOM VALUES

To do this, our best friend is the MAP RANGE node again. 

As we know it, the TIME is always linear, it goes from START to END and does not skip or jump around. In Sverchok, we have one node that does time, it is the Frame Info node which output the current FRAME in TIME.

Using that single TIME value to control many values we can use an ARRAY of RANDOM MIN and MAX, and Map Range node is come in handy.

Imagine a single Animation Curve. And now, instead of a single Animation Curve, we are create an Array or many animation curves.



Above, we are not really offseting the animation though. We are cheating the motion by randomizing the START and END, or the ORIGIN and DESTINATION. However, the time itself is still linear without any offset for each "growing animation".

However, being able to slightly randomize the origin and destination can be useful in the future if we want to have rubbery elastic jiggle effect. Or "boing-boing" kind of animation until it settles. 

ANIMATING MANY VALUES, WITH DELAY

Delay is a slightly different one. It is as if we are having our own time and offsetting the time.

This will give a lot more natural feel when animating many objects. Natural animation should never start and stop at the same time.

The idea is to randomize the QUEUE of animation within a single time line.




If I get rid of VARIATION in ORIGIN and DESTINATION, it is probably more clear:



You can use this simple concept to setup DOMINO EFFECTS using Sverchok.

SPECIAL UPDATE: Domino Effects Setup in Sverchok

Setting up Domino is an interesting problem inside Sverchok. We have all the nodes to do the job, so this is a fun exercise.

There will be no dynamic with Procedural Animation setup like this. Everything will be driven by values.

1. We draw how we like the Domino to be arranged in the 3D Grid Floor.
Keep it simple, just draw flat Curve using Grease Pencil. Convert GP into Curve.



2. Inside Sverchok, we can Resample the Curve and we already know how to.




3. Clone your "Domino" object. We use Box for now.
If you just clone the domino, you will notice something is not right. The domino is not oriented properly.


4. Orient Points Normal Along Path
This is when the fun stuff begin. We need to calculate the POINT NORMAL along the curve path. We can approximate that by doing Vector SUB, basically the [position of Point at the Front - the current position Point]. We use List Shift for this.



I did the setup above, but it is not perfect, there is one last point whose normal is not pointing correctly.

Linus helped me with an example, so the correct setup is like below:



5. Finally, we want to animate the Domino rotation.
How do we rotate each domino? Simple, we just offset the time for each Domino and we set the min and max or the CLAMP LIMIT for ORIGIN and DESTINATION animation.

For each Domino rotation, the angle goes from 0 to 60 degree. We just need to figure out how to offset the animation for each.




What cool about this setup is that we can REUSE it simply by giving a different CURVE INPUT.

ANOTHER EXAMPLE OF ANIMATING MATRIX TRANSFORM WITH AND WITHOUT DELAY

Random positions => Interpolation => NEW Random positions (NO DELAY OFFSET)




Random positions => Interpolation => NEW Random positions (WITH DELAY OFFSET)

All we need is a construct like below and plug this into the Matrix Interpolation Factor. Below, I further create a setup of ORIGIN and DESTINATION + RANDOM POSITION with 2 x EMPTY.



Once we have the Matrix Setup, we simple bring in any objects. Below is the full setup.



Believe it or not, this is actually the basic concept to do things like controllable Crowd (a bit more complex).

Blender Game Engine actually has some interesting behaviour algorithm. Don't forget we have Blender Particles and we can actually use Blender Particles positional data in Sverchok via Blender Particles.

In a way, Sverchok is potentially become:
- Procedural Modifiers
- Procedural Drivers
- More Robust Controllable Instancer

There are many areas that I have not got time to explore yet.

Such as:
ARMATURE and BONE animations. Maybe we could actually create a setup that drives BONE + ACTION MODIFIER, for a single character. Just for simple animation like from sitting down to standing.

Or maybe animation of Centipede Legs, that will be interesting. Any kind of robotic animation maybe.

Unity has this ANIMATOR feature that enables for switching state of animation and blending between animation. I imagine something like this would be nice to have.

CLONING ANIMATION WITH OFFSET (?)

This is also known as: ARRAY ANIMATION.

I am sure this is actually possible. A way to have an object animated in the scene, and the CLONES inside Sverchoks to follow the animation with some kind of OFFSET and DELAY controls.

Not sure if this is going to be simple and elegant, yet! Coming soon....

ANIMATING WITH DYNAMIC VERTEX GROUP (?)

Yes, this is actually already possible.

We don't have control over the VERTEX WEIGHT yet. However we do have VERTEX GROUP and the VERTEX GROUP can actually change with Dynamic Paint over time.

I probably should not discuss it in this article, maybe in near future.

MKRdezign

Contact Form

Name

Email *

Message *

Powered by Blogger.
Javascript DisablePlease Enable Javascript To See All Widget