Halloween Costume ideas 2015
Articles by "node"
@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

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.



Hello I am back and well still alive =) Thanks for staying tuned to this BS channel.

Warning: Skip My Diary and go directly to (*) if you want to get to the topic.

WHERE THE "PHO" HAVE U BEEN...

After over one year of "hiatus", time for my brain to switch back to Blender --- well it is more like I was very lucky to have part working on this TV series called Figaro Pho: The New Adventures of Figaro Pho.
https://www.abccommercial.com/contentsales/program/new-adventures-figaro-pho

It is a long story in itself, but the whole 39 episodes are a great work experience for me, having to work with some talented amazing animators, lighters, vfx artists and developers, taking care of the layout assets until it is ready to be lit.

For The New Adventures of Figaro Pho animations, LUMA TOONS is using Maya for modeling, animation, lighting, pipeline, layouts, vfx, Arnold for rendering and Nuke for compositing.

Is Blender being used at work? Unfortunately not. Pity. Maybe one of the devs are using it, but I don't have access to it. Most of the pipeline are built on Maya, Houdini, Mari, ZBrush, Nuke, and lots of Python scripts.

All in all,  I really think Blender Foundation really should be looking into making Animated TV Series like Figaro Pho. While FIGARO PHO is truly "Australian made" (a work of International artists and local born Australian) that one can be proud of.... any works made in BLENDER is even something that everyones can be proud of even more. It's the result of collaboration.

So, Figaro Pho is around 7-8 minutes length per episode, not too long, solid story, fun characters, well directed, with soundtrack, etc.

Blender is certainly more than capable of creating such awesome works, and I know some artists out there are already doing it. Moreover, Blender is such an open collaborative tool, it can be used anywhere.

Working in the industry is nice, you get paid regularly, you meet some nice people, you work as a team, you produce works that you can be proud of, you drink coffee/beer a lot, you do celebrate good times... But I think, apart from that, as individual, you also need to stay and stick and a place where you can continue to learn and study new skills. You do not always get this opportunity or motivation out there. Your attitude and self drive is really important.

I highly recommend you to watch all the NEW 39 episodes of Figaro Pho. There are also some older episodes of Figaro Pho done at different place and time, a bit darker, quality is not as great as latest Figaro but still worth watching. You probably can find on YouTube.

This season 2 of Figaro Pho also has some great VFX, animation and lighting works, it is a good case study for CG artist and storytellers. Maybe you can see it on Netflix soon. At the moment it is only showing on Australian ABC3 TV, can watch it on iView app.

That's my little thought on the whole thing. Now let's get back to the topic...

*ANIMATION NODES (AN) IS ... AN AMAZING TOOL

Just the other day, I stumbled into Jacques Lucke's ANIMATION NODES Showreel 2015 on Vimeo (now the video is also on YouTube --- better for sharing and streaming, as you can watch yourself above). I was hooked.


The original AN thread, still going strong is here:
http://blenderartists.org/forum/showthread.php?350296-Addon-Animation-Nodes

AN was first launched in September 2014 (first post at Blender Artist), I am really curious of when actually he started writing this AN add-on for Blender. A quick search you will find that the creator of AN is a young brilliant artist, 18 years old from Germany (!).

You want to start by installing the Animation Nodes add-on, give it a try yourself:
https://github.com/JacquesLucke/animation_nodes

TIP:
Download the add-on as ZIP. In Mac, sometimes Safari automatically uncompressed the zip into normal folder, you just re-compress it and then install the add-on from Blender Preferences.

SVERCHOK x AN?

