A new version of Cineversity has been launched. This legacy site and its tutorials will remain accessible for a limited transition period

Visit the New Cineversity
   
 
Xpresso 101 17 Noise
Posted: 14 August 2014 12:02 AM   [ Ignore ]  
Avatar
Total Posts:  168
Joined  2014-06-09

Sorry for the super long text, but I’m struggling to understand exactly how all of these nodes work together, especially the last few of them.

The exercise is to apply noise to the Y value to multiple points of an object.  I’ve recreated the exercise twice, once following the instructor’s direction to the letter, and a second time changing a few things around to see if I was getting the gist of it.  Even though I’m able to make it work, I’m still not sure I understand what’s going on and was hoping someone could walk with me as I go over the order of execution.

So here goes:

node 1. Using the object port, the plane node feeds the vector information for each and every point in the object, hence the port’s name “object.”

node 2. The point node then splits up the object data into separate “tracks.” Track A “Point Count” which simply states the total number of points in the object and track B, which gives the vector position for each point, one at a time.  In this example, the point node tells the iteration node, there are X number of points using Track A “Point Count.”

node 3. The iteration node then takes the number of points and states, “Okay, we need to do X number of passes, so let’s start with pass number 1.”  Once pass number one is completed, the iteration node states, “Super!  Now let’s no pass number 2.” etc. etc. etc.

So basically, the first 3 nodes act as a signal generator, creating something for the entire expresso to sync itself to.  Is that a good analogy?

node 4. The Plane BKUP does the same thing as #1 (it’s basically a clone).

node 5. The point node does the same thing as #2, only this one follows the direction of the iterator and spits out the Plane BKUP’s vector data (node #4), one pass at a time, to both the Vector2Reals and the Noise nodes.

node 6. The Vector2Reals breaks the vector data into separate X,Y,Z coordinates (reals) and sends it to the Reals2Vector while…

node 7. The noise node applies distortion to the Y coordinate and sends it to the Reals2Vector.

node 8. The Reals2Vector then stitches the real numbers back together into an XYZ vector and sends it to the final point node (node #10).

node 9. Meanwhile, the Plane node sends the same info as 1 and 4 already have to the object port of the last point node.  (Why is this necessary?  I don’t understand this.)

node 10. The point nodes receives (A) the vector data from the Reals2Vector node and (B) the order of execution from the Iteration node and (C) the object data (which is basically the same as A & B, right?).

Question: I always thought that one needed to export the data to the object being affected, but this just ends at a point node.  How / where does the information make its way to the object in the view port?

Observation: If I take the Y coordinate from the Vector2Reals (6) and feed it into the Noise (7) it doesn’t produce the same result.  Why not?

Anyways, this is a long post, so sorry about that.  Hope I’m making sense and haven’t written a novella of gibberish.

All the best,

Jerome Olivier

File Attachments
xpresso 101 lesson 17B noise.c4d.zip  (File Size: 62KB - Downloads: 178)
Profile
 
 
Posted: 14 August 2014 12:59 AM   [ Ignore ]   [ # 1 ]  
Administrator
Avatar
Total Posts:  12043
Joined  2011-03-04

Hi Jerome Olivier,

Thanks for your interest, and already at part number 17! :o)

node1, exactly. Note that we use it twice here (for a single plane, I will explain below why), as if we would use only one, a security block would be triggered, no feedback-loops.

node 2, understand the Point node as an extension to the Object, it does not share any information other than what is requested from the index input, only exception: the point amount. So you are correct again. :o)

node 3, yes. The iteration starts one time per frame (note that in edit mode the refreshing might happen several times. But during rendering it is one time only). It starts with a zero instead of a one, based on an old limitations of computers, as each bit was valuable in history, so since then most stuff starts with zero, but not everything, hence the subtraction.

node 4 and 5, exactly
node 6, exactly again

node 7, understand that it is not a distortion! The position of the point in space is used to request the value that the noise has (imagine the noise as a big cloud in the whole scene). If XYZ is given, the value of the noise “-1 to1” (if not set to positive only—then 0-1). The value one is of course based on the amplitude! The resulting value is then provided on the port on the right.
So the cloud, at one point in time, or based on the frequency delivers this value exactly as if you fly through a cloud and measures the fog density. So, it’s a value, not a distortion

node 8, yes.

node 9, we got the reference plane and we took the values from it, they should not been altered, we took the plane with the node 2 to get the amount of points, we can’t feed in any of these information that is based on the nodes in the first place, feedback loop—think of the high frequency of microphones and amplifier on a stage. That is a feedback loop. As horrible as it sounds on stage, with numbers and fast CPUs, it can freeze your computer, hence the block. So we need this again, new and fresh.

