Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - Paolo_Giandoso

Pages: [1] 2 3

The node is available on my Artstation page here
Hi all
This is my first time posting on the "Showcase" part of the forum as I am usually the one pestering people with questions  ;D and I am not by any means a master of the software. I do concept art so I generally use the substances from substance source.
I am also not sure what is the best way to showcase a substance file here on the forum so I am all ears on this issue.
Nevertheless during the lockdown I had some spare time to play with substance designer.
Specifically I kept hearing that the pixel processor is a really powerful node and I wondered what I could do with it and how much could I push it. 
I really love those substances that reproduce building facades. I have seen some amazing work.
One thing I noticed though is that there is not really any easy way to create the main types of arches the 1 centered circular arch), especially when you have to show the voussoirs, or you want a texture (like a wood pattern) to follow its shape.
Therefore I decided to brush my high school trigonometry and give a read to a great book called "Practical geometry for builders and architects".

Math is FUN! :D
The result of this exploration of the pixel processor was my "Arch Generator" node.
This is a node that can generate all the main types and sub-types of arches and that can map an image input along their length and width. It was a fascinating challenge to tackle and the result, while not 100% perfect, still does what is supposed to do in most of the cases.

For the most difficult cases (the true elliptical and parabolic arches) I had a LOT of help from the math geniuses at MathStackExchange and Inigo Quilez which involved getting around a nasty quartic equation which I would not wish it upon even my worst enemy. So a huge thank you guys!

My arch generator can simulate the following types of arches:

Flat Arches
- Tapered
- Parallel

1 Centered Arches
- Semicircular Arches (Roman Arches)
- Segmental Arches
- Horseshoe Arches

2 Centered Arches
- Pointed Lancet Arches
- Pointed Equilateral Arches
- Pointed Drop Arches
- Pointed Segmental Arches

3 centered Arches
- Basket-Handle Arches
- Pseudo 3 centered Arches
This arch is the one which is used in most of the cases to approximate a true elliptic arch in real buildings.

4 Centered Arches
- 4 centered Arches (Tudor Arches)
- Pseudo 4 centered Arches

5 Centered Arches
An alternative to the very popular 3 centered arch. It is a bit close to a true ellipse then the 3 centered arch, but is more complex to build so is less used.
Here the tricky part was that the example in the book "Practical geometry for builders and architects" is actually wrong (I wish I knew it before trying to find what my mistake was for 2 weeks). So I had to find a correct method and it turns out there are not many available on the internet. I am stubborn though, so I found one that works perfectly.

Elliptical Arches
- Elliptical Arches with rays perpendicular to the ellipse
- Elliptical Arches with rays passing through the center
This arch was the most complex one to tackle. There is a reason after all for why builders and architect almost always adopt an approximation like the 3 centered or 5 centered arches. I confess I almost gave up on this one a couple of times. But
luckily for me Inigo Quilez was so kind to help me VERY patiently on how to obtain an approximation of the distance point-to-ellipse (it was like explaining math to a goat, with me being the goat).
It seems a simple thing but trying to solve this problem mathematically always comes down to a horrifying quartic equation (:() which in the best of cases has 1 real solution and 3 that lie on the complex plane. Inigo has a way to approximate the quartic to a cubic. I just had to translate its code to substance designer and then Bob is your uncle (but because of this approximation there are some localized spots of grainy noise in the result when the elliptic arch is getting really close to a circumference I think, nothing unsolvable later on in Substance).
More over, finding the arc length of an ellipse is possible only using the incomplete elliptic integrals of second kind. Something that at the best of my knowledge Substance Designer can not do. Therefore I could not find a way to divide the elliptic arch in equal length voussoirs. Afer a bit of research I discovered that in 2012 Aravind Narayan created an approximation for this calculation which I was actually able to read. I managed to implement it correctly but as expected it breaks down at the sides when the ellipse is really squashed, after all it is just an approximation.
To solve this, I added a parameter that can be used to fine tune the voussoirs size case by case. Of course if someone has a better solution in mind I am all ears.

Parabolic Arches
- Parabolic Arches with rays perpendicular to the parabola
- Parabolic Arches with rays passing through the center
Another difficult arch to create, although not nightmarish as the elliptic one.
For a second time I had to pester poor Inigo for help. I used his code for calculating the distance point-to-parabola, which again (if I remember correctly) approximates a quartic down to a cubic. If anything it was a bit shorter and easier to adapt.
On the other hand, finding the arc length of a parabola is, quite incredibly, very much possible. So dividing the arch in voussoirs of the same length was possible after some attempts.

Ogee Arches
- 3 centered Ogee Arches
- 4 centered Ogee Arches

Reverse Ogee Arches
- 3 centered Reverse Ogee Arches
- 4 centered Reverse Ogee Arches

Multifoil Arches
- With external arch
- Without external arch

Pointed Multifoil Arches
- With external arch
- Without external arch

By default the node generates a basic brick pattern:

But it also works with custom textures.
Here I am plugin a custom height map of a couple ornamental patterns into the node and as you can see it gets remapped along the arches.

I am so curious to see what people will do with it.
My wish would be that if you do some nice facades and gates with the Arch Generator, please share an image here and the substance on substance source so that we can all use it in our concept art :D

In the parameters of a substance, is it possible to create a new Input Parameter which is a Integer1 slider and it is only stepping through odd numbers?
If I select step 2 it only goes through the even numbers, even if my min is set to 3.


When creating graph, use for example transform 2d node, than expose offset parameter and in parameters tab change it's mode from slider to Position or Transfrom Offset. This will grant you this circular handle when using your graph inside another graph.

THANKS @mottomo.jk !!! :D

Do you know what would be the difference between Position and Transform Offset?

Does anyone know if it is possible inside the Pixel Processor (or FX-Map node) to numerically calculate Integrals?
Specifically I was thinking about the Incomplete elliptic integral of the 2nd kind.


Also interested into this, as I have the same issue

Totally agree on the road textures case.

Hi all
I have been trying to solve this problem for a while which I need for my project. Is there anyone with a strong passion for math and geometry and with time to spare who is willing to give me a hand? :)

