UPROPERTY Help

   5380   9   2
User Avatar
Member
67 posts
Joined: Jan. 2016
Offline
I am trying to set a couple properties of a generated mesh, but the engine cannot find the properties. I have looked them up in the source code so I know they are right. They are on a subobject and I am guessing that might not be suppported, but I thought I would ask.

I am trying to set

unreal_uproperty_BuildAdjacencyBuffer

unreal_uproperty_DistanceFieldResolutionScale

LogHoudiniEngine: Could not find UProperty: BuildAdjacencyBuffer
LogHoudiniEngine: Could not find UProperty: DistanceFieldResolutionScale

Here is screen shot of the setup.

Any help would be appreciated.

Attachments:
CaptureUProperty.PNG (44.9 KB)

User Avatar
Staff
550 posts
Joined: Sept. 2016
Offline
Hi,

You're right, this is not currently supported.
For now, UProperties are only modified on Components generated by the plugin (Static Mesh Components, Instanced Static Mesh Components and Instanced Actors Components).

Since the two properties you're trying to update are only in the StaticMesh, (actually on subobjects / substructs of it) the plug-in cannot find them, as it's only looking for them in the components.
User Avatar
Member
67 posts
Joined: Jan. 2016
Offline
Thanks!
User Avatar
Member
2 posts
Joined: Sept. 2020
Offline
I realise this is an old post but think I am running into a similar issue. I would like to be able to set the default settings on a landscape input on my HDA in Unreal (specifically the Export Selected Landscape Components Only tick box). but only seem to be able to change parameters in the ‘Houdini Generated Static Mesh Settings’. Is this going to be supported at any point in the future or is there currently any good workaround?
User Avatar
Staff
550 posts
Joined: Sept. 2016
Offline
Hi,
Generic property attributes are only applied to the output produced by the HDA, not to the HDA itself.
This would cause issues, as we'd need to double cook the HDA to first, get the attribute, apply it, then recook to get the updated result, which would not be ideal.

There is currently no work around for that.
Potentially, we could add support for “presetting” HDA input properties by using parameter tags, but this would only work on object merge inputs, not SOP inputs.

I've converted your original bug report to an RFE
User Avatar
Member
606 posts
Joined: May 2007
Offline
It is quite unfortunate one can't set properties on an instantiated HDA, it would be very useful indeed.

Would the parameter tag “hack” work for regular int/float params? Sounds like it could, and it would be helpful to at the very least set an ID on the HDAs instantiated. Count me in for that RFE
User Avatar
Member
606 posts
Joined: May 2007
Offline
Just spitballing here, but could it be easier to make the tags available to the HDA in some way? A frozen “Tags” node with detail attributes? envvars?

As a corollary, can the tags be set by the @unreal_uproperty_ mechanism? I tried
s@unreal_uproperty_ComponentTags = "one";
and
s[]@unreal_uproperty_ComponentTags = {"one", "two"};
with no success.
Edited by eetu - Nov. 26, 2020 09:33:09
User Avatar
Member
606 posts
Joined: May 2007
Offline
Ok some dirty hackery mindgames on how to pass an ID to an instanced HDA, shield your eyes.

On the point to be instanced set a rotation that has the id in its fraction,
vector r = set(0,radians(f@id/1000.0),0);
@rot = eulertoquaternion(r,0);
(any existing rotations would need to be truncated to full degrees)
Then, if the ID is e.g. 41, the transform on the instance will have a z-rotation of -0.041

which the asset can read with
hou.parent().worldTransform().extractRotates('trs').z()
(or is it .y()?)

The resulting rotation of less than one degree is quite tolerable, but one could counter it by counter-rotating the insides of the assets..

When you have an ID, you can read all the rest of the parameter data from a database or file or something.

Edited by eetu - Nov. 26, 2020 09:52:49

Attachments:
rot41.png (3.4 KB)

User Avatar
Member
260 posts
Joined: July 2006
Online
in this case , we cannot determine the LOD size via plugin, because even thou we can define lodX_screensize as detail attribute, it will be overwritten by unreal setting auto compute LOD distances to 1.

Correct me if I am wrong here but i did try setting a unreal_uproperty_AutoComputeLODDinstances detail attrbiute to 0 as float and int but unreal wouldn't update regardless.
Head of CG @ MPC
CG Supervisor/ Sr. FX TD /
https://gumroad.com/timvfx [gumroad.com]
www.timucinozger.com
User Avatar
Member
13 posts
Joined: Jan. 2017
Offline
Seems like bReceiveDecals (tried without b too) is also not supported, found it in UPrimitiveComponent? Or have someone found a way to set that off? Placing decals on walls with PDG HDA, but would set the decal not to show over windows, doors and some other pieces.

Edit: That Eetu's trick can be handy to use with UE4 editor widget to set rest of the needed values. Own roll-decimal for each settings. 0.100101011

Edit2: Nevermind, ReceiveDecals started working as uproperty.
Edited by SaOk - Feb. 6, 2021 19:44:05
  • Quick Links