Hi guys,
I’m wondering if someone can help me out with this one.
I have a megascans material I’m trying to rebuild in Material X.
For Base Color, Specularity, etc, I use a MtlX Triplanar to apply the textures. I’m using an MtlX Position/MtlX Multiply combo piped into Pos to control the tile size of the textures (thanks Brian). So far so good.
For Normals I’m not entirely sure I’m doing the right thing. I use the same MtlX Triplanar to select the Normal Texture, set the signature to Vector 3 (per the online documentation), then pipe the output into the In of a MtlX Normal Map, then subsequently into the MtlX Standard Surface Normal.
The problem is my model ‘triangulates' in areas and ‘breaks up’ at various seams. In certain areas things look good. In other areas there are clear errors.
Any ideas how to apply a Normal Map when building an MtlX Material? Better yet, does anyone have a working example of a Megascans material ‘converted’ to Material X?
Thanks in advance.
Applying Normal Maps (texture) in Material X...
6581 14 3- Crounder
- Member
- 11 posts
- Joined: Jan. 2021
- Offline
- jsmack
- Member
- 8041 posts
- Joined: Sept. 2011
- Offline
Using a normal map with triplanar mapping doesn't make sense. Normal maps require a well defined tangent space to transform the normal. Triplanar mapping is typically used when there aren't any uv's, which means there aren't any tangents. You could define a tangent space using the projection planes of the triplanar map, but that means each projection would need to compute a shading normal from the tangent normal, and then blend after. Something you could do with a clever shader, but not something built in to materialX.
- Crounder
- Member
- 11 posts
- Joined: Jan. 2021
- Offline
- jsmack
- Member
- 8041 posts
- Joined: Sept. 2011
- Offline
- Crounder
- Member
- 11 posts
- Joined: Jan. 2021
- Offline
- blakshep
- Member
- 77 posts
- Joined: Oct. 2016
- Offline
- sascha
- Member
- 158 posts
- Joined: July 2005
- Offline
- Danny McGrath
- Member
- 21 posts
- Joined: May 2016
- Offline
Old post, but I'll add here for posterity. Set the normal input in the triplanar to Vector 3 > add an mtlxNormalMap node > set to object space > outputs automatically to world space > plug into normal.
In Unreal this can be done with a vector 3 multiply setting R and G to the X strength multiplier and leaving B at /X. Other renderers
just have a strength float built in, but I can't see how to split out the vector 3 in MatX?
This is how I set it up in MatX. Strength effect working as expected.
EDIT: actually it isn't working as expected. Back to the drawing board....
In Unreal this can be done with a vector 3 multiply setting R and G to the X strength multiplier and leaving B at /X. Other renderers
just have a strength float built in, but I can't see how to split out the vector 3 in MatX?
This is how I set it up in MatX. Strength effect working as expected.
EDIT: actually it isn't working as expected. Back to the drawing board....
Edited by Danny McGrath - July 21, 2024 12:54:37
- jsmack
- Member
- 8041 posts
- Joined: Sept. 2011
- Offline
Danny McGrath
EDIT: actually it isn't working as expected. Back to the drawing board....
MaterialX is lacking the required building blocks to implement this.
Required steps:
- Planar projection x3 ✔
- get blend weights from normals with respect to planar projection space ✔
- compute tangents with respect to a projection ❌
- build matrix from row vectors ❌
- transform normal using a matrix ✔
- blend vectors in world space ✔
- surface material accepts world space normals ✔
actually, this might be possible now, I see create matrix nodes and creating the tangent space could be done by projecting the space bivectors to the surface using its normal.
Edited by jsmack - July 21, 2024 13:29:39
- Danny McGrath
- Member
- 21 posts
- Joined: May 2016
- Offline
I was going to set it up using the Karma triplanar hex shader but the map input doesn't have vector 3 for the normal map.
Thanks for the detailed breakdown. I'll look into the create matrix nodes.
On another note, this may seem like a silly question but how does MatX deal with the simple task of switching the Y swizzle on normal maps? I see that there used to be a nice collection 7 or so normal map related COPs in the old game tools version of the Lab tools, but I assume they are now deprecated?
Thanks for the detailed breakdown. I'll look into the create matrix nodes.
On another note, this may seem like a silly question but how does MatX deal with the simple task of switching the Y swizzle on normal maps? I see that there used to be a nice collection 7 or so normal map related COPs in the old game tools version of the Lab tools, but I assume they are now deprecated?
- DiegoCP
- Member
- 3 posts
- Joined: March 2017
- Offline
Hi! Just wanted to chime in and say, I was hoping to move to Karma, but the lack of a proper tri-planar workflow is probably the main reason holding me back.
I hope the developers take note, for anyone in an industry like motion graphics, where speed is essential, I'm pretty sure that not having this feature is a huge deal.
I hope the developers take note, for anyone in an industry like motion graphics, where speed is essential, I'm pretty sure that not having this feature is a huge deal.
- Antti1999
- Member
- 41 posts
- Joined: Oct. 2022
- Offline
DiegoCP
Hi! Just wanted to chime in and say, I was hoping to move to Karma, but the lack of a proper tri-planar workflow is probably the main reason holding me back.
I hope the developers take note, for anyone in an industry like motion graphics, where speed is essential, I'm pretty sure that not having this feature is a huge deal.
What about 'Hextiled Texture' and 'Hextiled Triplanar' nodes? They can both output color and normals.
I'm not sure whether the normals are correctly oriented when used. If there are no bugs, it should work out of the box.
For Redshift, there are some OSL scripts for triplanar mapping, but Karma doesn't support OSL for now.
- Danny McGrath
- Member
- 21 posts
- Joined: May 2016
- Offline
Antti1999DiegoCP
Hi! Just wanted to chime in and say, I was hoping to move to Karma, but the lack of a proper tri-planar workflow is probably the main reason holding me back.
I hope the developers take note, for anyone in an industry like motion graphics, where speed is essential, I'm pretty sure that not having this feature is a huge deal.
What about 'Hextiled Texture' and 'Hextiled Triplanar' nodes? They can both output color and normals.
I'm not sure whether the normals are correctly oriented when used. If there are no bugs, it should work out of the box.
For Redshift, there are some OSL scripts for triplanar mapping, but Karma doesn't support OSL for now.
Yes, you're right, I've just checked it and the Hex triplanar seems to work fine with normals. You can just set the input to 'normals' instead of the usual Vector 3.
- DiegoCP
- Member
- 3 posts
- Joined: March 2017
- Offline
Antti1999
What about 'Hextiled Texture' and 'Hextiled Triplanar' nodes? They can both output color and normals.
Indeed, they seem to work ok in my tests, but they add a lot more blurred areas, and only work ok with very organic textures. Anything like a stone wall texture, which will look fine on a tri-planar projection, will break on Hex.
- Danny McGrath
- Member
- 21 posts
- Joined: May 2016
- Offline
DiegoCPAntti1999
What about 'Hextiled Texture' and 'Hextiled Triplanar' nodes? They can both output color and normals.
Indeed, they seem to work ok in my tests, but they add a lot more blurred areas, and only work ok with very organic textures. Anything like a stone wall texture, which will look fine on a tri-planar projection, will break on Hex.
It looks like there's no blending at all on the normal channel. The other channels blend, but the blend slider in the normal node does nothing. The sharp seam is always there no matter what the setting is.
-
- Quick Links