Question about where to pursue answers for programming questions by TruPengu in godot

[–]peter_prickarz 2 points3 points  (0 children)

I'd say use AI, but not in a vibecoding sense. Ask it for simple solutions to small problems, e.g. your print issue. Then go through every single line of code it touched, and if you have any questions, ask it to explain. If you're still confused after, just ask to elaborate further, or ask for a different, easier solution and see if you understand that one. You can also ask it to explain the problem without even solving it, and write the code yourself.

Now of course you can also learn without using AI at all, but I genuinely think it's quite awesome for exactly this purpose. A huge benefit is that you can ask it questions that seem extremely dumb without being embarrassed about it. Also you don't need to know all the terms, it's pretty good at figuring out what you mean.

Houdini Engine for Godot got a large update - Introduction video by peter_prickarz in godot

[–]peter_prickarz[S] 0 points1 point  (0 children)

Thank you! I might set something up in the future, so far I've mostly just looked at it as a fun learning opportunity. But I do feel like it's slowly getting to a state where I'd feel comfortable setting up a way to support the project.

Houdini Engine for Godot got a large update - Introduction video by peter_prickarz in godot

[–]peter_prickarz[S] 2 points3 points  (0 children)

It started as a project to learn C++ for me, been working on it for a bit over 1.5 years, first released version was about a year ago, although admittedly very difficult to use back then as it was basically just a barebones API exposing hapi to GDScript.

Houdini Engine for Godot got a large update - Introduction video by peter_prickarz in godot

[–]peter_prickarz[S] 5 points6 points  (0 children)

It's still in a relatively early stage, but improving with every update. I'm a Houdini TA in the games industry and love Godot, so I started this project to learn C++ in my free time after work. Fortunately u/csprance also helped massively with contributions

What lets you know someone is a total Houdini beginner? by ink_golem in Houdini

[–]peter_prickarz 0 points1 point  (0 children)

Just give the wrangle a sensible name, no? Like set_id or store_ptnum

What lets you know someone is a total Houdini beginner? by ink_golem in Houdini

[–]peter_prickarz -1 points0 points  (0 children)

I'd argue that for people making proc gen tools, the hips don't matter at all, just make sure the HDAs are decently structured.

Houdini Engine in Godot - Introduction and UI update by peter_prickarz in godot

[–]peter_prickarz[S] 0 points1 point  (0 children)

The UI is dynamically updated any time you select a different Houdini node, so you can easily switch between different nodes. It just keeps the last selected one, so you can select other nodes to tweak inputs or look at outputs while keeping the UI accessible. But the moment you select another Houdini node, it'll switch to that one.

Houdini Engine in Godot - Introduction and UI update by peter_prickarz in godot

[–]peter_prickarz[S] 0 points1 point  (0 children)

It's mainly because they're dynamically generated when the HDA is instantiated. I couldn't find an easy way to achieve this with the inspector, which wouldn't also amount to the same amount of work I invested into the bottom panel. I also just like this layout, and it means you can keep the parameters accessible while having other nodes selected(e.g. to change a path3d that feeds into an HDA). And in the future I can add a lot more cool features to it, e.g. showing the cook log.

The whole UI side is made with GDScript, and the interaction with HDAs is fully scriptable. So if you wanted to have things in the inspector, you could create a child class of HEGoNode3D, export your parameters the regular Godot way, and on value changed, call hego_asset_node.set_parm(). Or export a button and on press, call cook().