I want to create, using the Pixel Processor, a gradient representing all the Normals to a semi ellipse (origin centered and with the 2 semi-axis parallel to the x and y axis respectively) defined by 2 attributes,  Height (b) and Width (a).
Something like this.

orginated by something like this

The parameter Height is basically the minor semiaxis and Width the major semiaxis multiplied per 2.

Every point in the plane should get the value of the angle formed by the x axis and the one normal to the ellipse that passes for it.

It has been quite complicated for my non mathematical brain and so far I only managed to find partial solutions. I solved it using an FX map (the images below) rotating a very thin line around the ellipse circumference exactly in this way but the result is not as good as a gradient done with the pixel processor, as it creates a stepped effect even with thousands of iterations (ugh) and if I make the line thicker (tried that too) it becomes even more stepped.

I also solved it using a distance node on a regular angular gradient masked with the ellipse alpha. This works too, to a point, but is not perfect either. The result is stepped and wobbly (I think because of the jagged edge of the ellipse shaped mask).

Can anyone help me see the light? I'll be forever thankful :)

Ellipse equation:
      y²/b² + x²/a² = 1
Point P on the Ellipse:
      for every x where -a<xP<a
      yP= b√1-(x²/a²)
Point K where the NORMAL in P to the ellipse meets the x AXIS:
      xK = xP [1-(b/a²)]
      yK = 0
Equation of the normal to the ellipse in P:
      (a²x/xP) - (b²y/yP) = a² - b²
Angle  between the Normal and the X Axis meeting in the point K:
       atan2 (xK- xP,yK- yP,) (in Radians)
       atan2 (xK- xP,yK- yP,)/2Pi  (in Turns)

 :) Anyone?

Thanks Galen! :)
I found also the Normal map documentation quite confusing to be honest. Although maybe is not the right topic here.
Took a while here on the forum to wrap my head around it what to check and uncheck.
As far as I understood:

Normal maps can be exported in 2 formats: Open GL and DirectX
Maya works with OpenGL (normal direction +Y) .
Substance Painter defaults to using DirectX (normal direction -Y).
If your Substance Painter project is set to use DirectX normals and you export maps using the "Arnold 5" export preset, the normal map will be converted to OpenGL.
If your Substance Painter project is set to use DirectX normals and you export using the "Document channels + Normal + AO (No Alpha)" export preset, the normal will be exported in DirectX format.

In Arnold for Maya, in order to correctly display the normal, you will need to adjust the Arnold attributes as follows:

If you are using the bump2D node:

OpenGL normal map [exported using “Arnold 5” export preset] - Uncheck Flip R Channel and Flip G Channel
DirectX normal map [exported using “Document channels + Normal + AO (No Alpha)” export preset] - Uncheck Flip R Channel

If you are using the aiNormalMap node:

OpenGL normal map [exported using “Arnold 5” export preset] - do nothing
DirectX normal map [exported using “Document channels + Normal + AO (No Alpha)” export preset] -Check Flip Y Channel

How can I create these dots that drive the coordinates of the node from the 2DView (the ones indicated by the arrows in the attached picture)?

Got it.
And I found out what is the equivalent parameter in the displacement node, it is the Scalar Zero Value.

Therefore there are 2 options to obtain the same thing:
Option A: In the texture2D node set the Alpha Offset to -0.5
Option B: in the displacementShader node change the Scalar Zero Value to 0.5

It’s the same thing but the Scalar Zero Value is not supported by the Viewport.

Wish they made it more clear in the Arnold  6 online guide.

Thanks Nicolas !  I studied it and it worked well.
Sorry for the delayed answer.

Out of curiosity, is it -0.5 or 0.5 then?
Isn't there a parameter in the displacement node to change the midpoint? Is it the same thing then modifying the texture's alpha offset?
I can not find a definitive answer on the official documentation.

Pages: [1] 2 3