What's the best way of getting rid of intersecting geo?

   14673   13   3
User Avatar
Member
15 posts
Joined: Aug. 2017
Offline
I have two objects that are clones merged into one another. I can't seem to find a good way to get rid of the intersecting faces (Unseen faces inside the meshes)



User Avatar
Staff
2540 posts
Joined: July 2005
Offline
Boolean SOP will both cut at intersections and remove interior faces. Just wire your merged geometry in to the first input of the Boolean SOP.

Does that do what you want?
There's at least one school like the old school!
User Avatar
Member
15 posts
Joined: Aug. 2017
Offline
Jeff
Boolean SOP will both cut at intersections and remove interior faces. Just wire your merged geometry in to the first input of the Boolean SOP.

Does that do what you want?

Darn, I was really hoping that example would work in my case, (It does work if I instance 2 meshes like in my question) my real question (Thought it could have been the same thing) is a little more complex than that. I am instancing my geo object with the wrangle node:

This is the geo:




This is the node and output:




s@instance = "/obj/geo1";
@pscale = 1;

float angle = 44;
float rand = fit01(random(@ptnum+311),0,angle);
p@rot = quaternion(radians(rand), v@up);

I'm trying to randomly rotate a few instances along some points (if you have another suggestion on how to do this it would really help me out)


I don't fully know what the wrangle outputs I don't know how I can bool on that. Would I have to run that through a vdb point then back to polygons?

Thanks for your help!
Edited by hou_person - Aug. 15, 2017 19:31:18
User Avatar
Member
7771 posts
Joined: Sept. 2011
Offline
Try using “copy to points” after your wrangle, with the points connected to the second input. Use an object merge set to @instance's value connected to the first input. This will copy and transform actual geometry, allowing for further modification downstream.
User Avatar
Member
15 posts
Joined: Aug. 2017
Offline
jsmack
Try using “copy to points” after your wrangle, with the points connected to the second input. Use an object merge set to @instance's value connected to the first input. This will copy and transform actual geometry, allowing for further modification downstream.

Okay there is two things so please stay with me guys

@jeff, is there a bug when you are trying to bool union on high polly models? It seems not to work for me, this example is showing a deleted face with the intersecting edges and faces underneath from the union bool I exported:


And the houdini wireframe:



@jsmack I was using a copy to points I just don't know how I can set a random rotation with that node / other node. (I believe I understand what wrangler is, and it seems not to be actual geo) Could you advise me on how to randomly rotate the points node? Do I just pass in a rand() function to a transform rotation? How do I preform this on each instance on the point?

Thanks guys,
Edited by hou_person - Aug. 15, 2017 19:53:13
User Avatar
Member
7771 posts
Joined: Sept. 2011
Offline
You were already rotating the points randomly with your attribwrangle, no?

float angle = 44;
float rand = fit01(random(@ptnum+311),0,angle);
p@rot = quaternion(radians(rand), v@up);

you might need to call the attribute “orient” instead of rot, for copy to points though, but I think both work.
User Avatar
Member
15 posts
Joined: Aug. 2017
Offline
jsmack
You were already rotating the points randomly with your attribwrangle, no?

float angle = 44;
float rand = fit01(random(@ptnum+311),0,angle);
p@rot = quaternion(radians(rand), v@up);

you might need to call the attribute “orient” instead of rot, for copy to points though, but I think both work.

Sorry, yes I was. I just don't fully know what you mean when I have to use a object merge with an instance (it's my second day with Houdini):

Edited by hou_person - Aug. 15, 2017 20:29:02
User Avatar
Member
7771 posts
Joined: Sept. 2011
Offline
You have it wired right. Take the path to the instance, and delete it from the wrangle, then type it in the “object 1” field on the object merge. This will copy the geometry from the source object into the current one. The object merge copies the actual geometry instead of instancing it. Instances cannot be modified, since they don't actually exist. The instance attribute is used at render time to retrieve the geometry from elsewhere in the scene.

Edit: I just noticed you are using an instance object. Copy nodes you created into a geo node before continuing. This will ensure no instancing is performed, since that's not what you want.
Edited by jsmack - Aug. 15, 2017 20:43:51
User Avatar
Member
15 posts
Joined: Aug. 2017
Offline
Thank you very much jsmack, I got it working and I understand instances are not real poly geo.

So back to my first question. I preformed a boolean but When I preformed it:

1. still has intersecting geo (I think there might be a limit to the amount of objects you can have in the scene) in the center of the mesh, you can also see this in my above image with just 2 models in the scene.


2. It also does not give me proper UV's once I have merged them, I was thinking there could be a point node that would turn it into points then back to a poly object so I could have a proper VU map. (Is this a way I can generate the proper model?

Is there another way I can do this? I'm looking to remove all geo inside the model + have a proper UV map as well.
Edited by hou_person - Aug. 16, 2017 14:52:49
User Avatar
Member
15 posts
Joined: Aug. 2017
Offline
I think I may have it, Boolean, vdbFromPoly, Convert to poly. Can you confirm this is the best way, do I need the boolean at this point? Thank you.

User Avatar
Member
7771 posts
Joined: Sept. 2011
Offline
The boolean shouldn't mangle the uv's. Are you sure your original geo had uv's to begin with? The output of polyreduce is most likely going to give highly distorted and unusable uv's. Your final screenshot only looks like it has nice uv's because it doesn't have any. UV quickshade performs a planar projection on the input if no uv's are present. You can produce this planar projection yourself if that is the desired mapping by using a uvtexture sop.

I don't recommend using vdbtopolys to resolve interpenetrating geometry, as you will end up with thousands of times as many polys as you started with, not to mention the vdb is incapable of representing sharp edges perfectly. The boolean should resolve intersections fairly well, especially for closed shapes. If you input is nonmanifold, this can cause it to fail to produce perfectly clean results. If the input is intersecting itself to begin with, this can also present a problem as the intersections of the copies may contain multiple nested intersections. I don't have your input to test with, so I can't really see the problem from the screenshots.
User Avatar
Member
15 posts
Joined: Aug. 2017
Offline
Hey Jsmack, I really appreciate your responses this is helping me out a lot!
I have a few questions:

  1. When you say my model has no UV's, I am exporting the geo and it seems I have the UV's with the mesh, if you have a good tutorial or suggestion on how to set the UV's properly I would love to know! Because all I'm doing is attaching the ‘quickuv’
  2. With the Bool I am getting inner faces with the model, am I stuck with that? Do I just have to get an artist to go though to clean up? Is there a setting or a node that will automate this process better?
  3. If I do use the boolean how does it solve my UV issue?

Please don't feel you have to answer all these, I appreciate all your help!
User Avatar
Member
194 posts
Joined: Aug. 2011
Offline
i was running into a similar problem the other day (boolean giving inner faces–maybe i am missing a checkbox??). I found a neat little trick that seems to work.

Run your geo through a Solid Conform node followed by a Convert Tets node. Presto! you get some pretty decent geometry with no inner faces! much cleaner and less fiddly than taking a trip to Volume land!
User Avatar
Member
41 posts
Joined: March 2018
Offline
old_school
Boolean SOP will both cut at intersections and remove interior faces. Just wire your merged geometry in to the first input of the Boolean SOP.

Does that do what you want?

This tip is SOOOO AWESOME

Thanks
  • Quick Links