node 10, yes, the data is normally exported. In this case the Object connection is kind of an extension node to the Object. So we feed this information to the object. I understand that sounds against things said so far.

It works, but perhaps the movement is too little, see the attached image.

In a nutshell, the noise works like a cloud and we take the value from a specific position. Hence why I have started the tutorial with that theme with the Noise shader. Black and White = 0-1 (positive only, amplitude to 1).
Connect the Y value to the Y input (not the vector). Keep in mind that the Y value alone will set the X and Z to zero. With that, the Y value is taken from the world coordinate and with that (!) each point of the plane receives the same value. Do it again, Y to Y, and then adjust the amplitude value, the whole plane will go up and down.

The object port might be needed to be seen as an ‘Get Data’ and ‘Set Data’ interface.

I hope that will answer all the questions and illuminates the observations.

Enjoy the rest of the series! Thanks for your interest.

Sassi

 Signature 

Dr. Sassi V. Sassmannshausen Ph.D.
Cinema 4D Mentor since 2004
Maxon Master Trainer, VES, DCS

Photography For C4D Artists: 200 Free Tutorials.
https://www.youtube.com/user/DrSassiLA/playlists

NEW:

NEW: Cineversity [CV4]

Profile
 
 
Posted: 14 August 2014 04:06 AM   [ Ignore ]   [ # 2 ]  
Avatar
Total Posts:  168
Joined  2014-06-09

node 3, yes. The iteration starts one time per frame (note that in edit mode the refreshing might happen several times. But during rendering it is one time only). It starts with a zero instead of a one, based on an old limitations of computers, as each bit was valuable in history, so since then most stuff starts with zero, but not everything, hence the subtraction.

So something with an iteration count of 29 would create 30 samples per frame.  Meaning in a 30fps NTSC video would generate 900 samples per sec.

Connect the Y value to the Y input (not the vector). Keep in mind that the Y value alone will set the X and Z to zero. With that, the Y value is taken from the world coordinate and with that (!) each point of the plane receives the same value. Do it again, Y to Y, and then adjust the amplitude value, the whole plane will go up and down.

Okay, this is the part where you lose me.  Attached are four images that illustrate what I still don’t understand.

this works.png & this also works.png show what creates the desired ripple effect.  Notice how having the input on either a vector or real creates the same desired effect.  However, this doesn’t work.png & nor does this.png show that connecting a real to either a vector or real input creates a flat plane with a uniform movement.

If I connect a vector to a real, doesn’t the real throw away the irrelevant data?  So if I export XYZ and connect it to a Y input, won’t it throw away the X and the Z?  Something tells me I’m missing the point entirely…

Profile
 
 
Posted: 14 August 2014 04:07 AM   [ Ignore ]   [ # 3 ]  
Avatar
Total Posts:  168
Joined  2014-06-09

last image…

Profile
 
 
Posted: 14 August 2014 12:25 PM   [ Ignore ]   [ # 4 ]  
Administrator
Avatar
Total Posts:  12043
Joined  2011-03-04

You’re welcome.

.

The starting number of the iteration is important as well. Yes 30 for 0-29. If NTSC, PAL or whatever is not important, the application works in single frames. The time code applied to it delivers then anything in those numbers. As the NTSC time code is the most misunderstood timecode AFAIK, I don’t see a reason to go there right now for this tutorial.

Real or Vector. This is important to understand!

• If you place a real value to a real value, perfect

• If you place the vector to the vector all is fine

• If you place the vector to the Y connection, you feed “something”* in it. Which might look IN SOME CASES similar, but it is not—not at all! Just don’t do it.

• If you place a real value to a vector, each vector becomes the same value, a diagonal movement is the result here, while adjusting the amplitude.

As I wrote a few days ago, the format is 50% of the knowledge in XPresso, messing with it might work, but leads to different results.

You wrote that the Y value alone wouldn’t work, my example showed that it creates a result. What else can I do.

My best wishes

Sassi


* vector to real, use a vector of 3,4,5 the typical numbers to teach Pythagoras. 3 to square is 9. 4 to square is 16. 9+16=25 the square root out of it is 5. 5 to square is 25, for the diagonal of x and y. for z we have 5 again—to square is 25. 25+25 = 50 the square root out of it is (see image) Got the idea? ;o)

 Signature 

Dr. Sassi V. Sassmannshausen Ph.D.
Cinema 4D Mentor since 2004
Maxon Master Trainer, VES, DCS

Photography For C4D Artists: 200 Free Tutorials.
https://www.youtube.com/user/DrSassiLA/playlists

NEW:

NEW: Cineversity [CV4]

Profile
 
 
Posted: 14 August 2014 09:19 PM   [ Ignore ]   [ # 5 ]  
Avatar
Total Posts:  168
Joined  2014-06-09

Dr. Sassi,

Thank you for your patience and sorry for being so exacting on this one, but it’s like a bar of wet soap, the harder I try to “get it” the quicker it slips from my hands.

Dr. Sassi - 14 August 2014 12:25 PM

You wrote that the Y value alone wouldn’t work, my example showed that it creates a result. What else can I do.

I should’ve been clearer.  By “doesn’t work,” I meant, “doesn’t produce the desired result.”  Yes, using the Vector2Reals Y output and applying it to the noise channel creates a flat plane that moves up and down.

Here is a video that illustrates what I don’t understand:

https://www.dropbox.com/s/zw4p9hskdqrpbka/lesson17PointPositionQuestion.mp4.zip

1. Why do the Spy and Result nodes always indicate (200, 0, 200)?  My understanding is that the nodes should be running from (-200, 0, -200) to (200, 0, 200).
2. Since the Noise node only outputs a Real and since the starting point is always 0 on the Y axis, shouldn’t the three different ways I try produce the same result?

* vector to real, use a vector of 3,4,5 the typical numbers to teach Pythagoras. 3 to square is 9. 4 to square is 16. 9+16=25 the square root out of it is 5. 5 to square is 25, for the diagonal of x and y. for z we have 5 again—to square is 25. 25+25 = 50 the square root out of it is (see image) Got the idea? ;o)

What I get from that is feeding a vector into a real creates gibberish and must be avoided at all costs.  Is this what’s being illustrated?

Again, thank you for your time and patience.

All the best,


Jerome Olivier

PS
Also, thank you for clarifying the four different combinations possible between vectors and reals.  This helped a lot.

Profile
 
 
Posted: 14 August 2014 09:45 PM   [ Ignore ]   [ # 6 ]  
Administrator
Avatar
Total Posts:  12043
Joined  2011-03-04

Good question, Jerome Olivier.

Before I start, the Spy node should be always between two proper nodes, if it was and then not any longer, typically it keeps the last information.

The values from -200 to 200 might be visible on a computer from 1991 or so, 10-25Mhz (not GHZ), and 1MB ram ;o)

Seriously, the values will go through - but very quick, what is not processed will AFAIK be buffered. I have no other explanation. You will find that they work if you don’t use the Y value and use the, e.g., Z value instead. Makes sense?

The Node give a single [real] value out. Think of flying through the clouds, and to simplify this, let’s say no cloud =0 and a dense cloud =1, with all the values between. To get a position inside that space, you need three coordinate values: X,Y and Z. If one or two or all three are zero or anything else (e.g., -200 to 200 :o) then this will create a single point in space. Always just a single point. This single point is used to measure the cloud density, 0 to 1. If you measure X only, Z and Y are taken as zero then, so you measure a different point in the cloud. Do this for all three and the average of the three will not result in a single value that is equal to the XYZ value taken on the XYZ position (with a random exception, like in a lottery) Zero to one, as mentioned before, if the Amplitude is one and positive only.

The noise is a mathematical description, as all noise is. Hence it has no pixel nor voxel—it is floating point precision. The example with the cloud has one problem, the cloud exist allover in space. The noise will be calculted for that specific point (single point) in space only if needed or let call it requested.

The up and down movement with a constant means to me, that the frequency was ≠zero. So the noise is not static. As this fed the y value for all 441 points (20 segments x20 segments=21x21=441) equally for each frame, it moved up and down. makes sense? I couldn’t see the Attribute manager in your movie, so It leaves me to guess here.


Vector, call it gibberish, no problems with that, as long as you are aware of what happens, do what you like :o) I explained it only, as it might help to identify a problem later on. Formats and their proper use are a big part of a successful XPresso solution.

My best wishes

Sassi

 Signature 

Dr. Sassi V. Sassmannshausen Ph.D.
Cinema 4D Mentor since 2004
Maxon Master Trainer, VES, DCS

Photography For C4D Artists: 200 Free Tutorials.
https://www.youtube.com/user/DrSassiLA/playlists

NEW:

NEW: Cineversity [CV4]

Profile
 
 
Posted: 14 August 2014 10:18 PM   [ Ignore ]   [ # 7 ]  
Avatar
Total Posts:  168
Joined  2014-06-09

Okay, now I think I understand.  The reason the Y value was the same per frame and creating a flat plane that moved up and down was that without XYZ coordinates, the Noise node can only sample from one spot—in my case 0, 0, 0.  That’s why using vector data is crucial to get the desired result, one must sample the XYZ coordinates of the noise each frame to get the desired result (varying, and not constant, Y values in each frame for each point).

FINALLY!  That.  Makes.  Sense.  Now, I understand.

Also, my guess would be, that the noise only changes at the frequency of the project’s frame rate.

The values from -200 to 200 might be visible on a computer from 1991 or so, 10-25Mhz (not GHZ), and 1MB ram ;o)

I only wish my computer had such high specs.  8^)

