Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

reconstructing interior walls #20

Open
vedant41patel opened this issue Jan 8, 2024 · 8 comments
Open

reconstructing interior walls #20

vedant41patel opened this issue Jan 8, 2024 · 8 comments

Comments

@vedant41patel
Copy link

Hi there!

Firstly, I'd like to express my appreciation for the fantastic work on the Points2Poly—it's truly impressive!

Now, onto my main question: I recently attempted to run Points2Poly on a simple structure with a water-tight layout and one internal wall. However, the output file didn't include the internal wall. I'm curious to know if it's possible to reconstruct internal walls and components like stairs using Points2Poly. If so, could you guide me on the necessary modifications in the code and where specifically in the codebase I should make these changes?

here is the simple model that i tried:

  1. this is my original model made of simple geometries.
image
  1. here is the the internal wall.
image
  1. here is the point cloud:
image
  1. here is the output with the cut cross section of wall area.
image

as you can see there is no wall in the output. can you explain this please!

@vedant41patel vedant41patel changed the title for Internal Wall and Component Reconstruction reconstructing interior walls Jan 8, 2024
@chenzhaiyu
Copy link
Owner

chenzhaiyu commented Jan 8, 2024

Hi @vedant41patel, this is an interesting usecase. The internal wall, though having points attached, is not part of the boundary: the two cells connected via this wall are both labeled as inside, therefore the cut will not touch there. One simple way to recover the internal wall is to make it a volumetric cell (e.g., by appending a perpendicular plane with small offset to create a thin cell), and then mark this cell as inside (adding the cell into AdjacencyGraph.reachable), after the cut.

@vedant41patel
Copy link
Author

vedant41patel commented Jan 8, 2024

sorry to bother you again, but i tried adding offset internal wall in the 3d model and tried it. it still not working. can you explain it in more detail what i have to do in this case? and where to add AdjuncencyGraph.reachable and where to mark the cell as inside cell. i am lost here can you please help me.

for example: i added following walls :
image

this is the point cloud:
image

@chenzhaiyu
Copy link
Owner

You would first need to make sure a cell of the internal wall does exist in the cell complex, then perform the cut, and finally mark this cell as inside by adding the cell index to AdjacencyGraph.reachable, followed by AdjacencyGraph.save_surface_obj.

@Zhong0501
Copy link

Hi, did you create the model by hand in Sketchup? How did you obtain the corresponding point cloud?
@vedant41patel

@vedant41patel
Copy link
Author

I first created the 3d model of the houses for training in blender and then i used blensor to create the point cloud from the 3d model of the building. However because of some issues with training the whole point cloud on points2surf, so I created 3d model of each room of building and then used it to train points2surf. Also I used 3Dbag dataset to add more training data.

@Zhong0501
Copy link

"Hello, can I directly use model to reconstruct my point clouds? I noticed that your point cloud datasets are generated from meshes, but my point clouds are obtained through laser scanning." @vedant41patel

@vedantpatel41
Copy link

hey there, sorry to bother you again. i am working on interior wall issue with points2poly. as per your suggestion from above discussion regarding adding the non reachable cells to the graph. i tried that and here is what was the point cloud and results.

input point cloud:
image

reconstructed result:
image

here i in the results the cells of the small cube are extended to the boundary of the big cube. here i am getting the interior wall however i dont want this extended cells upto the boundary. is there a way to remove that part. i am working on getting interior walls in the building using points2poly and i want planes only the size of actual wall size not extended to the boundary. can you suggest me what to do here ?

@chenzhaiyu
Copy link
Owner

Hi @vedantpatel41, glad to see your progress. The wall extension issue likely stems from the intersection predicate in abspy, which is designed conservatively to allow potential intersections. Here are a few quick thoughts:

  • If you haven't already, try using the latest abspy version; e.g., we've added OBB to reduce redundant intersections: Add additional intersection test with OBB and SAT abspy#20.
  • You can modify the code to make the predicate more rigorous, e.g., here, to prevent blue planes from penetrating red ones.
  • Ensure the insertion order of planes aligns with your needs. Inserting planes from the red point cloud first, followed by the blue, should prevent the extension if the predicate is strict.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants