Found 17 posts.
Search results Show results as topic list.
Houdini Engine for 3ds Max » Rotations Wrong
- sburrichter
- 23 posts
- Offline
Houdini Engine for 3ds Max » Rotations Wrong
- sburrichter
- 23 posts
- Offline
Oh! I filed a bug today on this (#92347). You're not the only one seeing this. The hip file in that bug has a box and a cutting plane rotated {45,45,45}.
Houdini Engine API » More than one part from HAPI_GetDisplayGeoInfo?
- sburrichter
- 23 posts
- Offline
Link to the parts documentation. [www.sidefx.com]
It's been a while since I touched this, but you'll need to create primitive groups to do it. So one for the geometry itself, and another for the point cloud. Then you should be able to iterate through the parts and determine which is the geo and which is the point cloud.
It's been a while since I touched this, but you'll need to create primitive groups to do it. So one for the geometry itself, and another for the point cloud. Then you should be able to iterate through the parts and determine which is the geo and which is the point cloud.
Houdini Engine API » Getting image from COP HDA Subnet [Solved]
- sburrichter
- 23 posts
- Offline
Looks like that did the trick! Thanks guys! Attached a screenshot of the result with Qt reading the memory output. Image discrepancy is due to some leftover settings that I'm too lazy to change
Houdini Engine API » HAPI Basics question, getting the result of a cooked asset.
- sburrichter
- 23 posts
- Offline
In order to get the point data, you'll need to call HAPI_GetAttributeInfo() and HAPI_GetAttributeFloatData(). I'd do a quick scan through the geo and part sections of the docs to get started (one's a container and the other actually holds the mesh information), but generally the process is like this:
After that, you'll have some kind of point array to work with! That Node ID will allow you access to a lot of functionality.
Edit: Point3 is a max-specific container for a float3 array.
HAPI_NodeId nodeId = 1234; // Check GeoInfo incase we need multiple parts HAPI_GeoInfo geoInfo; HAPI_GetGeoInfo(); // Check part information for the point count (used later) HAPI_PartInfo partInfo; HAPI_GetPartInfo(); // Check information about our "P" attribute (is it an array? how big?) HAPI_AttributeInfo attrInfo; HAPI_GetAttributeInfo() // Get our "P" data using the supplied information Point3* p = new Point3[partInfo.pointCount]; HAPI_GetAttributeFloatData();
After that, you'll have some kind of point array to work with! That Node ID will allow you access to a lot of functionality.
Edit: Point3 is a max-specific container for a float3 array.
Edited by sburrichter - July 18, 2018 20:50:21
Houdini Engine API » Getting image from COP HDA Subnet [Solved]
- sburrichter
- 23 posts
- Offline
EDIT: This has been solved! Grab Houdini 16.5.525 or higher to be able to use this.
Hey guys! I'm doing a little experiment and need a sanity check. Haven't been able to find a whole lot of information, so I'm wondering if anyone's here looked at this.
So, I have a COP Subnet HDA that's simply loading an image. However, when I try to extract it to memory and write it out to a file or have Qt load it, it looks completely washed out. Does this code look like the right method for a simple image extraction through COPs?
Regarding writing out, I'm just using ofstream:
Notes: I attached a sample of the output. I also haven't looked through the data of the image itself to see what is exactly missing.
Hey guys! I'm doing a little experiment and need a sanity check. Haven't been able to find a whole lot of information, so I'm wondering if anyone's here looked at this.
So, I have a COP Subnet HDA that's simply loading an image. However, when I try to extract it to memory and write it out to a file or have Qt load it, it looks completely washed out. Does this code look like the right method for a simple image extraction through COPs?
HAPI_CookNode( this->session, this->assetNode, &this->cookOptions); HAPI_RenderCOPToImage(this->session, this->assetNode); int bufferSize; HAPI_ExtractImageToMemory(this->session, this->assetNode, HAPI_PNG_FORMAT_NAME, "C A", &bufferSize); std::vector<char> data; data.resize(bufferSize); HAPI_GetImageMemoryBuffer(this->session, this->assetNode, &data.front(), bufferSize);
Regarding writing out, I'm just using ofstream:
std::ofstream file(outputFilePath); if( file ) { file.write(&data.front(), data.size()); }
Notes: I attached a sample of the output. I also haven't looked through the data of the image itself to see what is exactly missing.
Edited by sburrichter - July 24, 2018 12:04:58
Houdini Lounge » Network Rendering with Backburner
- sburrichter
- 23 posts
- Offline
Not OP, but my studio had me look into this to start a little Houdini pipeline where it's primarily Autodesk tools.
Good news: IT DOES WORK!
Bad news: I don't think I can share the implementation
Anyway, symek summarized it pretty well. I had set up a mantra node locally to generate the IFDs onto the server. Then I created an HDA with all the required parameters from “Advanced Operations” in Appendix B here [download.autodesk.com](page 75 in the PDF).
From there, it was just a matter of hooking up the parameters to generate the command string via scripting. Python was awesome for this.
For those who never played with Backburner before:
1. %tn replaces $F
2. Make sure to set -tp_start, otherwise %tn won't do a whole lot
3. DO NOT SET THE PORT IF IT'S SET TO DEFAULT. It won't submit.
Good news: IT DOES WORK!
Bad news: I don't think I can share the implementation
Anyway, symek summarized it pretty well. I had set up a mantra node locally to generate the IFDs onto the server. Then I created an HDA with all the required parameters from “Advanced Operations” in Appendix B here [download.autodesk.com](page 75 in the PDF).
From there, it was just a matter of hooking up the parameters to generate the command string via scripting. Python was awesome for this.
For those who never played with Backburner before:
1. %tn replaces $F
2. Make sure to set -tp_start, otherwise %tn won't do a whole lot
3. DO NOT SET THE PORT IF IT'S SET TO DEFAULT. It won't submit.
Technical Discussion » Run python scripts in a Custom ROP OTL
- sburrichter
- 23 posts
- Offline
Okay. This was driving me crazy and this thread kept popping up. Here's the solution I found.
Version: H15.5.480
Scenerio: Created a new Output Driver via the New Operator Type prompt. Need to attach the “Render to Disk” button to a python script, but the callback script option is disabled.
Solution:
1. Open up the type properties pane
2. Add a file parameter with the name “soho_program”
3. Assuming you have a PythonModule setup in the scripts section, type “opdef:.?PythonModule” into the field
4. Add a file parameter with the name “soho_outputmode”
5. Type “2” into the field
Now that “Render to Disk” button will run the PythonModule defined in the scripts tab. “soho_program” defines the python script that'll run. Output mode 2 will prevent anything special happening on stdout.
I still need to test it more, but I typed this up as soon as I got a print statement through.
Edit: If you need to pass in the current node, you can use hou.pwd() to get the current node. Essentially that operator is your current working directory.
Recommended reading: SOHO [sidefx.com], opdef: [sidefx.com]
Version: H15.5.480
Scenerio: Created a new Output Driver via the New Operator Type prompt. Need to attach the “Render to Disk” button to a python script, but the callback script option is disabled.
Solution:
1. Open up the type properties pane
2. Add a file parameter with the name “soho_program”
3. Assuming you have a PythonModule setup in the scripts section, type “opdef:.?PythonModule” into the field
4. Add a file parameter with the name “soho_outputmode”
5. Type “2” into the field
Now that “Render to Disk” button will run the PythonModule defined in the scripts tab. “soho_program” defines the python script that'll run. Output mode 2 will prevent anything special happening on stdout.
I still need to test it more, but I typed this up as soon as I got a print statement through.
Edit: If you need to pass in the current node, you can use hou.pwd() to get the current node. Essentially that operator is your current working directory.
Recommended reading: SOHO [sidefx.com], opdef: [sidefx.com]
Edited by sburrichter - Oct. 21, 2016 14:16:34
Houdini Engine for Unreal » Destructible mesh
- sburrichter
- 23 posts
- Offline
Alternatively, there's also a way to do it without engine. If you install the Game Dev Toolset (https://github.com/sideeffects/GameDevelopmentToolset [github.com]), there's a tool called “Fracture Static Export”.
I attached a sample file below (you'll still need that toolset to process it yourself!).
1. If you export the FBX_RESULT node to fbx (see RENDER node for exact settings), Unreal will read it just fine. Just be sure to combine meshes!
2. Then right-click the asset and create a destructible mesh.
3. In that panel, there should be a button that says “Import FBX Chunks”.
4. Just click that and then select the fbx file again.
If you didn't set the Explode Amount to 0, then you should be able to see the chunks slightly offset for Preview Depth 1.
I haven't played with it beyond that, but that should be able to get you going with UE4's destruction system! If you want to create more layers, it'll probably involve masking and exporting multiple FBX files with different chunks.
I attached a sample file below (you'll still need that toolset to process it yourself!).
1. If you export the FBX_RESULT node to fbx (see RENDER node for exact settings), Unreal will read it just fine. Just be sure to combine meshes!
2. Then right-click the asset and create a destructible mesh.
3. In that panel, there should be a button that says “Import FBX Chunks”.
4. Just click that and then select the fbx file again.
If you didn't set the Explode Amount to 0, then you should be able to see the chunks slightly offset for Preview Depth 1.
I haven't played with it beyond that, but that should be able to get you going with UE4's destruction system! If you want to create more layers, it'll probably involve masking and exporting multiple FBX files with different chunks.
Houdini Engine for Unreal » Simple Animated Points to Unreal via FBX
- sburrichter
- 23 posts
- Offline
Hey there!
That shelf actually got rolled into this: https://github.com/sideeffects/GameDevelopmentToolset [github.com].
For vertex animations, I do have a tool called “Vertex Animation Rig” under the Cloth section of the shelf set in that toolset. You definitely don't need to create a fracture for this.
If you select the last SOP node in the chain, click that tool, it should generate everything needed (1 bone per point, the keyframes, skinning, and the final deformer). All you'll need to do is export the /obj/FBX_RESULT node to FBX and you'll be good to go.
Not sure what engine you're using, but I only got this to work with UE4.11. For whatever reason, it doesn't work with UE4.10 and lower. It should work fine in Unity and other engines though!
Hope this helps!
That shelf actually got rolled into this: https://github.com/sideeffects/GameDevelopmentToolset [github.com].
For vertex animations, I do have a tool called “Vertex Animation Rig” under the Cloth section of the shelf set in that toolset. You definitely don't need to create a fracture for this.
If you select the last SOP node in the chain, click that tool, it should generate everything needed (1 bone per point, the keyframes, skinning, and the final deformer). All you'll need to do is export the /obj/FBX_RESULT node to FBX and you'll be good to go.
Not sure what engine you're using, but I only got this to work with UE4.11. For whatever reason, it doesn't work with UE4.10 and lower. It should work fine in Unity and other engines though!
Hope this helps!
Houdini Engine for Unreal » Is it possible to import an animated geometry into UE4?
- sburrichter
- 23 posts
- Offline
If you want to create something like that using individual uniform geometry, the best approach I can think of is to create geo nodes with just a box in them, and then animate them via keyframing their transforms (NOT THE xform SOP!…otherwise that's considering a vertex animation which is no good for UE4).
You'd want to do something like this:
-subnet
–box1
–box2
–box3
–box…
–box#
An option could be to create a box in a geo node, copy it according to the Fibonacci sequence, make sure they're named properly, and animate the pieces over time. Then, put together a bit of python to break out all the pieces into their own geo nodes inside a single subnet, automatically scrub the timeline, and keyframe their transforms. If you export that subnet as an FBX and import it into UE4, UE4 will automatically generate the skeleton for you and skip the entire skinning process in Houdini.
My destruction tool has a similar process using a Rigid Body Packed Object DOP node as its input. You could use that as a basis to create another tool that uses any SOP node.
https://github.com/sideeffects/GameDevelopmentShelf [github.com]
If you want to skip the python part, you might be able to animate it at the SOP level, pack the geometry using an assemble SOP, import it into a DOP network via Rigid Body Packed Object DOP, and then use the above tool.
If I get the chance, I'll see about putting a little example together.
You'd want to do something like this:
-subnet
–box1
–box2
–box3
–box…
–box#
An option could be to create a box in a geo node, copy it according to the Fibonacci sequence, make sure they're named properly, and animate the pieces over time. Then, put together a bit of python to break out all the pieces into their own geo nodes inside a single subnet, automatically scrub the timeline, and keyframe their transforms. If you export that subnet as an FBX and import it into UE4, UE4 will automatically generate the skeleton for you and skip the entire skinning process in Houdini.
My destruction tool has a similar process using a Rigid Body Packed Object DOP node as its input. You could use that as a basis to create another tool that uses any SOP node.
https://github.com/sideeffects/GameDevelopmentShelf [github.com]
If you want to skip the python part, you might be able to animate it at the SOP level, pack the geometry using an assemble SOP, import it into a DOP network via Rigid Body Packed Object DOP, and then use the above tool.
If I get the chance, I'll see about putting a little example together.
Houdini Engine for Unreal » How to import fracture animation to UE4?
- sburrichter
- 23 posts
- Offline
Oh hey! That's a thing I've been working on
It's largely a work-in-progress, but several folks have been getting good results in their engines. It's part of a tool set that I've been slowly putting together to help folks with game development. Quite slowly. There's not much material on the matter and putting that kind of material together is quite time consuming. I've been using Houdini 15.0.347 and the latest UE4/Unity builds for testing.
Here's a link for some sort of examples regarding destruction: https://onedrive.live.com/redir?resid=B4947B2FCAB0C40D!59864&authkey=!AKzNzdlW6tLvUGg&ithint=folder%2c [onedrive.live.com]
Here's a link for the latest git build of the little projects I've been working on: http://git.techartadventures.com/sburrichter/realtimevfx-shelf [git.techartadventures.com]
The links above have the latest files which are drastically different from the old version. I highly suggest getting those and taking a look through the readmes. If you upload your hip file, I could take a look. The tool can be a bit tough to debug at times
Edit: Also added a blog post to my site http://techartadventures.com/simple-fractures/ [techartadventures.com]
It's largely a work-in-progress, but several folks have been getting good results in their engines. It's part of a tool set that I've been slowly putting together to help folks with game development. Quite slowly. There's not much material on the matter and putting that kind of material together is quite time consuming. I've been using Houdini 15.0.347 and the latest UE4/Unity builds for testing.
Here's a link for some sort of examples regarding destruction: https://onedrive.live.com/redir?resid=B4947B2FCAB0C40D!59864&authkey=!AKzNzdlW6tLvUGg&ithint=folder%2c [onedrive.live.com]
Here's a link for the latest git build of the little projects I've been working on: http://git.techartadventures.com/sburrichter/realtimevfx-shelf [git.techartadventures.com]
The links above have the latest files which are drastically different from the old version. I highly suggest getting those and taking a look through the readmes. If you upload your hip file, I could take a look. The tool can be a bit tough to debug at times
Edit: Also added a blog post to my site http://techartadventures.com/simple-fractures/ [techartadventures.com]
Work in Progress » Real-Time VFX Pipelines
- sburrichter
- 23 posts
- Offline
No problem everyone!
I'm thinking of actually posting these quick summaries to my blog and leaving screenshots in this thread to minimize clutter. It would certainly give me a good reason to keep it up-to-date with my adventures!
I'll update once I put together another little tool to take a look at!
I'm thinking of actually posting these quick summaries to my blog and leaving screenshots in this thread to minimize clutter. It would certainly give me a good reason to keep it up-to-date with my adventures!
I'll update once I put together another little tool to take a look at!
Work in Progress » Real-Time VFX Pipelines
- sburrichter
- 23 posts
- Offline
Hey everyone! So I was informed to share some of the things I've been working on regarding real-time VFX pipelines on here. I've been more of a lurker, but looking to change that.
This presentation shows some of the pipelines I was overviewing: https://vimeo.com/122681598 [vimeo.com]
So as a first post to this thread, my fire texture sheet pipeline is attached!
Games still really only use sprites for particle systems. This file shows how to put together a fire sprite quickly. Here's the quickstart if the HIP is saved to a directory already:
1) For previewing, dive into VISUALIZE and cache the geo. It's not all that intensive so it should only take a minute or two.
2) In RENDERING, click the render button on the mantra node. It has the end frame set and automatically finds first frame based on a 64 frame texture sheet (I wanted the flame to already be active and then dissipate).
3) In COMPOSITE, click the render button on the ROP output. The mosaic node prior tiles the frames automatically. You may or may not need to hit “Reload Sequence” in the file node.
Some of the adjustments I made to the default setup of the Flames Shelf tool:
1) In SHADERS, make the color ramp for fire like this: black - color - black. This is what gives it those pockets of lacking color.
2) In SHADERS, set the color in Smoke to a constant black. We want to have full control of the color of the fire. Nothing else added.
3) In SIMULATION, increase Scale Source Volume. I noticed it's pretty compact by default and results in an image that's a little too intense and goes to white. Not so good for post-processing in-engine.
Anyway, I'm going to edit this as I go along. I have a digital asset in the works that contains all my samples and some useful tools. Hoping to make that public in the near future!
This presentation shows some of the pipelines I was overviewing: https://vimeo.com/122681598 [vimeo.com]
So as a first post to this thread, my fire texture sheet pipeline is attached!
Games still really only use sprites for particle systems. This file shows how to put together a fire sprite quickly. Here's the quickstart if the HIP is saved to a directory already:
1) For previewing, dive into VISUALIZE and cache the geo. It's not all that intensive so it should only take a minute or two.
2) In RENDERING, click the render button on the mantra node. It has the end frame set and automatically finds first frame based on a 64 frame texture sheet (I wanted the flame to already be active and then dissipate).
3) In COMPOSITE, click the render button on the ROP output. The mosaic node prior tiles the frames automatically. You may or may not need to hit “Reload Sequence” in the file node.
Some of the adjustments I made to the default setup of the Flames Shelf tool:
1) In SHADERS, make the color ramp for fire like this: black - color - black. This is what gives it those pockets of lacking color.
2) In SHADERS, set the color in Smoke to a constant black. We want to have full control of the color of the fire. Nothing else added.
3) In SIMULATION, increase Scale Source Volume. I noticed it's pretty compact by default and results in an image that's a little too intense and goes to white. Not so good for post-processing in-engine.
Anyway, I'm going to edit this as I go along. I have a digital asset in the works that contains all my samples and some useful tools. Hoping to make that public in the near future!
Technical Discussion » Houdini not working on Mac Os Yosemite
- sburrichter
- 23 posts
- Offline
Nope! Haven't found a solution, then again I didn't press too far into it. Not sure if it's something we can figure out and hack around
Technical Discussion » Houdini not working on Mac Os Yosemite
- sburrichter
- 23 posts
- Offline
No dice. Although this line was added to the end of the hkey crash log:
36 ??? 0x0000000000000003 0x0 + 3
Not that it really says much haha. Maybe there's an exit(3) somewhere that the devs could find XD
I think I'm going to start a running list on my original post of things we tried.
36 ??? 0x0000000000000003 0x0 + 3
Not that it really says much haha. Maybe there's an exit(3) somewhere that the devs could find XD
I think I'm going to start a running list on my original post of things we tried.
Technical Discussion » Houdini not working on Mac Os Yosemite
- sburrichter
- 23 posts
- Offline
I've been getting that too Launching from the terminal yields two crash logs which I attached.
Received them on a early-2011 15" Macbook Pro. Heh. We did sign up as guinnea pigs downloading Yosemite I have the feeling darwin-x86_64-clang4.1-MacOSX10.8 should read 10.10.
Things we tried and didn't work
Received them on a early-2011 15" Macbook Pro. Heh. We did sign up as guinnea pigs downloading Yosemite I have the feeling darwin-x86_64-clang4.1-MacOSX10.8 should read 10.10.
Things we tried and didn't work
- chmod 777 sesinetd (looking for permissions issues)
Edited by - Aug. 28, 2014 18:27:08
-
- Quick Links