Model to pointCloud

Hi all,

First time here. I usually do visualizations so I tend to hang out over in the viz. section.. :)

How would I go about exporting our CAD design to a pointcloud for visualization purposes?

Thanks,
Torben

p.s. I made a thread over at viz also, but no one is biting: http://communities.bentley.com/products/microstation/microstation_visualization/f/19754/t/104011. Sorry for double posting, I promise to link the two threads once I get a solution.

 

  • Tiny update: I found a general idea that I will investigate further - in VBA, so not optimal. I can make everything into meshes. Meshes are triangles. Triangles are easy to interpolate for denser points... Just wish someone pro. had done this already. :)

    System: Win7 64bit 16GB Ram - microStation V8i SS3 08.11.09.578. + PoinTools CONNECT. - Intel i7-4800MQ CPU@2.70GHz, 4 core / 8 Logic proc.

  • Hi Torben,

    Unknown said:
    How would I go about exporting our CAD design to a pointcloud for visualization purposes?

    May I ask why? ... Well, I read your explanation in your parallel post.

    I am pretty sure there is no such functionality available in any Bentley product now and don't think it's something investigated for a future development.

    From a technical point of it can be done. But definitely not using VBA, it requires native code and a use of MicroStationAPI and/or MDL API. Your idea about meshing is probably right, but the overall task is quite huge: Not all object can be meshed, so you have to find a proper approach for different types of elements, in the next step to calculate points coordinates, interpolate a proper color for the point (which is not a color of the applied material at these coordinates) and add hte point to the point cloud file.

    There are things like lights, transparency etc. which I guess cannot be converted into point clouds.

    With regards,

      Jan

  • Hi Jan,

    Unknown said:
    May I ask why? ... Well, I read your explanation in your parallel post.

    As you read, It's all about production speed.

    I am into making informational movies on fairly large projects (100's of miles of infrastructure) and I get loads upon loads of finished 3d models from entreprenuers, entreprenerurs the designers, ready to use but fairly large. I also have access to highly detailed pointclouds of the surroundings.

    Rendering Hollywood style movies in microStation is - to my knowledge - not feasible at all. No rendering using external farms, and a render time of minutes pr. frame. Even with a super fast mediocre render setup I have been unable to get below 10 seconds/frame.

    With pointclouds I can export with around 1.2 seconds per frame! (Then I can do minutes of finished movie per workday! instead of seconds.) Also I suspect the pointcloud solution can be expanded to some sort of realtime visualization solution in the near future. I have not investigated this but I read about a Unity3D asset that handles about 65K points.. No al we need is a dynamic loading solution and voila, VR glory ahoy :)

    Unknown said:
    Not all object can be meshed, so you have to find a proper approach for different types of elements, in the next step to calculate points coordinates, interpolate a proper color for the point (which is not a color of the applied material at these coordinates) and add hte point to the point cloud file..

    I haven't seen a solid or shape that couldn't be turned into a mesh yet? Lines don't need to be mesh-ified obviously but they are really easy to turn into a pointcloud anyways. Just walk along and save a coordinate each 10cm or whatever.

    Getting a color from a texture should be fairly easy assuming I use something like a cubemapping or top down projection and depend solely on world coordinates. Shadows I have no idea on achieving (unless I actually code a shoot a load of random rays from each found point away from the surface to see if anything is blocking the sun), but I guess I could sort of light the points using the mesh normal and a spherical global illumination environment bitmap. I don't need very detailed lights I need this to blend with an existing pointcloud showing exterior only.

    I don't believe a working solution is that far off, IF someone decided to make it that is :)

    System: Win7 64bit 16GB Ram - microStation V8i SS3 08.11.09.578. + PoinTools CONNECT. - Intel i7-4800MQ CPU@2.70GHz, 4 core / 8 Logic proc.

  • Tiny update..

    I see what you mean about VBA and meshes. There is no API for meshes in microStation VBA!! (ノಠ益ಠ)ノ彡┻━┻
    It's not like meshes are the keystone to 3D modeling or anything?!....

    Sarcastic rant aside, using VBA I can actually convert a solid to a mesh using FacetSolidAsMesh, and get the list of vertices using the mdlwrapper mdlMesh_getVertices (inspired by this thread). And it runs fast as in instantly

    If only FacetSolidAsMesh would actually make each triangle side less than the maxEdgeLength parameter I would be home free, but ofcourse it doesn't.

    Now If I can just get the "face" list of the mesh to traverse?... :D

    Edit: After a few hours of random google I gave in and asked the good guys in the coding forum. Hopefully they'll be willing to whip up something good :)

    System: Win7 64bit 16GB Ram - microStation V8i SS3 08.11.09.578. + PoinTools CONNECT. - Intel i7-4800MQ CPU@2.70GHz, 4 core / 8 Logic proc.

  • Hi Torben,

    thanks for your explanation. I agree the speed is always crucial when an animation is produced. MicroStation cannot be compared with Hollywood style just because MicroStation is one product trying to fulfil different needs and requirements from a wide range of engineering disciplines. We will see if MODO 801 engine, which should be integrated in MicroStation CONNECT Edition, will bring higher speed.

    Unknown said:
    but I read about a Unity3D asset that handles about 65K points

    From my perspective 65K points is nothing. The smallest point cloud data I saw at my customers during last year had about 10 millions of points. But I am aware maybe it's not corect comparison, because what is required for analysis and vectorizing is probably much more dense than what is required for a visualization. BTW a nice example of a hybrid visualization (point clouds plus vector created from clouds is here, done in MicroStation + Pointclouds sw and some postproduction application).

    Unknown said:
    I haven't seen a solid or shape that couldn't be turned into a mesh yet? Lines don't need to be mesh-ified obviously but they are really easy to turn into a pointcloud anyways. Just walk along and save a coordinate each 10cm or whatever.

    It's probably true for your specific situation, but cannot be treated as a general truth. It's a problem of all of such discussions: To create an app for one particular user can be very simple, but to discuss the same topic on a general level often leads to a seriously complex solution, simply because all possible situations and requirements are treated in a background. It's the same for materials and lights.

    Unknown said:
    It's not like meshes are the keystone to 3D modeling or anything?!

    No, but VBA is not a tool to create 3D modeling applications. It's like to try to build a house using children equipment toy. I agree it would be nice to have an access to all MicroStation features from VBA, but apparently it's not a priority ... pretty hard work to map and implement all internal features to VBA COM interface when a lot of effort in last few years has been invested into enhancement of C++ and NET API comming in the next version of MicroStation.

    Unknown said:
    From your another but related post: I admit being a VBA hacker. I wish I had your skills for C++ and MDL.

    It's a kind of time wasting and will be even more after MicroStation CONNECT Edition will be released. If you know VBA, you should be able to enhance your skills and to master VB.NET. It's not a big win now, because NET addins are based on the same API as VBA, but will be huge change in the next version, where NET API is derived from C++, so it offers nearly the same functionality as primary MicroStation native C/C++ API.

    And at the end: I see three possible ways to a solution:

    • Try export your data to Pointools software as mentioned in another thread by Felix James. Contrary to MicroStation it's point clouds specialized application, so maybe it will offer a right tools for your.
    • As mentioned by Jon Summers in another thread, hire somebody who will implement it using proper API in C/C++. Despite of a general solution can be quite complex, what will be enough for you is maybe much more simple.
    • [Long and hard way] Move to VB.NET, try MicroStation CONNECT Edition and develop the solution by yourself.

    With regards,

      Jan