How do I assign my HDA with multiple material elements for Unreal to see?
28683 30 7- MMurray
- Member
- 3 posts
- Joined: May 2017
- Offline
I can't seem to find a way to apply multiple material elements for my HDA in Unreal. My goal is to create a group that will have one material while another group has another. In Maya this is easily done by applying a different material to the selection and Unreal will recognize this. I've tried all sorts of methods and can't seem to find a working solution. Thanks in advance for any help.
- chrisgreb
- Member
- 603 posts
- Joined: Sept. 2016
- Offline
You can apply a material by primitive using the material sop node, which applies the shop_materialpath attribute. This will be picked up automatically by the plugin and translated into an unreal material. Make sure your material is inside your HDA.
Or you could use the primitive attribute unreal_material with an unreal asset path to your material uasset, for example Material'/Game/NewMaterial.NewMaterial'
Or you could use the primitive attribute unreal_material with an unreal asset path to your material uasset, for example Material'/Game/NewMaterial.NewMaterial'
- MMurray
- Member
- 3 posts
- Joined: May 2017
- Offline
- MMurray
- Member
- 3 posts
- Joined: May 2017
- Offline
- Snappy_Darko
- Member
- 38 posts
- Joined: July 2017
- Offline
I've been pulling my hair out too. Can somone clarify how you put the material ‘into the asset itself’, as MMurray says - it seems as if i've done this already - https://imgur.com/a/nIkE3 [imgur.com] but the material in Unreal still covers the whole mesh (its not divided into 2 parts in Unreal)
- Aladin Sane
- Member
- 67 posts
- Joined: Jan. 2016
- Offline
Snappy_Darko
I've been pulling my hair out too. Can somone clarify how you put the material ‘into the asset itself’, as MMurray says - it seems as if i've done this already - https://imgur.com/a/nIkE3 [imgur.com] but the material in Unreal still covers the whole mesh (its not divided into 2 parts in Unreal)
You do copy reference from unreal material (right click material in unreal engine and select copy reference) and paste it into the value field in the material node.
Edited by Aladin Sane - Feb. 19, 2018 13:50:51
- Snappy_Darko
- Member
- 38 posts
- Joined: July 2017
- Offline
Hi Aladin Sane, thanks so much for responding, no one else has. I'm still not getting anywhere, although you're post seems very promising. I'm a bit of noob with both softwares, but here's what I've done (attached)
I'm basically still only getting the option of selecting one material for the whole mesh. Any chance you could run me through the process a bit more closely? And do I need to have materials applied to the asset in Houdini - I nevertheless have done this (you can see in Houdini it's red and blue), because I can't see how would Unreal know where the material divisions in the object are. is this right?
I'm basically still only getting the option of selecting one material for the whole mesh. Any chance you could run me through the process a bit more closely? And do I need to have materials applied to the asset in Houdini - I nevertheless have done this (you can see in Houdini it's red and blue), because I can't see how would Unreal know where the material divisions in the object are. is this right?
- Aladin Sane
- Member
- 67 posts
- Joined: Jan. 2016
- Offline
Snappy_Darko
Hi Aladin Sane, thanks so much for responding, no one else has. I'm still not getting anywhere, although you're post seems very promising. I'm a bit of noob with both softwares, but here's what I've done (attached)
I'm basically still only getting the option of selecting one material for the whole mesh. Any chance you could run me through the process a bit more closely? And do I need to have materials applied to the asset in Houdini - I nevertheless have done this (you can see in Houdini it's red and blue), because I can't see how would Unreal know where the material divisions in the object are. is this right?
To do what you want you need to assign the material attribute to the group you wish that material to have. So you need to make sure you are not assigning your attribute nodes to all your geometry in your asset.
Also the materials you put in each material node must be different or they will be combined.
So when you copy source from unreal use different material for each different material you want to have and then make sure your attributes actually have different geometry in them.
Hope this makes sense.
I am attaching image that shows two separate nodes that are merged in the asset. Each node has material assigned before they are merged so the material attribute is applied only to that specific set of geometry.
Then each material attribute references a different material in UE. If you use same material name they will be considered same material.
Looking at your material attributes your problem is you are applying both materials to the same group of geometry. You have to assign them to different set of polys for this to work. That is the power of grouping, that you can isolate a portion of your model and modify just the portion. There are two ways you can approach this and will usually depend on how you structured your asset. If you build the pieces separately and then merge them you can just apply a material attribute as I did in the image below. If you model is more complex you can use the create group node to isolate the different parts and then use that group in your material attribute node so it only applies the attribute to your grouped geometry.
Once you get this setup properly the materials will be assigned automatically by the digital asset.
Edited by Aladin Sane - Feb. 20, 2018 08:06:47
- Snappy_Darko
- Member
- 38 posts
- Joined: July 2017
- Offline
Hey, thank so much for this, still can't get it to work though.
I am using a merged object from Zbrush (imported by GoZ) but I have retained the separate material groups, so was able to split them off using the group node as you suggested. I made an HDA without materials and one with with materials, but Unreal does not register either as having 2 channels. Here are the images of what I have
I am using a merged object from Zbrush (imported by GoZ) but I have retained the separate material groups, so was able to split them off using the group node as you suggested. I made an HDA without materials and one with with materials, but Unreal does not register either as having 2 channels. Here are the images of what I have
Edited by Snappy_Darko - Feb. 20, 2018 08:41:23
- Aladin Sane
- Member
- 67 posts
- Joined: Jan. 2016
- Offline
Snappy_Darko
Hey, thank so much for this, still can't get it to work though.
I am using a merged object from Zbrush (imported by GoZ) but I have retained the separate material groups, so was able to split them off using the group node as you suggested. I made an HDA without materials and one with with materials, but Unreal does not register either as having 2 channels. Here are the images of what I have
for each of your material groups rename them both to just
unreal_material
unreal_face_material is deprecated.
yours currently have a 2 at the end.
I am not sure about the actual material node you have on there. I have never used it with material from houdini.
I use the copy reference to reference a material that already exists in UE (someone else might comment on the material node)
Try fixing the group names. If that does not I am not sure I cannot determine if those are valid groups or not.
A good way to test this out is to create a very simple asset with two sets of geo (two boxes), put each box in a group at the material attribute node for each and merge together. Then use this to test until you get it. Once you have that working you can use it as reference for work on your zbrush import.
- Aladin Sane
- Member
- 67 posts
- Joined: Jan. 2016
- Offline
Snappy_Darko
Hey, thank so much for this, still can't get it to work though.
I am using a merged object from Zbrush (imported by GoZ) but I have retained the separate material groups, so was able to split them off using the group node as you suggested. I made an HDA without materials and one with with materials, but Unreal does not register either as having 2 channels. Here are the images of what I have
for each of your material groups rename them both to just
unreal_material
unreal_face_material is deprecated.
yours currently have a 2 at the end.
I am not sure about the actual material node you have on there. I have never used it with material from houdini.
I use the copy reference to reference a material that already exists in UE (someone else might comment on the material node)
Try fixing the group names. If that does not I am not sure I cannot determine if those are valid groups or not.
A good way to test this out is to create a very simple asset with two sets of geo (two boxes), put each box in a group at the material attribute node for each and merge together. Then use this to test until you get it. Once you have that working you can use it as reference for work on your zbrush import.
- Snappy_Darko
- Member
- 38 posts
- Joined: July 2017
- Offline
- dpernuit
- Staff
- 550 posts
- Joined: Sept. 2016
- Offline
Hi,
There's two different ways to assign materials with the plug-in:
- You can assign unreals material (Material asset in UE4) via the way Aladin describe to you.
Add an “unreal_material” string attribute to the faces/primitives, and set its value to the reference to the material in UE4 (right click on the material uasset, copy reference).
This material won't show up in Houdini, but will be assigned upon cook in Unreal by the plug-in.
- You can use a houdini material, and have the plug-in create an Unreal Material from it.
This time, don't use the unreal_material attribute (this one is for assign material that exist in UE4, not in Houdini)
Use the material sop, with its material parameter set to the path to the principled shader in a material network in your asset.
The plugin will then create an unreal material corresponding to that principled shader when cooking the asset.
The shader wont be fully reproduced though, only some part of it (diffuse, normal, specular, roughness…)
Don't mix both for the same faces/groups, either use unreal_material or a material node.
Here's a simple example of creating Houdini Material via the plugin:
the matnet contains two principled shader, each used by the material nodes.
The two shaders are very simple, one has a diffuse texture + metallic value, the other a simple diffuse color + emissive color.
and the result in UE4:
There's two different ways to assign materials with the plug-in:
- You can assign unreals material (Material asset in UE4) via the way Aladin describe to you.
Add an “unreal_material” string attribute to the faces/primitives, and set its value to the reference to the material in UE4 (right click on the material uasset, copy reference).
This material won't show up in Houdini, but will be assigned upon cook in Unreal by the plug-in.
- You can use a houdini material, and have the plug-in create an Unreal Material from it.
This time, don't use the unreal_material attribute (this one is for assign material that exist in UE4, not in Houdini)
Use the material sop, with its material parameter set to the path to the principled shader in a material network in your asset.
The plugin will then create an unreal material corresponding to that principled shader when cooking the asset.
The shader wont be fully reproduced though, only some part of it (diffuse, normal, specular, roughness…)
Don't mix both for the same faces/groups, either use unreal_material or a material node.
Here's a simple example of creating Houdini Material via the plugin:
the matnet contains two principled shader, each used by the material nodes.
The two shaders are very simple, one has a diffuse texture + metallic value, the other a simple diffuse color + emissive color.
and the result in UE4:
Edited by dpernuit - Feb. 23, 2018 11:14:17
- Snappy_Darko
- Member
- 38 posts
- Joined: July 2017
- Offline
- dpernuit
- Staff
- 550 posts
- Joined: Sept. 2016
- Offline
- DASD
- Member
- 453 posts
- Joined: Feb. 2013
- Offline
I was wondering if we could maybe have a hybrid thing in the future, where we specify the material to use in Houdini and Houdini Engine at the same time.
I would imagine a method where you assign a type of shader (probably a version of the principled shader) in Houdini that has special parameters for specifying what should be used in Unreal, Maya and Unity (etc.) respectively. (With default behavior, that if no Houdini Engine override is specified, or if it cannot be found a new material is created.)
I would imagine a method where you assign a type of shader (probably a version of the principled shader) in Houdini that has special parameters for specifying what should be used in Unreal, Maya and Unity (etc.) respectively. (With default behavior, that if no Houdini Engine override is specified, or if it cannot be found a new material is created.)
- dpernuit
- Staff
- 550 posts
- Joined: Sept. 2016
- Offline
- Snappy_Darko
- Member
- 38 posts
- Joined: July 2017
- Offline
- IanV-E
- Member
- 1 posts
- Joined: Sept. 2018
- Offline
- GangZeng
- Member
- 1 posts
- Joined: Nov. 2018
- Offline
-
- Quick Links