Halloween Costume ideas 2015

SVERCHOK / Controlling the Flow of Force

RANDOM PIXEL SYMBOL GENERATOR
On each update, we have more nodes inside Sverchok Add-On. Thanks to our small but awesome team of Sverchok. Things are started to get more interesting, in my opinion.

I am really hoping Sverchok can remain steady in development. I also hope that this can be integrated with the rest of Blender.

Apart from curiosity, what motivates me in exploring this Sverchok Add-On, is its POSSIBILITIES beyond what it seems. I continuously questioning things that are possible or not possible, and often find out that we can already do that whether it is built it, or via Scripted Node.

I am looking forward to the day when Sverchok is:
- Able to work with Material and UV
- Able to work with Vertex/Point Weight and other arbitrary data
- Able to work with Curve, NURBS and all kind of NURBS Surface creation
- Able to interact with the rest of Blender: Particles Dynamics, Game Engine, etc.

With growing list of nodes, we surely will need some kind of WIKI for each Sverchok node. It should have:
  • DESCRIPTION & FUNCTION
  • INPUT AND OUTPUT DATA
  • EXAMPLES
One day, maybe someone would even come up with a book or a bible, who knows, maybe titled something like this:

"The Sverchok Diary" / "Diary of Crickets"
An exploration of Parametric and Procedural Creation using Blender and Sverchok Add-On

<<< Sorry, I am thinking way ahead of my head :) >>>

MANAGING GROWING LIST OF NODES AND NODE TREE

Some nodes in Sverchok are "more powerful" than other nodes, below are some of my favourite powerful nodes and I often use, they deserve a mention:
- Scripted Node (SN)
- Intersect Edges
- Fill Holes
- Adaptive Polygons

However, those nodes are even MORE POWERFUL when COMBINED with the rest of nodes. One day, hopefully we can really have a true "Compound Nodes" via Grouping.

Remember that we can also IMPORT Node Tree from other BLEND files easily, via File - Append. From today, I am going to start to organize all my Sverchok related BLEND and name the Node Tree. I am happy to share some of the BLEND with you, I think some of the node tree are useful.

PHILOSOPHY OF FLOW AND MODULARITY

Cheers to Mr. Zeffii for pointing me to these inspiring man named "Bret Victor" and I think if you are into procedural kind of thing, then you must watch all his videos and look at his work:

BRET VICTOR
https://vimeo.com/worrydream
http://worrydream.com/

POINTS TAKEN:

  • Have own principle
  • Creator and creation need instant connection

DAN LYNCH
"Flow-Based Programming"
https://vimeo.com/72855695

(Dan Lynch seems to have background in 3D using Houdini and used to work at SideFX)

POINTS TAKEN:

  • REUSABLE: when working the procedural way, we do not simply create tool for ourselves, we actually create TOOLS that other might use as well.
  • Experiment with nodes yourself if you want to get a better understanding.
  • Do share your Node Tree with the rest of the world.
  • Think direct manipulation of Abstraction
  • Think modularity and dependency
  • Think visually when coding and noding
  • Encourage changes, make it manageable
  • Encapsulate the Code into Node

DISCOVER MORE YOURSELF

Let's recap what we have learn or discover from Sverchok so far. Quickly go through the basic again for refreshment because very soon I think I will talk about more intermediate difficulty stuffs.

With Sverchok, we have direct access to LOW LEVEL DATA, without programming or coding.

We can generate or mess around with any component of mesh as we know it: VERTEX, EDGE, FACE (POLYGON). We also deal with them in term of POINT, VECTOR, MATRIX.



We are working with DATA, which often comes as LIST within LIST within LIST, or NESTED LIST. And we are also working with VECTORIZED INPUTS or ARRAY OF DATA.

Normally you want to use Viewer Text node and display the DATA in Sverchok style.


NEW: Debug Print Node

This new node is handy if we want to "print out" data into the console. 



TIPS: You can also use the Text Out to see Sverchok in LIST format.

At a glance, Sverchok might be similar to:
- Houdini node based
- Maya SOuP and some of Maya nodes
- Softimage ICE

Those are available in commercial package for price of $$$$ and those can scale into complex and very, very complex. Sverchok is still a smaller scale and growing.

Was already mentioned that Sverchok is based of "Grasshopper" plugin for Rhino for Architects and Designers. How old is Grasshopper? Maybe over 9 years, so this Sverchok is just an infant and a lot of things to catch up if we are going toward that target.