While Sverchok was born with procedural modeling in mind (I think that's what Nikita envisioned), AN seems to focus more on procedural animation. They both are similar, but with differences. One is so curious what will happen if all Sverchok developers and AN developers put on stage and battle each other, it would be so eye-opening.

Actually both add-ons can "talk" to each other already. Like Zeffi said, "Scripted Node" can help you with this. They both have Script Node too.

You could really make some bunch of points or some procedural MESH construct and let AN takes over the MESH data and do something with it. It's weird how they two works together.

I don't know if anyone can answer this, but in Houdini, I believe we can assign custom attribute to a Point / Vertex, and then that custom attribute gets carried around different node-network. Maybe such thing can happen.

Conceptually speaking, I remember Sverchok developers talked that Sverchok is like the Russian Matryoshka dolls, nested lists and Python. It is beautiful and bad-ass way of thinking data in Python and how Pythonic Sverchok is.

AN probably has its own way of thinking, which we will explore and found out. Maybe "LOOP" and "ITERATION" is key in Animation Nodes.

Ping Pong animation.



This is one video that has that LOOP concept that you will eventually need to understand:
https://youtu.be/hCzwcyieHto?list=PLFSQhJg6cGLIZwDpScK1v1m1NSZnrCTQN

As soon as you understand that concept, you can make "subprogram". It sounds a bit scary, but it will take you far to advance level from the basics. You can quickly create your own node that iterates or repeats a certain function that process input and output.

Sverchok actually does this too, but the emphasis is different. Not as obvious.

Later on, if I have time to write about this loop and iteration in depth, maybe we will figure out more things together. Because eventually the aim of using tool like Animation Nodes is being able to ANIMATE many objects at once whether using f-curve, or using your own generated values.

In that past, one might have tried to do this using Python scripting and Blender's Drivers. Or perhaps using Particles and Instancing. Then one also tried to use Sverchok, remember that time when we drive Objects using Vertices of Mesh? Yep, you can somewhat do that using this ANIMATION NODES and quite elegant way too... like you always dream of.

So you can tell Blender to do this using this AN:
- Hey I have 5 spheres and I want to wiggle them all in random ways
- I want to scatter and scale the faces of this polygon mesh at random frames.
- Can you drive these objects and automatically animate them to follow this music
- Paint objects based on proximity with another object
- Open up and animate these hundreds of doors or flaps at slightly offset time
- Use "eyedropper" tool, get object in the scene, create clones that follows



If you ask me which one you should learn, Sverchok or AN, you probably should try both and see which one clicks with your brain.

Sverchok handles the mesh components more deeply, while Animation Nodes (AN) will make objects in motions rather quickly and easily.

They both can get complex and create amazing procedural works, but do not worry because if you know what you are trying to achieve, you will get it, someone out there will provide the answer.

While learning this node-based system, you also want to get serious with Python scripting. It is (not) too much to ask, but really by doing so, it will help you a lot to grasp many of the basic concepts such as Data Types, Data Conversions, etc. You will be dealing with values, numbers, float, boolean, integer, strings, matrix, vectors, rotation, list... all those alien stuffs.

If you don't know, there is also tool out there called Processing, now already Processing version 3 that also can help you with learning the concept of programming:
https://processing.org

The advantage of nodes is of course you can see 3D objects moving around when you are playing with nodes. It is more interactive and everything is neatly contained as a node that you can noodle together. So much fun:



Ok, I am still figuring out this AN nodes, but potentially I can see this thing go bigger. It already capables of driving and animating thousands of objects procedurally. You can create a complex setup so quickly under few minutes.

MY NODE LEARNING METHOD

Normally when I am looking at yet another new node based environment, I would start by looking at the available examples and video tutorials. Any documentations will help.

Luckily there are quite a few tutorials and demos already from Jacques himself. Lots of silent videos, just the way I like (it makes the user works harder and think about what happening!).

https://www.youtube.com/channel/UC5ABAuGEvBMmau-1xJsNw6w

Remember that Node-Based workflow is a visual thing, so normally you can see how things work if you get the BLEND file.

Of course the node-tree WILL get super complex at some point, when it does stuck, you are looking at the wrong examples. You need to understand and start building basic simple node tree first.

STRAIGHT JUMP INTO IT
Create a new node tree and Shift+A to check the available nodes. There are 170+ nodes already (Jacques said 179 animation nodes).



Ctrl+A allows you to quick search node by letters or words. Useful when you are more familiar with the nodes and remember it by name or if you want to guess the node name.

At this point, I think the node does not come with help or decription (?). There might be already documentations written only for every single node, one just need to find it. Some nodes are self explanatory, if you have some coding/programming background.

Object Replicator (OLD) is now Object Instancer:


Watch Out:
Mind you that this Add-On keeps getting updated from time to time, and some node network might change. This is the nature of the beast.

EXAMPLES AND TEMPLATES

In latest AN add-on, which I installed yesterday, it comes with lots of useful "Templates". I actually missed this until I watched one of videos. Anyway, I should point this out:




KNOW HOW TO DEBUG (AND ASK)

I have only tested this AN add-on for a day. However, I found that it does fail sometimes, need refreshing or re-invoked in order for the setup to work.

There are some "debug" nodes in AN that you can use to see the data. This is very helpful.

Eat your Apple...

I will definitely get stuck and need to ask the developers, or ask other artists. Blender Artist forum, especially the AN thread is a good place to ask. It is so easy to lose track sometimes.

DO WRITE YOUR OWN NOTES
Blogging is good, especially if you are learning something. Very likely you will help yourself to keep in track of what you are learning, and helping others at the same time.

Really, lots of ideas come out of the blue when writing. Sometimes I still write and draw using pen and paper too. It is strange how our brain works, that.

I recommend you to do this, go to local public library, immerse yourself amongst strangers, get a good computer, download Blender, and start doodling there. Show off what computer and Blender can do in public.

TEST, MAKE MISTAKE, AND DO IT AGAIN UNTIL IT WORKS (REPETITION)
Just like writing programs, you learn by writing it. Not so much of memorizing how to write the program, but to understand the concept of what is going on, spot a problem, solve the problem. You will soon find out that there is not one way to accomplish one thing, but many ways.

Collect bit and pieces of simple good node networks, and combine them to do something complex. Every little bit you make can be useful for others.

WHAT IS NEXT
Of course, the only "issue" is to find time and aim to learn and re-learn all this. The tools that Blender has provided, and this kind of awesome node-based add-on, is seriously under utilized sometimes.

Hopefully I could dedicate my time in the next few months to study this AN, sharing some findings, and make some use of it. I am a year behind of following the ANIMATION NODES thread. There are already some others Artist Developers with big interest with AN development, already sharing lots of cool stuffs.




Still problems to understand the concept? 
Watch the video again or TRY IT YOURSELF! - J.L.

There is a new super interesting Add-On and ATOM called it Blender Graph Add-On, parametric tool for Blender that supposedly can emulate ATOM's previous add-on such as:

  • RE:Phrase
  • RE:Lay
  • RE:Ticular
  • And it does a lot more...!

Read more about this Blender Graph add-on and download it here:
http://blenderartists.org/forum/showthread.php?322496-AddOn-Blendgraph-2-69-(parametric-modeling-and-animation)
http://www.blenderartists.org/forum/showthread.php?317207-Blendgraph-A-Node-Based-GUI-%28dev-tests%29

BLENDGRAPH FIRST IMPRESSION

Just the other day, I was watching ATOM's video about his Blender Graph Add-On:
https://vimeo.com/82848133

After watching it once, I really like this Add-On! Why? Because this BLENDER GRAPH is probably the most intuitive and easy to use Blender Add-On that does Procedural (or Parametric) Animation and Modeling.

I reckon that this is not really an official final implementation of Blender node-based procedural workflow aka PyNode. However it is a very clever hack and useful to create certain procedural animation.

I guess this one is worth looking at and experimenting if you are into this kind of system. You might be able to create interesting setup for yourself easily.

SEE ALSO: SVERCHOK
There is also this Sverchok Add-On, slightly more complicated than BlendGraph and I have not looked into it too deep.
http://www.blendernation.com/2013/09/05/sverchok-add-on/

Anyway, for now, I will look at BlendGraph first.

I am going through read through the forum post and ATOM's post at Blender Artist.

In the mean time, I will try to digest and process the information available.

WRITING DOWN NODE NETWORK

Based on previous experience using Houdini and Maya SOuP, I often find the need to note and write down nodes and network connection. Of course, a lot easier to look at the final network visually, but noting it down can certainly help to understand what is happening.

Not necessarily writing down and memorizing step-by-step of how to create a certain system, but to efficiently writing down the procedure to recreate the network.

<< This should be applicable to Shader Node and Node Compositing as well, I guess. I am going to get serious on that area hopefully soon. >>

Let say, I watched ATOM video example on how he create his Parametric animation of Text String.

I don't want to always watch the video or memorizing every step. I need a note that I can look quickly or maybe scripted to re-create the network. How would I do that? Something like below.

NOTE: I am basically roughly using ChucK programming to write down procedure.

RECIPE 001:


  • Font Repeater Node (main node)
  • Float Node
  • String Node

NODE CONNECTION :

StringNode.output => FontRepeaterNode.ListIn
FloatNode.output => FontRepeaterNode.Spacing
FloatNode.output => FontRepeaterNode.Extrude


RESULT:


Ok, you probably got the idea now. So I am basically just writing down nodes I need. Breaking each part of connection and finding ways to 

RECIPE 002:

  • Font Repeater Node
  • Random Node
  • Integer Nodes
  • Float Nodes

NODE CONNECTION:

Sometimes just having the screen capture of node network is enough, actually. For simple examples like these. However, when node starting to get complex and network got collapsed and deeper (multi-layered network), then we need a way to write it down.


It's like a step-by-step of cooking recipe. It goes from top to bottom, and we make notes for every important parts. It is really like pseudo-programming.

// To Create And Display Random Value Letter

// Setup Random Node
Integer.out => Random.Lo
Integer.out=> Random.Hi
Integer.out=> Seed

// Convert Random value into Integer value and plug into Font Repeater
Random.out => Integer Node.in => FontRepeaterNode.ListIn

// Additional connections
FloatNode.out => FontRepeaterNode.Spacing
FloatNode.out => FontRepeaterNode.Extrude

RESULT:


RECIPE 003:

  • Random Node
  • List Node
  • Font Repeater Node

NODE CONNECTION 003



I basically have list of objects piped into List Node.

{Apple, Papaya, Orange, Mango, Coconut Durian} @=> ListNode.ListIn

RESULT:


If you watch the Outliner closely, this BlendGraph is changing the content on the fly based on whatever input is piped in.


RECIPE 004

Same like Recipe 3, with additional String Node where we input the Animatino Transform of an object that will be an input for our letter. This is basically following ATOM's Video Tutorial on Font Repeater Node.

RESULT:

The animation of Suzanne head is now REPEAT-ed and OFFSET-ed for each letter.

RECIPE 005

  • Timeline Node
  • Math Function Node
  • Font Node

NOTE CONNECTION 

Timeline.FrameCurrent => MathFunction.Input => Font.Copy



RESULT:


NOTES

  • Need easier way to copy Shader Material for each parametric object (the letter).
  • Supposedly for Font Repeater, the Transform animation (Position, Rotate, Scale) is respected, but I cannot use Scale zero in this version.
  • The setup is no longer working when Blend files is re-opened and saved using older Blender
  • Need a more intuitive way to work parametrically with objects and transfer the setup from one object to another object. For example, I created the Parametric Beam object, then I create multiple Note Tree, how do we actually switch from one node network to another and update the current object?
  • This Add-On is still very young, and under development, so I guess we need to wait.
To copy Material to many objects, one still needs to do this:


IF WE DIG DEEPER...

I am intrigued to understand how each node is created, so I look up some of Python code that create the node. The Parametric Beam Node is a really good example, but it is rather complex example for beginner like me (if we read the code). Maybe you with more programming experience will be able to help ATOM develop this Add-On.

However, we can use the Parametric Beam node quite easily. And the cool thing is 

Procedural Pipe Object is cool.

I found the nodes py for BlendGraph here:
C:\Users\Jimmy\AppData\Roaming\Blender Foundation\Blender\2.69\scripts\addons\blendgraph

Just careful when modifying those nodes. You may screw the Add-On. Create backup. 


Hey look... the Object Node has Location, Rotate, and Scale commented out. I guess ATOM is still developing this part too.


CONCLUSION

It is still very early in development of BlendGraph Add-On. My wishlist, I will be very happy:
  • To able to drive Location, Rotation, Scale more procedurally
  • TRANSFER, REPEAT and OFFSET procedural animation to many objects and the effect is LIVE.
  • And maybe something resembling Houdini's almighty COPY node.
  • More procedural way of working with drivers and offsetting and randomizing animation
I think at this moment, Font Repeater is the most "complete". But I would like to keep eyes on this BlendGraph Add-On.

Very exciting Add-On and super impressive. If this continue to develop similar to Peter Shipkov SOuP plugin for Maya, it will be amazing.

I am definitely looking forwad to ATOM's next video tutorial! Good luck developing this Add-On, ATOM!

The inception of Particle Info node.

I wrote a bit of Object Info node and Strand Info node not long ago. I think I should also write a quick post about Particle Info node.

There are already few great video tutorials out there touching on this topic of Particle Info node and Cycles, but anyway, I will just write this post just as a note for myself and hopefully can also be useful as quick reference fo you.

Particle Info node as first mentioned at Blender Developer Blog:
http://code.blender.org/index.php/2012/05/particle-info-node/

WHAT IS REALLY PARTICLE INFO NODE
Maya has this Particle Info node. Houdini also has this similar node. But, I personally think that Particle Info node in Blender is the most clear and simple in term of usage and application.

Similar to Object Info node and Strand Info node, Particle Info node is exposing specific data values and make it available for Look Development (Shading, Texturing, Lighting), and for our case, it is made for Cycles real time Material and Rendering.

Blender philosophy seems to be more toward procedurality, where are you are able to pass and manipulate data from one node to another node more easily.

Particle Info nodes is exposing and passing these data: index, age, lifetime, location, size, velocity, angular velocity, that we can use to Map or as Factor for other data.

THE BASIC SETUP
You need some familiarity of Blender Particles basic (emitter, instancing) and Blender Cycles node-based Material in order to understand this.

I am just going to show the basic, exploring this Particle Info node while writing notes for every useful finding.

My Particle setup for this is super basic, just the "Monkey Rain" setup with a single Suzanne monkey as a  instance copies:

That Suzanne monkey object selected is the INSTANCE object. The rest of monkey falling down is just a copy of that single monkey object.
Particle Info node will be used inside the Material for Suzanne (the master instance object).


PARTICLE INFO: Age and Lifetime + Color Ramp
Every single Particle has Age and Lifetime value. Age is calculated from the time a particle is born, while Lifetime is the how long Particle is set to live.

By default, when you create Particle System, the value is as below:

Lifetime = 50, meaning every particle will live up to 50 frames and then die. You can randomize the lifetime (Random) if you like a bit of variation.

Age will start from value of 0 when the Particle is born on a particular frame.

How can we use this value to affect Cycles Material? It is very straight forward, we just pass the data.

For many of our purpose, we will be using Color Ramp node.

This Color Ramp node is a handy little node that shows Color gradation, and when used with data output from Particle Info node as Factor, we can visualize the changes.

In order for Color Ramp to show value from beginning Color to end Color properly, we should always make sure that the Factor (Fac) value is normalized (0-1). So for our purpose, we use Math node, set to Divide) to divide Age with Lifetime.