All the best,


Jerome Olivier

Profile
 
 
Posted: 14 August 2014 10:42 PM   [ Ignore ]   [ # 8 ]  
Avatar
Total Posts:  168
Joined  2014-06-09

* vector to real, use a vector of 3,4,5 the typical numbers to teach Pythagoras. 3 to square is 9. 4 to square is 16. 9+16=25 the square root out of it is 5. 5 to square is 25, for the diagonal of x and y. for z we have 5 again—to square is 25. 25+25 = 50 the square root out of it is (see image) Got the idea? ;o)

At first, I have to admit, I didn’t get this AT ALL.  But, thank goodness for my subconscious, it was able to solve it for me.  So, just to make sure I understand, let ME explain it in my own words: If you take a vector output and connect it to a real input, the software will simply add up the 3 numbers and then find the result’s square root.  So an example would be the real of vector 1,2,3 would be 2.449.  2.449 is the square root of 6, which is the sum of 1 + 2 + 3.

See, Sassi, in your example you were using BIG numbers.  I can’t do those yet, but I’m working on it.  ;^)

Profile
 
 
Posted: 14 August 2014 11:13 PM   [ Ignore ]   [ # 9 ]  
Administrator
Avatar
Total Posts:  12043
Joined  2011-03-04

Well, close, to be honest, Jerome Olivier.

Think of the three vectors.  Each moves the point in their own direction. X 1, Y 2 and Z 3. The distance between a point of 0,0,0, and a point of 1,2,3 equals, 3.7416573… or in three digit precision 3.742.

(One of my six degrees is to be an architect. So, I kept this knowledge alive for long… Measuring the foundation of a building must be in a rectangular way; If the house is in that way: Which I did - starting building “my” first little two family house at the age of 16/17 as a draftsmen. We used 3 meters to 4 meters, the diagonal must be five. Simple stuff. Doing my PhD in Scientific Engineering (hence Computer Animation) you need a little bit more math. Which was fun after studying Art for six years. Keeps the head clear.)

Or just check my attached image.

My best wishes.
Sassi

 Signature 

Dr. Sassi V. Sassmannshausen Ph.D.
Cinema 4D Mentor since 2004
Maxon Master Trainer, VES, DCS

Photography For C4D Artists: 200 Free Tutorials.
https://www.youtube.com/user/DrSassiLA/playlists

NEW:

NEW: Cineversity [CV4]

Profile
 
 
Posted: 14 August 2014 11:57 PM   [ Ignore ]   [ # 10 ]  
Avatar
Total Posts:  168
Joined  2014-06-09

Hm… That your PhD(s) beat my subconscious does not surprise me.  Got it.

Profile
 
 
Posted: 15 August 2014 12:09 AM   [ Ignore ]   [ # 11 ]  
Administrator
Avatar
Total Posts:  12043
Joined  2011-03-04

Jerome Olivier, as Mike from FXPHD coined it, “mathematic sets you free”! An intuitive subconscious is nice to have, but it can trick you. My experience is, that anything that we don’t know is like a vacuum. Similar how a vacuum cleaner works, it absorbs anything. Constant learning means to me, to replace such stuff with better data. Better stands here as a reminder that we might have to research again and again, before information becomes real knowledge which can then stay in return for a longer time.

I mentioned part of my history more to give you a little bit of my background. But to say only I’m familiar with numbers would put me into a nerd corner, thehehe, my main passion is and will be -Film-, hence my passion for art. As I think Film is the most complex art form, as it uses the greatest mix of art. :o)

All the best

Sassi

 Signature 

Dr. Sassi V. Sassmannshausen Ph.D.
Cinema 4D Mentor since 2004
Maxon Master Trainer, VES, DCS

Photography For C4D Artists: 200 Free Tutorials.
https://www.youtube.com/user/DrSassiLA/playlists

NEW:

NEW: Cineversity [CV4]

Profile
 
 
Posted: 15 August 2014 01:46 AM   [ Ignore ]   [ # 12 ]  
Avatar
Total Posts:  168
Joined  2014-06-09

As both of my parents are teachers, I don’t have much of a choice but to agree with you. ;^)

Profile
 
 
Posted: 15 August 2014 01:54 AM   [ Ignore ]   [ # 13 ]  
Administrator
Avatar
Total Posts:  12043
Joined  2011-03-04

Thanks! :o)

 Signature 

Dr. Sassi V. Sassmannshausen Ph.D.
Cinema 4D Mentor since 2004
Maxon Master Trainer, VES, DCS

Photography For C4D Artists: 200 Free Tutorials.
https://www.youtube.com/user/DrSassiLA/playlists

NEW:

NEW: Cineversity [CV4]

Profile