ianwww Posted April 26, 2021 Share Posted April 26, 2021 I've scattered randomly sized and colored metaballs onto a grid (some of which merge), converted them to polygons and then boolean intersected them with the grid, to get colored slices as attached. The slices have color striations (attached). Does anyone know what's causing the striations and how to avoid or get rid of them so that I have flat colors? Quote Link to comment Share on other sites More sharing options...
underscoreus Posted April 26, 2021 Share Posted April 26, 2021 This looks like the boolean has tried to make the flat plane a watertight mesh, meaning it has a polygon on each side of the plane, but since the plane is infinitely thin these two sides are directly on top of each other and are z-fighting with each other. I think you can fix this by telling the boolean to treat your plane like a flat geometry instead of a solid geometry in the boolean node. Quote Link to comment Share on other sites More sharing options...
ianwww Posted April 26, 2021 Author Share Posted April 26, 2021 Thanks for the suggestion but I don't think that's the cause. I had already specified my grid as a surface (and the polygon as a solid). I've attached a simpler version of the same issue - this time intersecting a single polysphere with a grid. It seems that the striations come from the varying point density around the slice (first image). If I make the point distribution uniform (with an edge equalize SOP), the striations become more uniform (second image) but they're still there. So, the color of the slice is set by the color of the points (Cd point attribute) around its edge and I think Houdini interpolates color between points as a gradient. I may be missing something really obvious but I can't work out how to overcome this. Quote Link to comment Share on other sites More sharing options...
underscoreus Posted April 26, 2021 Share Posted April 26, 2021 If it's not the case that the polygon has become two-sided then the issue is most likely just that it is an n-gon. Only having points with normals along the edges means that their value will have to be used for the entire polygon surface, hence why when you equalize the points the lines become less sporadic/random and more ordered. The only way to fix this I think is to give the mesh propper topology somehow, maybe via subdividing or triangulating the mesh in some way. Maybe forcing the normal direction to be the same could help some but in general, I'd recommend trying to fix the underlying problem of the n-gon. Quote Link to comment Share on other sites More sharing options...
ianwww Posted April 26, 2021 Author Share Posted April 26, 2021 I've found a solution. My two part fix required 1) increasing the number of rows and columns in the intersecting grid, and 2) transferring the color attribute from the polygon to the intersecting grid. Initially, my intersecting grid was only 2 rows by 2 columns (ie. 4 corner points). In the polysphere example, this gave me the problem pattern (attachment 1). By making the grid, say, 5 rows by 5 columns and then also doing an attribute transfer of the sphere's Cd to the intersecting grid I get the even color that I wanted (attachment 2). (Just doing the attribute transfer onto the 2 x 2 grid wasn't enough. The grid needed to be at least 3 x 3 for the fix to have effect.) Thanks for your interest and advice! 1 1 Quote Link to comment Share on other sites More sharing options...
AntoineSfx Posted June 11, 2021 Share Posted June 11, 2021 (edited) The metaball not only interpolates the location of the centers of the points where you instantiate the metaball, but also the color of those points. The documentation doesn't seem seem to mention it, but any attributes on points are also interpolated on the surface of the metaball. Documentation seems to be a bit dated though Here are a few pictures to explain it better, and why it's not a bug, but a feature: The spheres are just spheres copied to points with a Cd attribute The metaballs are metaballs created from the same points. Notice how a single connected metaball captures several points of different color Then you can see the cross section of said ( converted to polygon ) metaballs which now explains why there are several colors for each polygon. Each circle is in fact a n-gon with colors set a its points. At some point, the display driver (OpenGl) has to triangulate it because it can only display triangles (citation needed...) Note than the triangulation is not exposed to you, in case you actually like the streak effect If you like the multicolored version but you want to have some control on it, you have to somehow do the triangulation yourself. For example, scatter some points in it, merge them with the n-gon, triangulate / Edges=* / Flood from CHB / then attribute Blur Cd is what I did. EDIT ( There is another layer of color.. Boolean also somehow use the color information from BOTH inputs in the output. I don't really understand how he's using the information on the surface (in the case solid INTER surface) to compute the color attribute on the output, but you can use this feature at your advantage by setting a color beforehand, otherwise it will set it to White for you inside the Boolean SOP. I think this tells the whole story. Not sure what the use case would be for setting a color on inputs in Boolean, as it will be a mess anyway Edited June 11, 2021 by AntoineSfx Quote Link to comment Share on other sites More sharing options...
ianwww Posted June 13, 2021 Author Share Posted June 13, 2021 Thanks for that explanation! Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.