[SOLVED]Fluid Exports Lumpy OBJ files?

   6892   16   1
User Avatar
Member
2531 posts
Joined: June 2008
Online
Hi All,

I have a FLIP simulation that looks good in Houdini. Now I want to export the fluid surface to an OBJ sequence. I do this via the File Cache node. This does work but the resulting mesh looks very lumpy and faceted.

The resulting mesh seems to be impervious to fixup in other 3D programs as well. Cinema4D phong tags and hyper nurds have no effect. Blender smoothing helps a bit but no enough.

What's the trick to making the output model look good?
I really want much thinner tendrils, like I see in the particle view of Houdini.

Thanks
Edited by - Feb. 28, 2015 12:16:51

Attachments:
lumpy.jpg (39.5 KB)
Screen Shot 2015-02-21 at 8.57.29 PM.png (297.1 KB)

Using Houdini Indie 20.0
Windows 11 64GB Ryzen 16 core.
nVidia 3050RTX 8BG RAM.
User Avatar
Member
606 posts
Joined: May 2007
Offline
Ah, I bet you are caching out the geometry from the “dopimport1” node inside your fluid OBJ, the one with the display flag set. This dopimport node fishes out the visualization data from the sim, so what you are getting is the “surface” guide geometry you would see in the DOPnet.

You need to cache out from the “RENDER” null that has the render flag set, that branch does all the proper particle surfacing, instead of just an isosurface of the volume data.
User Avatar
Member
2531 posts
Joined: June 2008
Online
I did place the File Cache node right after the RENDER null as you mention. So the output you see in the screen shots came from that approach. What I posted is a particle separation of 0.15?

Is that typically good enough for most work?

I also started messing around with the VDB conversion node parameter
. But they seem to inherit the particle separation from the main system.

Here is an export with a particle separation of 0.05. (Which makes extremely large OBJ files). But they don't really look any better.

Attachments:
fluid_problem.jpg (35.6 KB)

Using Houdini Indie 20.0
Windows 11 64GB Ryzen 16 core.
nVidia 3050RTX 8BG RAM.
User Avatar
Member
258 posts
Joined:
Offline
If you look at the VDB conversion node, where it references the particle separation, there is nothing to prevent you from adding in a multiplier on the expression to make it smaller (expression)*.5 as an example. Thought that might just make it more lumpy.

There is no right answer for what is a good particle separation number as it depends on how big your scene is, a .015 on a scene that is large could cripple your machine.

I would do some wedge testing with different setting on one frame to see what gave me the best results.

As well, it is not heard of to add in a peakSop after poly conversion with a very small negative number to suck in some high spots, maybe throw in a smoothSop set to position, and maybe another smoothSop set to smooth Normals for good measure….
User Avatar
Member
606 posts
Joined: May 2007
Offline
Ah, I misread that the saved surface differed from the surface you saw in renders, my bad, you were comparing to the particles.

There are a couple of threads going on in Odforce about vdb meshing;
http://forums.odforce.net/topic/21981-another-vdb-dilemma/ [forums.odforce.net]
http://forums.odforce.net/topic/21988-vdb-jitter-continues/ [forums.odforce.net]
maybe the proposed solutions could be of help to you as well.
User Avatar
Member
2624 posts
Joined: Aug. 2006
Offline
Please post a flip scene. AFIK I dont know why you are rendering a obj . bgeo has far better compression.


Rob
Gone fishing
User Avatar
Member
2531 posts
Joined: June 2008
Online
Thanks for the links and nodes to try out. I have added a VDB Smooth and played with scale to make it less lumpy. One of those links mentions scaling via speed but I don't know how to set that up yet.

Also I read about dialate/smooth/erode workflow. I can't seem to locate the dilate or erode nodes. Are they nodes or are they parameters in some other node?

@circusmonkey: I am handing off the result to a C4D guy who has an OBJ sequence reader. Cinema4D does not read .bgeo files.
Using Houdini Indie 20.0
Windows 11 64GB Ryzen 16 core.
nVidia 3050RTX 8BG RAM.
User Avatar
Member
606 posts
Joined: May 2007
Offline
Enivob
Thanks for the links and nodes to try out. I have added a VDB Smooth and played with scale to make it less lumpy. One of those links mentions scaling via speed but I don't know how to set that up yet.

Also I read about dialate/smooth/erode workflow. I can't seem to locate the dilate or erode nodes. Are they nodes or are they parameters in some other node?

You need to calculate the velocity magnitude to a volume, and use that as the alpha mask volume for vdb smooth sdf sop. Dilate and erode are operating modes for vdb reshape sdf sop.
User Avatar
Member
2624 posts
Joined: Aug. 2006
Offline
Enivob
@circusmonkey: I am handing off the result to a C4D guy who has an OBJ sequence reader. Cinema4D does not read .bgeo files.