However, I believe that Sverchok is UNIQUE because of the fact that it is inside Blender and the way Sverchok displays DATA is UNLIKE any others. Sverchok is also VERY PYTHONIC, I don't know how to put it any other way. Sverchok developers can probably talk more in depth about it and what makes Sverchok attractive and different.

One thing I am sure:
Sverchok is a good learning tool for both programmer and non-programmer when dealing with Procedural Mesh creation, and more.

At this moment, there are actually MANY things that Sverchok still CANNOT DO, such as:

"EXTRUDE". Sverchok "cannot" extrude.

What? Sverchok still cannot extrude? How we even start 3D modeling?? Ok, well, we probably "can", but not simple as you might think of.

If in Houdini, for example, the procedure goes like below:

1. Generate a Grid
2. Group some Faces (Polygons) based on Patterns, name the group.
3. Extrude those Faces inside that group above.


In Sverchok, we still kind of need to hack it using Adaptive Polygons.


Explanation of a very simple Node-Tree above:
1. I generate a Plane
2. I use Mask List to mask "every other face".
3. Further down the line, I use Adaptive Polygons and replace every face with a Box.

This is not really an extrude operation, but that is I think what we have for now. Still good enough for random building creations.

We can replace the INPUT of NODE-TREE above with Suzanne Monkey Head geometry and get something like below.


We now have half of Suzanne head, each of Face is replaced using Donor Geometry. Can it be more like "every other face".

Well, for that you need to go inside and explore, start asking:
- Maybe the arrangement of Polygon Face for Suzanne Mesh is different
- Maybe we need a different Pattern for Mask List



Regarding "Extrude", we could probably do something like this. A bit different.


I tried to think of inspiring quote in relation to this, how about this one coming from Bruce Lee:
"A man must constantly exceed his level."

I realized that I know nothing about this.

I mean the more I know, the more I realized I know very little and there are a lot more to explore. I used to think that 1 km is a far distance, because when I was little, I use car more often. But these days, I walk a lot and I can walk 20 km a day without a problem. That is around 30000 steps.

Not sure if that is a good analogy. Anyway, continue on.

What Sverchok CAN ACTUALLY DO might surprise all of us.

EXAMPLE: Working with Text Object

At this moment, we can think that Sverchok it is already pretty good at generating mesh and modifying mesh. What happens inside the Sverchok is totally NON-DESTRUCTIVE. I said we are like working with Ghost Objects, they are not real until we bake them. And what shown by Sverchok Viewer Draw is just a preview, it is also a DUPLICATE of original data. Original data stays as it is. This is something important when dealing with complexity.

Supposed we are working with Text Object. I like working with Text Object because they are simple but quite powerful in Blender and Sverchok can use the Text Object and see the DATA as Vertices, Edges, Polygons. We will also discover something funny about Text Object if use them inside Sverchok because of the face that it is a MESH OBJECT and made of separate elements.


We get a different result when we apply LIVE Modifiers to the Text Object, such as: Extrude, Solidify, Remesh and then process it inside Sverchok with "Post Modifiers" checked.


Anyways, we don't care about those details, I want to show you have we can create a random string of ATGC like for DNA structure.


From above Node Tree, where we first deals with "Center Point" of each separated text, we can continue wire the nodes for other purpose. In this case, I know that we have 4 alphabet letter and I really just want to create CLONES and arrange them in any TEMPLATE MATRIX we gave them.

We can use LIST ITEM node for that.


We are starting to deal with a bit of complexity here, which is ARRAY DATA or VECTORIZED INPUT.

The VECTORIZED INPUT needs to be connected to the LIST ITEM "Item" socket. For simplicity, we will use LIST INPUT node for now and just have 4 list of data.


This is starting to be clear. We can probably now just supplying RANDOM LIST OF DATA that goes from 0-3. We can use RANDOM and MAP RANGE node (NEW!).


And so, the next thing, is to PARAMETERIZED the INPUT that we like.


At this stage, we can further do all kind of stuff to it. I think this is the most fun part. We can use other LIST nodes:

  • LIST SHUFFLE
  • LIST SHIFT


Change the INPUT:

If we use Multiple Mesh as INPUT:


I dare you to try Particles x Sverchok. It is not mentioned, but it is possible.

INTERESTING SURPRISE

Very often, I found, after few months of researching and exploring Sverchok, I encounter interesting thing. That I never thought about, but found by surprise.