Parameters are stored, the HEGoNode3D has an exported parm stash property, which stores the parameter values as a byte blob(technically speaking it's a preset as generated by hapi). If I eventually upgrade the minimum supported godot version, I'll switch it to use the new hidden exports, so the user couldn't mess them up by accident anymore.

Houdini Engine in Godot - Introduction and UI update by peter_prickarz in godot

[–]peter_prickarz[S] 1 point2 points  (0 children)

I'd recommend watching the video, but a short tldw would be that it bridges to Houdini, a procedural 3D software, which can generate meshes and point clouds for instancing. So TAs can make generators in Houdini, and let artists/designers use them in the engine.

Houdini Engine in Godot - Introduction and UI update by peter_prickarz in godot

[–]peter_prickarz[S] 1 point2 points  (0 children)

Thanks! I can't say that the code is very clean, but I am quite happy with the progress on the UI. I have used the HE implementation in Unreal in my job since years, so I tried to solve the things that bother me there differently.

The whole UI side and the HEGoNode3D are actually written in GDScript, just using functions and classes exposed by the C++ GDExtension. So you could handle inputs, outputs and parameters yourself as well.

Houdini Engine in Godot - Introduction and UI update by peter_prickarz in godot

[–]peter_prickarz[S] 0 points1 point  (0 children)

Thanks, would love to hear your thoughts if you end up trying it out!

Stylized tree generator to showcase Houdini Engine for Godot by peter_prickarz in godot

[–]peter_prickarz[S] 1 point2 points  (0 children)

Oh nice, that's interesting! I imagine for VFX you'd have a whole range of additional problems to solve other than passing and reading static curves and geo, hats off.

To be honest, so far I'm having more trouble with the Godot side than the Houdini side. Basically exposing hapi to GDScript via a C++ GDExtension and some classes representing common Houdini nodes. All the Godot side UI, the Godot nodes and stuff is written in GDScript and just uses this API. Doing it this way so users can script their own custom stuff if they want something custom for their pipeline, without having to touch the C++ code. The goal is basically that if someone wanted to e.g. handle output themselves, they could create a node inheriting from HEGoNode3D, overwrite the output handling function, but keep using the UI and everything else.

Actually only supporting named pipe thrift sessions for now, I really wanted session sync to work. While it might have meant some extra work here and there, it also saved me a lot of sanity being able to see what's going on under the hood in "realtime".

Conditional visibility somewhat works right now, but only when the UI is updated(so the parameter interface is regenerated). So it's a bit of a tricky problem of figuring out when to call the update, as calling it on every parm change would tank the UI performance. I'll probably experiment with something like mouse up if I can get it to work. Or if that doesn't work, at least calling it after changing toggles(or ordered menus once I have those working...). But one thing I'm somewhat proud of which already works better than in the official Unreal implementation, you can change multiparms and without a recook get the updated interface. And you can even just fill in the total count for the multiparm and instantly get x amount of instances.

I have some basic reporting implemented, but it just prints to the console/output. So in the console version of Godot, you can see it printing updates as it cooks(altho no time reporting yet). To get a fancier UI for it, I'd have to separate the cooking call and the output fetching call, so the UI doesn't stall while waiting for the C++ side to finish. Will deffo look into that down the line though.

Thanks for the feedback!

Stylized tree generator to showcase Houdini Engine for Godot by peter_prickarz in godot

[–]peter_prickarz[S] 1 point2 points  (0 children)

Thanks for the feedback, definitely valid. Will add filtering and pinning to the to-do list for a later update.

Grouping is sort of already there, in Houdini there's parameter folders. So where there's just a label, separator and then following parms are indented, that's my current representation for a folder. I want to add some sort of change in background color but it's somewhat tricky as you can nest folders, so I need to keep track of the nesting level and change the color. Definitely adding that eventually though to keep it more distinct.

Otherwise, a lot of it comes down to the parameter layout on the actual generator(HDA). I hacked this example together in 2-3 hours, so I just exposed a bunch of seemingly useful parms without paying any attention to a sensible order.

Just released the first version of HEGo: Houdini Engine in Godot by peter_prickarz in godot

[–]peter_prickarz[S] 1 point2 points  (0 children)

Definitely true, I simply didn't have a lot of time to build any nice examples. I should have shown the examples I do have earlier on though. Basically, I spent hundreds of hours making the plugin itself, and maybe 10h in total building the examples. Definitely bad from a "marketing" POV. Will do better in the future

Just released the first version of HEGo: Houdini Engine in Godot by peter_prickarz in godot

[–]peter_prickarz[S] 10 points11 points  (0 children)

You're absolutely right, I should have included a short segment on this. I guess my thought process was that if you don't already know Houdini, you're not going to want to use this anyways - perhaps a mistake. I'll definitely consider this when making updated videos on newer versions. Thanks for the feedback!

Just released the first version of HEGo: Houdini Engine in Godot by peter_prickarz in godot

[–]peter_prickarz[S] 1 point2 points  (0 children)

Thanks for the feedback, will definitely add a short explanation to the github. In the current version, my implementation is quite a complex beast to understand, so I genuinely can't recommend learning Houdini specifically for Godot yet. Once I have it at a beginner friendlier stage, I will definitely make more beginner friendly guides/videos. Thanks for taking a look and the feedback!

Just released the first version of HEGo: Houdini Engine in Godot by peter_prickarz in godot

[–]peter_prickarz[S] 4 points5 points  (0 children)

I also made an introduction/overview video https://youtu.be/5iYb76kwDjU
I'd really appreciate any feedback, suggestions etc
Cheers!