So, with everything in default value, we have result as above. Particle Color Diffuse goes from Black to White from the time it is born until it die and disappear.

If we change the Color Ramp node value, we can see more clearly what is really happening.




PARTICLE INFO: Age and Lifetime + Mix Shader
With similar setup above, we can then do the same thing to Mix Shader. Let say, we like the Particle to fade from original material (for example Diffuse Shader) and become transparent (Transparent Shader) overtime. That can be done as easily as Color Ramp.



PARTICLE INFO RANDOM
For random color, looks like we can simply use Object Info node as a Factor for Color Ramp and this works for our Particle Instances which is nice.



PARTICLE INFO: Size + Color Ramp
Next thing we can pipe to Color Ramp is the Particle Size via Particle Info node. You probably understand this by now.

I first randomize the Size of Particle from the Blender Particle System Property:




PARTICLE INFO: Location + Color Ramp
Particle Location is an interesting one because it is a Vector XYZ value, which means it carries 3 different values depending on Particle Location.

When I pipe the value to Color Ramp anyway, it will show the gradation as expected.



With Location value, it is probably clearer if we use Grid Texture and see how the color is distributed for each Particle in 3D space:


With the same method we did for Object Info node, then we can pipe in the Location value output from Particle Info node to UV Image Texture, which gives us the LED grid that we are already familiar with.


If our Instance Object is simplified to a Cube, then we get something like below:


PARTICLE INFO: Location = Color

If Particle is static, the color will be Black (0,0,0 velocity value), but if they are moving or have velocity other than zero, you get color.

For example, apply Turbulance Force to the Particle System so that each Particle has some kind of Velocity value (also a type of Vector value, to depict direction velocity of Particle).



Alright, so this is all the basic that I can think of. Will look for more advance setup next time. I bet plenty of questions start to arise by knowing all this basics.

This should prepare us for future development Blender Particle Node system.

MKRdezign

Contact Form

Name

Email *

Message *

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