Let say, I generate Plane object. And my idea is: How about if we "randomize the position of every edge"? Can we do that already?

I started by doing something like this:

Hmm... that is not quite what I expected. What is going on? I did separate the edges, and I can see that by looking at the NUMBERS shown from every socket of INPUT and OUTPUT.

Where I was wrong is probably that at this moment, I am giving the same 3 random Vector values that got repeated over and over again.

What if I use LIST REPEATER, I wonder and tested it out, changing the parameter, and MAGIC happens:


It is totally working now! All I need to do is tiding up the setup, with VECTOR MOVE, we always want to have control over the MULTIPLIER.

We can now have endless random lines to the horizon.


That's cool. Now, it is just a question of WHAT IFS ....

We made the lines to be random in POSITION at the moment, we have not played with SCALE or ROTATION yet. We can do that if we want to.

I will just kind of "remove" the random Z values and make every lines FLAT, because maybe I can use INTERSECT LINES node to make an interesting pattern. This part is easy.



Next, I want to CENTER PIVOT every Edges. We cannot use Vector Drop apparently, so I might try Bounding Box node.

NOTE: Vector Drop doesn't work with edges, as it needs more than two points to figure out the orientation of the input object.

I did a small test using Bounding Box and what we learned in previous post:

So, back to what we are working on, I made a new Node Tree setup like below.


I can do something more crazy like random rotation.


What I really want is something like below. Get rid of rotation complexity for now and have something like below:


And THEN, we can do this super combo of nodes:


With some more tweaks we can have an interesting generator for Maps for something that might more naturally represent City spreads.





The Map Mesh is rather clean, which I like about it. I manually extrude it below, because we don't have Extrude node yet. We can use Adaptive Polygons, I guess.



Below is an alternative. I cannot explain everything in details.



The RECIPE is surprisingly simple and can be summarized as below:
1. Procedurally generate interesting map pattern.
2. Random extrude selected to create building
3. Use "weight" to further randomize the placement of objects.

NODE: Mask Vertices (new!)

In a separate Node Tree, I also experiment with the new Mask Vertices, which allows us to mask vertices, just like we can mask polygons (faces) using List Mask.

Below, I am using the Displacement of Mesh to control the spacing of building.




EXAMPLE: Random Pixel Symbol Generator


The Node Tree is something like below, but can also be simplified.

Sage told me it is similar to FEZ alien language:
http://wikicheats.gametrailers.com/Fez_-_XBLA/Secret_Alphabet


If we use "MIRROR", we can actually end up with something that resembles more of PIXEL CHARACTER. Remember my really old post in 2011 about NodeBox?

Yes, we don't need outside tool like NodeBox anymore, we can procedurally generate mesh in Blender:
http://blendersushi.blogspot.com.au/2011/11/nodebox-2-into-blender-for-procedural.html

My wishlist has come true.

SNIPPET: Recreating "Build Modifier" using Sverchok

  • POLYGON BOOM
  • SEPARATE LOOSE
  • LIST SLICE
  • LIST SHUFFLE
  • LIST SHIFT
  • MESH JOIN
  • VERTICES SORT (new!)
This does not need too much explanation, just something like below.

We just need to care about the LEVEL of LIST DATA and ask questions like these:
- Do we want to SEPARATE points/edges/polygon faces?
- Do we want to SHUFFLE or perhaps OFFSET the Start and End?
- How are we going to SPLIT them? Care about the Head and Tail.
- Do we need to COMBINE them again before baking?

In short:
1. INPUT
2. How do we FILTER the data?
3. How are we going to MODIFY and PROCESS the data?
4. Think about the DESIGN of the SYSTEM.
4. OUTPUT

If Yoda explains all about this data, maybe he would says something like this:

The Force, we cannot create or destroy. In the Force, Out the Force. Control the Flow of the Force, we can.Control, control, you must learn control!




Randomly Building the Face
Grease Pencil comes in.

FURTHER ON...

Using the displacement values we could actually control all kind of things in Blender using the BPY. I don't want to go there yet. Too complex.

Wait until we have things like Grease Pencil, Vertex Color, Materials, UV inside Sverchok, then we can come back to this and further explore the possibilities.

What's next, I want to think about:
1. Random Character Generator
2. Random Creature Generator => start with insect maybe?

I don't want to do Trees and Plants, because they are already been done too many times. Any other ideas you can think of? Please let me know.

Post a Comment

MKRdezign

Contact Form

Name

Email *

Message *

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