Even better use the Alembic file format then ! C4D handles that out of the box

Rob
Gone fishing
User Avatar
Member
2624 posts
Joined: Aug. 2006
Offline
eetu
Enivob
You need to calculate the velocity magnitude to a volume, and use that as the alpha mask volume for vdb smooth sdf sop. Dilate and erode are operating modes for vdb reshape sdf sop.

Hi eetu , does that come for free in the flip calculation ? . Very interested to see an example of this masking technique.
I was thinking along the lines of using some volume masking technique to bring the surface to a halt, imagine lava and the crust cooling and a different rate to the core.

Rob
Edited by - Feb. 23, 2015 14:25:27
Gone fishing
User Avatar
Member
2531 posts
Joined: June 2008
Online
calculate the velocity magnitude to a volume
I am inside a fluidtank_fluid network so I have a variable named V.

From reading the help I think I need a second node to connect to the vdb smooth sdf to use as the mask.

What node would I use and how would I link in the varible V to calculate a magnitude?
Using Houdini Indie 20.0
Windows 11 64GB Ryzen 16 core.
nVidia 3050RTX 8BG RAM.
User Avatar
Member
2531 posts
Joined: June 2008
Online
I am still working on this.

Would I use a VOPSOP to calculate the magnitude? What nodes would allow for that inside the VOPSOP?
Using Houdini Indie 20.0
Windows 11 64GB Ryzen 16 core.
nVidia 3050RTX 8BG RAM.
User Avatar
Member
4189 posts
Joined: June 2012
Offline
Enivob
I am still working on this.

Would I use a VOPSOP to calculate the magnitude? What nodes would allow for that inside the VOPSOP?

'Length' seems legit
User Avatar
Member
2531 posts
Joined: June 2008
Online
I found a post on odforce by eetu that hints at how to construct a vopsop to calculate the magnitude.

http://forums.odforce.net/topic/21784-flip-fluid-mantra-velocity-mesh-pass/page-2?hl=magnitude#entry129812 [forums.odforce.net]

I have modified the fluidtank fluid by placing a VDB Smooth SDF inline.
I have added a vopsop and calculated the magnitude.
I have typed the word magnitude into the alpha mask of the VDB Smooth SDF.

But it still does not work. Houdini tells me I don't have a mask when I just calculated it.

Does anyone know how to make this technique of scaling by velocity work?
I am using the shelf tool FLIP tank as my starter scene.

Attachments:
v_to_magnitude.jpg (71.4 KB)
mask_empty.jpg (87.2 KB)

Using Houdini Indie 20.0
Windows 11 64GB Ryzen 16 core.
nVidia 3050RTX 8BG RAM.
User Avatar
Member
606 posts
Joined: May 2007
Offline
Hi, a couple of things need fixing.

The velocity volumes coming out of dops are usually named vel, not v. The point attribute tends to be v. You can always check this with MMB over the nodes.

To modify volume data, you need to use a Volume VOP.

If you want to write to a new volume, in this case speed, you need to create the volume before the Volume VOP. (The default volumes coming out of a flip sim are surface and vel, in this case you could just overwrite the surface data and bypass the need to create a new volume)

VDB smooth SDF probably wants a VDB volume in the mask, so you probably should convert your volume to VDB with Convert VDB SOP. I don't know how the vdb smooth sdf sop decides which volume to use if there are multiple volumes coming in to the second connector, maybe it takes the first one, so to be on the safe side you should probably delete the unnecessary volumes before that.
User Avatar
Member
2531 posts
Joined: June 2008
Online
I tried some to mock up your suggestions but I still don't have it working yet.

I moved the VEX code from the VOPSOP into the VolumeVOP. Does this make sense?

I still get “The Mask Input Is Empty”.

Attachments:
Screen Shot 2015-02-25 at 4.15.46 PM.png (40.1 KB)
Screen Shot 2015-02-25 at 4.16.07 PM.png (25.5 KB)

Using Houdini Indie 20.0
Windows 11 64GB Ryzen 16 core.
nVidia 3050RTX 8BG RAM.
User Avatar
Member
2531 posts
Joined: June 2008
Online
It ends up you don't need the VEX code at all. The VDB From Standard Particles node uses pscale by default.

I have working HIP solution to this lumpy problem posted on od|force. [forums.odforce.net]
Using Houdini Indie 20.0
Windows 11 64GB Ryzen 16 core.
nVidia 3050RTX 8BG RAM.
  • Quick Links