A Script to Skin a Point Cloud (for Blender 2.4x)


(Hans.P.G.) #1

(If you use Blender 2.6x or later, please use new Point Cloud Skinner v0.16 or later instead.)

What is Point Cloud Skinner first:
This is a Python script for Blender and allows you to create a surface from only a cloud of vertices. You can get a complete 3D mesh out of just vertices that have no faces.

Name:
Point Cloud Skinner v0.14

Download:
Point_Cloud_Skinner_v0_14_Pub20100110.zip

Main features:
This script, Point Cloud Skinner can skin a cloud of vertices, which means to create a 3D surfaced mesh out of just a cloud of vertices that has no faces. It can skin any shapes of point clouds, such as a surveyed geography point cloud that represents a landform somewhere, a fluid volumetric point cloud obtained by numerical fluid simulation, or anything you like. You can see sample meshes that the script produced in the part Results below.
http://2.bp.blogspot.com/_d4nbesSwQqc/SSqucgvXI1I/AAAAAAAAAt8/lycqmRwF7HE/s200/overview.jpg http://3.bp.blogspot.com/_d4nbesSwQqc/SVtGAhXzPMI/AAAAAAAAAus/9VcQSy52C4E/s200/PointCloudSkinner_Overview.jpg

Results:
You can see the results of using this script, which are point clouds before skinning (left) and the skinned 3D meshes from those point clouds (right).

These two examples below show how the script works for the type of point clouds which is the surveyed geography data like Digital Terrain Model (DTM).
http://1.bp.blogspot.com/_d4nbesSwQqc/SSquc-r1wPI/AAAAAAAAAuE/g10wHVOAR84/s400/geo_bf_to_af.jpg

http://2.bp.blogspot.com/_d4nbesSwQqc/SV7tfEwxuJI/AAAAAAAAAvE/P4qSQo_4i3o/s400/geo.png

These two examples below show how the script works for the type of point clouds which is the calculated fluid volumetric data.
http://4.bp.blogspot.com/_d4nbesSwQqc/SV7teg5NzeI/AAAAAAAAAu0/Y04FB4691fY/s400/fluid_vol1.png

http://2.bp.blogspot.com/_d4nbesSwQqc/SV7teyTmZVI/AAAAAAAAAu8/7vzVJSn08GU/s400/fluid_vol2.png

Video tutorial to start quickly
If you want to know how to use quickly, it would be the fastest way to see this video tutorial. [mirror video]

Start to use easily:
+1. Download the file “Point_Cloud_Skinner_v0_14_Pub20100110.zip” at here. Then unzip it and put the file “t19_PointCloudSkinner1_Umbrella.py” somewhere.
+2. Start Blender.
+3. Split the area and get window two-pane, and change Window Type from 3D View to Text Editor in the right window.
+4. Have a point cloud to skin. For example, select “Add >> Mesh >> IcoSphere” from the menu, set Radius to 1.5 in the displayed menu and click OK. You will get a sphere mesh. Then press the key Tab to change to Edit Mode and press the key X to display the menu Erase. Select Edges & Faces to delete all but vertices. You will get a point cloud of a sphere.
+5. Select “Text >> Open” from the menu and select the .py file that you downloaded at the step +1. The script code can be opened.
+6. Select “Text >> Run Python Script” from the menu. The script will start.
+7. Set the first parameter gb[“TargetMesh”] to the Mesh name that you want to skin, for example “Sphere”, which you created at the step +4. Be careful that it is NOT the Object name, but the Mesh name.
+8. Set the next parameters gb[“MaxAroundDist”] to 1.0, gb[“MaxDistForAxis”] to 2.0, and gb[“GridSize”] to 2.0 in this case. (The parameter gb[“MaxAroundDist”] should be set to the average distance between the closer vertices in your cloud, gb[“MaxDistForAxis”] should be set to two or three times larger value than that, and gb[“GridSize”] should be set to two to four times larger value.)
+9. Click the button Skin. The point cloud will get skinned and you will see an original 3D sphere.
http://2.bp.blogspot.com/_d4nbesSwQqc/SVs0-VnXU1I/AAAAAAAAAuc/FE5hDI8KWtk/s200/PointCloudSkinner_SetParam.jpg http://1.bp.blogspot.com/_d4nbesSwQqc/SVs0-ZDK2II/AAAAAAAAAuk/OVd2IeK8vHI/s400/PointCloudSkinner_Skinned.jpg

