[Plugin] Point Merger tools v1.2 UPDATED@ 23/06/09
-
@unknownuser said:
No possible to make this with automatic process? (Merge points)
Exploring all points!Actually, I was thinking about something like this initially, before making the scripts. It would go through the entire selection, find which points were close to each-other, then move them together.
I didn't try it though, because I would imagine that it would be extremely slow, having to find the distance between every single point that's part of the selection.
To put the amount of times it would have to find the distance between 2 points into perspective, (I think) the equation for possible lines between a number of points(a) is:
(a-1)Γ·2=b
ab = c = amount of equations necessary.β¦so if you have 60 vertices in the selection, it would need to find the distance between points 1770 times.
60 - 1 = 59
59 Γ· 2 = 29.5
29.5 x 60= 1770β¦So yes, it's possible, but maybe slow, unless used with a fairly low amount of vertices in the selection.
Nonetheless, I'll try it sometime soon, but first I'm going to start getting some visualizations working with the current scripts. Maybe I'll make it highlight affected points in yellow, and the point they'll move to in blue or something.
-
This script is really coming along nicely, good work!
As for stitching together terrains...it could work, but there is a good chance it will have overlap. That overlap wil still need to be cleaned by hand. I'd be interested in seeing a demo on that Gaieus if you get around to it.
Chris
-
@chris fullmer said:
This script is really coming along nicely, good work!
As for stitching together terrains...it could work, but there is a good chance it will have overlap. That overlap wil still need to be cleaned by hand. I'd be interested in seeing a demo on that Gaieus if you get around to it.
Chris
β¦I don't know exactly what GE terrains look like, but you could probably overlap them, and select all geometry of one of the terrains; then you could use Merge Points to Lines, probably using endpoints, with a small enough max radius. As for the messy parts, the Merge Points tool could probably help fix them up some.
I'm saying 'probably' a lot, because I've never done it, and, as I mentioned, I don't know what GE terrains' geometry look like.
-
Their geometry comes in very cleanly. But when you take lots of snapshots, the different terrains don't actually match up very well. So it is those interesections that most people want to clean up. This tool looks very promising for that!
Chris
-
β¦Anyways, If the above doesn't work, which I don't know when it comes to having more than 2 snapshots, I think I know a way to make a script that would work.
@unknownuser said:
Actually, I was thinking about something like this initially, before making the scripts. It would go through the entire selection, find which points were close to each-other, then move them together.
I didn't try it though, because I would imagine that it would be extremely slow, having to find the distance between every single point that's part of the selection.
If it turns out it runs faster than I'd expect, it would do this:
β’ setting the 'affect radius'
β’ taking the selected vertices and finding the distance between each one. If the distance between 2 points is smaller then the 'affect radius', and if it's smaller than the distance between the point and any other point, find the halfway point between the 2 points and move them both there. -
@chris fullmer said:
As for stitching together terrains...it could work, but there is a good chance it will have overlap. That overlap wil still need to be cleaned by hand. I'd be interested in seeing a demo on that Gaieus if you get around to it.
Yeah, I actually have a bigger area to cover and have been encouraging myself to get to work on it for weeks now. Maybe I'll give it a try and make some "progress report" on how it is going.
@unknownuser said:
I don't know what GE terrains' geometry look like.
Actually the case with GE is that it's streaming nicely but it's achieved by some good "level of detail" engine (both for the imagery and the terrain details) so if you want to grab a bigger area from (obviously) a bigger distance/height, the details are low therefore if you want to cover that area as detailed as possible, you have to go closer but then it means that you also have to pan aside, snapshot another one etc. and you end up with a bunch of pieces that need to be stitched together if you want something else than simply geolocating.
Otherwise it's just a regular TIN
Keep these ideas coming along and we'll also bug you with ours.
-
The script does not quite work for me like what is shown in the video.Perhaps I copied the wrong files to the Plugin directory?
From the ZIP folder I copied the two .rb's shown below:
-
Hi John, I think you just need to copy those 2 .rb files into your plugins folder. They don't need to be in the subfolder - unless I'm missing something. I'll edit that out if its wrong.
@BTM - The reason that the class variables are not working correctly (meaning they are not keeping their value during the entire SU session) is because you are declaring the variable in your activate method. So everytime the activate the tool gets activated, it resets the
@@max_weld_distance
variable back to0.0.to_l
.So what you want to do is declare that variable inside the class, outside of the methods. Like this:
class MergePoints @@max_weld_distance=0.0.to_l
I know it works, and I think that is the correct way to do it. it feels weird to have code not wrapped up in a method....
-
@chris fullmer said:
Hi John, I think you just need to copy those 2 .rb files into your plugins folder. They don't need to be in the subfolder - unless I'm missing something. I'll edit that out if its wrong.
Chris, you're right, they both go into the plugins folder.
@chris fullmer said:
@BTM - The reason that the class variables are not working correctly (meaning they are not keeping their value during the entire SU session) is because you are declaring the variable in your activate method. So everytime the activate the tool gets activated, it resets the
@@max_weld_distance
variable back to0.0.to_l
.I know that the variable needs to be outside of a method, but with things like
@@max_weld_distance=1.to_l if not @@max_weld_distance
it would call it an uninitialized variable, and give an error message.@chris fullmer said:
So what you want to do is declare that variable inside the class, outside of the methods. Like this:
class MergePoints @@max_weld_distance=0.0.to_l
It does work! I've been trying if functions, (so that if @@max_wld_distance doesn't have a value, it gets set to 0.0.to_l), but I kept getting error messages, and I guess that an if function isn't necessary.
-
OK,
I guess my original download of the two .rb's DID work. It was the UI that threw me off.
When I selected the Merge Points submenu option, I expected the Dialog box to appear, but none did.
1)
Only by accident did I discover I had to hit the [Enter] key to display it.Question, shouldn't the dialog appear as soon as you select Merge Points from the submenu?
Also, if that dialog or the Taskbar could include a message to "press [Enter] to change value" that would be helpful (if you don't use the script frequently, then it may take a bit of experimentation to use it properly )
2)
Regarding Merge Points to Line, it seems to do just the opposite. The dialog box appears when you first select it from the submenu, but you can't recall the dialog by pressing [Enter], you have to go back to the submenu. Can [Enter] be used to recall the appropriate dialog too?3)
Once used Undo doesn't work well. Is there a way to undo all changes performed between mouse-clicks at once? -
@jclements said:
OK,
I guess my original download of the two .rb's DID work. It was the UI that threw me off.
When I selected the Merge Points submenu option, I expected the Dialog box to appear, but none did.
1)
Only by accident did I discover I had to hit the [Enter] key to display it.Question, shouldn't the dialog appear as soon as you select Merge Points from the submenu?
Also, if that dialog or the Taskbar could include a message to "press [Enter] to change value" that would be helpful (if you don't use the script frequently, then it may take a bit of experimentation to use it properly )
2)
Regarding Merge Points to Line, it seems to do just the opposite. The dialog box appears when you first select it from the submenu, but you can't recall the dialog by pressing [Enter], you have to go back to the submenu. Can [Enter] be used to recall the appropriate dialog too?3)
Once used Undo doesn't work well. Is there a way to undo all changes performed between mouse-clicks at once?OK, I'll address some of these issues soon. I'm adding "Press Enter/ Return to set radius" in the status box for the Merge Points tool in the next release. As for the dialogue appearing as soon as you select the tool, I find it easier to use it like a normal tool with a radius, such as the smoove tool does. I want to get the VCB working later too, then it would save a lot of confusion, but that seems a bit tricky to do.
As for the 'Merge Points to Lines' tool, it affects the model upon activation, so I don't see why you'd need to open it again.
β¦Lastly, I think there's a method I could find somewheres that would make all the transformations into one action for undo, but I'm not sure. I'll look into it.
-
Here's a little video of me trying to use the 'Merge Points to Lines' tool to do some stitching with GE terrains.
http://www.screencast.com/t/s1SkJiUjH
It's 3 minutes long, because I kept changing styles, softening, etc., and I couldn't use my toolbar due to the size of the window.steps:
β’ explode, unhide and unsoften 2 snapshots from google earth.
β’ figure out what the max range for the tool should be. (I use line tool to see how much things would have to move, then make the max about 25% bigger than that, just in case.)
β’ completely select one of the meshes.
β’ use the 'Merge Points to Lines' tool.
β’ Select both meshes (because sketchup doesn't connect the points together automatically for some reason), and use intersect. Select the mesh, soften it, and fix any problem areas(there shouldn't be too many)
β’ Repeat these steps to add other snapshots to the previous mesh.
-
Thanks for this script. It will prove very handy.
-
Great script!
I just tested it and 2 things came up.
- I noticed that when I press undo after a point Merge operation it does not undo the entire procedure, rather breaks it down to individual line moves.
- I cannot get it to work if the geometry is in side a group.
If those 2 issue can be addressed this would one of the most useful scripts out there! Well deserve a custom button I think, hint hint CADFather
-
Oh yes one more thing. Would be great if you can add a CTLR modifier to make the new mesh smooth. Oh I am just been greedy now. Great job !
-
@chango70 said:
- I noticed that when I press undo after a point Merge operation it does not undo the entire procedure, rather breaks it down to individual line moves.
I've got this working properly now, and it will be fixed in the next release for the tools.
@chango70 said:
- I cannot get it to work if the geometry is inside a group.
I'll try to get that fixed too, but maybe not for the next release.
@chango70 said:
Would be great if you can add a CTLR modifier to make the new mesh smooth.
β¦I probably won't add this, but if I do decided to, it won't be anytime soon.
Also as a side note, I'm planning on adding a toolbar for them, and am trying to figure out how to add a subfolder and a loader script. I've got the toolbar working, but not with a subfolder or loader, and having the files just sitting in the plugins folder is a bit annoying.
-
-
-
@cadfather said:
:roll:
[attachment=1:cjv1mmue]<!-- ia1 -->pmerge_16.png<!-- ia1 -->[/attachment:cjv1mmue][attachment=0:cjv1mmue]<!-- ia0 -->pmerge_24.png<!-- ia0 -->[/attachment:cjv1mmue]
You da man!
-
@unknownuser said:
@chris fullmer said:
Hi John, I think you just need to copy those 2 .rb files into your plugins folder. They don't need to be in the subfolder - unless I'm missing something. I'll edit that out if its wrong.
Chris, you're right, they both go into the plugins folder.
@chris fullmer said:
@BTM - The reason that the class variables are not working correctly (meaning they are not keeping their value during the entire SU session) is because you are declaring the variable in your activate method. So everytime the activate the tool gets activated, it resets the
@@max_weld_distance
variable back to0.0.to_l
.I know that the variable needs to be outside of a method, but with things like
@@max_weld_distance=1.to_l if not @@max_weld_distance
it would call it an uninitialized variable, and give an error message.@chris fullmer said:
So what you want to do is declare that variable inside the class, outside of the methods. Like this:
class MergePoints @@max_weld_distance=0.0.to_l
It does work! I've been trying if functions, (so that if @@max_wld_distance doesn't have a value, it gets set to 0.0.to_l), but I kept getting error messages, and I guess that an if function isn't necessary.
Hey wow that would be great!
Advertisement