More video demos
If you want to see more about how it works on various point clouds, please check up the following video demos.
http://images.vimeo.com/21/80/93/218093731/218093731_100.jpg How the script skins the point clouds of a geography and fluid volumetric. [mirror video]
http://images.vimeo.com/23/14/90/231490449/231490449_100.jpg How the script skins the point clouds of a suzanne, one of the famous pre-defined mesh in Blender.
http://images.vimeo.com/23/44/29/234429758/234429758_100.jpg How the script skins the point clouds of all Clems data, a huge geography that has around 130,000 vertices.

More advanced usage
http://i2.ytimg.com/vi/Av89Ws--O9Q/default.jpgConnect two spheres of UVsphere and Icosphere using the script.

Requirements
I confirmed Point Cloud Skinner worked well on Blender v2.45-2.48.

Homepage for details
Please go to the homepage for more details.

Information:
the reason why I made the script, the list of change logs, the future works and more

Algorithm:
Explanation of how the script t15 skins point cloud

Settings:
Explanation of how to setup the parameters of the script t23

List of another notes and memos:
Notes and memos

Have fun! Please give me your opinions about this.


(marky1991) #2

Not to be rude or anything, but what do you use a point cloud for? And why do you need to skin it?? Just curious.


(rdo3) #3

lazer scans produce point clouds. they are very high rez and very accurate but they are just abunch of properly placed 3d points, nothing connection the points together to make edges which would be a wire frame then connection the edges to make a face so you end up with a mesh/model rather than just a bunch of points. alot of movie licensed games are having actors lazer scanned to put into their game, so there needs to be a way to turn the point cloud into a model.

and it can be used with motion tracking. motion track enough sceans from movies or tv, merge them to get a dense point cloud, then run this program to turn the motion tracking into a mesh model of the set, say seinfelds or friends apartments. for the older fols you could recreate mayberry or the gunsmoke town, gilligans island, etc… then you could creat the people and make new shows of your favorite cancled series, make a game, etc…

basically you would need it for the same reason you do in real live construction, to look at blueprints to see where the variouse points are, build a frame, then sheetrock it , only it’s digital and automated.


(marky1991) #4

OH! I was thinking that it was just in the shape of a sphere, I don’t know why. The script sounds way more useful now.


(Hans.P.G.) #5

Thanks for your kind explanation, rdo3. I’m sorry for taking a bad example of a sphere, marky1991. I’m going to change the screenshots to better one.


(Basil_Fawlty) #6

Hey, really cool. :smiley:

http://en.wikibooks.org/wiki/Blender_3D:_Noob_to_Pro/Match_Moving

http://www.digilab.uni-hannover.de/docs/manual.html

This is kind of exciting, actually. Thank you for introducing me to new ideas! :stuck_out_tongue:


(linuxpimp21) #7

seems like a cool script, I will have to play around with it.


(Eclectiel) #8

This looks very good, and seems very solid.

Would it be possible to make quads instead of tris out of the cloud?

I’m thinking a use of something like this for an auto-retopo tool for sculpted objects with millions of polys reduced to a cloud of vetexes on the surface (there is some work done on decimating objects: here), and then using a method like this to skin that cloud.

And together with something like this (which is already possible with the actual Blender shrinkwrap modifier and a script from Brecht):

No hurry, just saw a great potential on this script, more than the very nice results it already has.

Cheers!


(Syziph) #9

Great functionality brought to Blender!

I am aware of only of one free software that makes simillar mesh generation - MeshLab
So I did a comparison between both the script and MeshLab filter - “Build surface from points”
http://img12.imageshack.us/img12/134/tempzon.th.jpg
It seems MeshLab to be faster and creating more symmetrical mesh. Maybe its good idea to look at the source code of that filter if you haven’t already :slight_smile:


(Hans.P.G.) #10

Sorry for my late response. I forgot to subscribe.

Thank you, Basil_Fawlty and linuxpimp21. Have a fun!

Thank you, Eclectiel. It can only make triangular faces so far. However the combination of using the functionalities that Blender has would bring us some acceptable results, using Beautify Fill and Convert Triangles to Quads, but I don’t know whether that is enough for a low-poly character. Anyway, your idea of an auto-retopo tool is very interesting and it’s useful for lots of things. It might be better to use the tool MeshLab that Syziph provided to achieve your goal. I’ll also keep it up.

Thank you, Syziph. I’ve been searching for software that has the similar feature for years, so your information is really helpful for me! I’ve taken a look at the website that you kindly provided, and I thought it is really sophisticated enough. It uses the advanced library to deal with a mesh and the codes were written in C++, it must be fast. It seems to be too large to understand how they make it possible without some indications that show where to start to dive into their codes from, though…


(ilazarte) #11

Just found this off of Google, I’m dying to try it out. Thanks for the script!


(oblenob) #12

looks nice, it would be usefull if it could get the mesh of the selected object automatically rather than the user having to type in the mesh name, this would be a great speedup in use of the script.

Love the script, keep up the good work.


(Hans.P.G.) #13

Thank you for your comment, ilazarte. I’ll keep it up.

Thank you, oblenob. That is a good point. Actually, I’ve modified the interface of the script adding the feature like that. But I’m missing the chance to upload and post it here.
To upload is no sweat, meanwhile I have to rewrite the how-to-use in #1, which needs time as you can guess from my bad English… I’m going to try in weekends.


(cekuhnen) #14

oh amazing, this rocks.

perfect for polygon reconstruction!!!


(Hans.P.G.) #15

Thank you, cekuhnen. I’m going to add a new UI soon as oblenob mentioned.


(TylosaurusRex) #16

Hans, this is exactly the script we’ve been needing. A friend of mine has a set of data that needs to be meshed, and we thought we were going to have to do it by hand, one point at a time!

Just to complicate things, in our dataset, we have to mesh about 300 rocks that have location data on several points for each stone. Would it be possible to have another column in the Excel spreadsheet for “group” or something that could then be automatically meshed as separate objects when loaded into your script?

Again, this is an amazing script. I wonder, did you ever think when you first loaded it on the forums that it would end up becoming a point cloud skinner?!

-J


(BlueSpider) #17

I always wanted to be able to do this thank you for sharing. Hopefully I still have that script that generates a random cloud of points, and it works with the current version of blender.


(Abidos) #18

Nice script but I still have doubts if it works correctly with potential forms of a comb, for example… I.e. in cases where you have vertices close together but the correct solution is to connect with some other verts that are NOT so-that-obviously close… Have anyone tested this already? :spin:

I think, the script need a NICE interface which will calculate the re`uired parameters for the user and the script will NO longer rely on user perceptions on how great a certain parameter should be… Rather than this, develeper, please try to make this issue automatic. I guess this wont be so difficult as soon as you have a stable criteria :wink:

SUMMARY: A very useful script!!! :yes:


(mrjynx) #19

Can you try this anybody?

Create cube, remove faces etc to get points. create plane, use points as particles… create interesting particle shape made up of points… then skin that?


(Abidos) #20

Well, refering to my yesterday’s posting here, I’ve made a test with a simple comb…

Here is the test object:

http://www.geocities.com/elonsie/Blender/Comb_test_01.jpg

Here it is with faces and edges removed, i.e. only verts in place:

http://www.geocities.com/elonsie/Blender/Comb_test_02.jpg

And, finally, here is the result of the script applied in accordance with the instructions geven for parameters setup:

http://www.geocities.com/elonsie/Blender/Comb_test_03.jpg

I have tried the script with clouds representing a ball with small bumps and it works fine in THAT case… Nevertheless, some modifications and improvements are needed… Otherwise, a cloud of verts representing, say, a hand with all fingers, will never get re-built correctly by using this script.

Regards,