Chapter 21
Working with Point Clouds

The use of point clouds in the Autodesk® Revit® Architecture software is an excellent way to document existing building conditions accurately and quickly. The building can be easily scanned using light detection and ranging (LiDAR) technology to locate geographic information and extrapolate that into a means that is usable in a Revit model. This type of scan is used to cut down the time of a traditional survey while collecting more data about the site or building.

In this chapter, you’ll learn to:

  • Understand LiDAR
  • Plan for a LiDAR survey
  • Use a point cloud in a project

Understanding LiDAR

Many forms of 3D reality data capture are available that you can use to collect existing conditions of the built or natural world. Light detection and ranging (LiDAR) is a noncontact method of reality data capture that uses “light amplification by stimulated emission of radiation” (the definition of “laser”) to emit a self-generated laser pulse and collect the returned light in order to measure the distance, intensity, color, and location values of any surface it touches. The laser data is returned in an x, y, z location point. LiDAR sensors have the ability to collect these range points at a very rapid rate, which increases with every new piece of hardware released to the market. Color scans have become increasingly more affordable, allowing you to see the point cloud in a new level of detail. Figure 21.1 shows a processed point cloud exterior and section. In this project, the building was scanned while occupied, so you can see some of the occupants in the building section.

images images

Figure 21.1 A point cloud of a historic building exterior and section

LiDAR is a line-of-sight technology, meaning that it does not have the ability to penetrate through solid objects such as ceilings, walls, or people. This is an important point to understand when you are performing a laser scan. A good rule of thumb is that if you can see it with the naked eye, then the scanner will be able to capture it. You’ll also want to make sure your room or building is reasonably empty so you don’t end up with a bunch of people in your scans.

LiDAR as a technology has been around for several decades. However, only in the last decade has it become more accepted and widely used as a means of data collection. What was once reserved solely for the high-tech industry and early adopters who were willing to spend a lot of money to offer these services has now become more widely available. Because of the recent reduction in hardware costs and advances in software, LiDAR is now more accessible to projects than ever. For under $50,000, you can own and operate a top-of-the-line laser scanner. If you are ambitious and have an aptitude for software development, you can own and operate a structured light scanner for under $100.

Hardware

Not all LiDAR scanners are created equal, and it is important to keep in mind the project requirements to apply the right scanner to the project. A successful project relies on deploying the correct technology, and using the wrong scanner will put the project at risk of not meeting scope, schedules, and budgets. This section provides basic rules of thumb for using or procuring LiDAR for a project.

First, it’s important to understand the scanner itself. There are two types of scanners:

  • Time-of-flight scanner
  • Phase-shift scanner

The time-of-flight scanner measures the time it takes for the emitted laser pulse to be returned to the scanner. The properties that differentiate this type of scanner are as follows:

  • Slower collection rate (50,000 points per second)
  • Longer range (up to 1,000', or 300 m)
  • Lower resolution
  • Smaller data file sizes
  • Most effective in exterior applications, such as site collection, exterior building conditions, and especially for tall buildings

A phase-shift scanner measures the phase shift of the emitted laser compared to the light it receives when the pulse is bounced back to the scanner from the target. This type of scanner has the following properties:

  • Fast collection rate (1,000,000 points per second)
  • Shorter range (up to 65', or 20 m)
  • Higher resolution
  • Larger data file sizes
  • Most effective in short-range applications such as interior spaces and confined spaces
  • Can require more setups (or scan points) because of the range limitations

Benefits of LiDAR

Now that you have a better understanding of LiDAR as a technology, we can begin to discuss the benefits of using LiDAR and how to deploy it on your project. The benefits are simple to understand, but they cannot be overstated. The first benefit is the level of detail that can be achieved with a scanner. A significant amount of detail can be collected with a LiDAR scan. There is a trade-off to this benefit, however, in the direct correlation between the level of detail, or resolution achieved, and the time that it takes to collect the data. Most scanners have the ability to change the scan resolution in the field. If the project focus is an interior space with a high level of detail, it may be desirable to set the scanner to a higher resolution—similar to what you would do with a digital camera. If the project is of a broader scale—say, locating the exterior footprint of a building—a lower resolution will suffice, thus allowing you to expedite the scan time.

To add configuration to the time-versus-detail equation, a phase-shift scanner, set at its highest resolution, will still likely be faster than a time-of-flight scanner set at a lower resolution. The trade-off is that the phase-based scanner will require more setups to collect the area because of the limited range. We will discuss this topic in more detail later in this chapter.

Collecting Existing Conditions

Another benefit of LiDAR is data collection speed. Although almost unfair, it is still necessary to compare LiDAR to traditional survey methodology on the basis of the speed of data collection. A scanner can collect data thousands of times faster than traditional survey equipment and can provide a true-to-scale, three-dimensional representation of the existing conditions of the project area. It is true that if all the project requires is four corners of a building or room, then using a scanner is like using a sledgehammer for fine woodworking. However, if you are trying to understand a cluttered pipe gallery inside a pump room or stonework on a historic building, LiDAR is by far the better tool. It should never be said that LiDAR is a silver bullet or that it should be used on every job. We have been involved with projects that either used the wrong type of scanner or were not good candidates for LiDAR, and they resulted in negative outcomes.

As with most projects, safety is of paramount importance. This is one aspect of LiDAR that can be easily overlooked. LiDAR gives you the ability to measure objects without having to physically touch them, such as things that are out of reach, in a hazardous area, or in a confined space. In certain conditions or spaces, LiDAR can add a level of safety that is otherwise nonexistent. For example, with LiDAR you can measure electrical equipment that is not safe to touch, or you can collect information above a drop ceiling or in other confined areas. You can also collect information in busy and congested areas without needing to enter those areas—for example, a building that is under construction or a building that might be structurally failing and is not safe to enter.

When used correctly, LiDAR scanners are accurate and can collect information about building features to within millimeters of their actual position. It is not because LiDAR is more accurate than other reality data-capture technologies, but rather that you have the ability to collect high-resolution, spatially accurate data about the entire environment of a site or building. It becomes about the ability to accurately locate things that were typically not located with high accuracy in the past, like window and door openings, mechanical fixtures, and external building detail. Again, it is not the overall accuracy that is valuable. Even if you did locate the things like architectural detailing with a traditional survey, it was typically not spatially correct to the rest of the building. Now imagine that you could have all of the internal and external building openings located and shown together in the same model and then throw in the architectural detailing and the building facades. That would be a complete and accurate picture of the existing conditions of a building, and that is exactly what you get with LiDAR.

There are two forms of accuracy when talking about LiDAR: relative and absolute. Relative accuracy refers to the position of each x, y, z point in space and its location to all other x, y, z points in that same space. Absolute accuracy is concerned with the real-world position of those x, y, z points (northings, eastings, and elevation). It is important to be aware of the absolute accuracy of the point cloud if you are trying to position something on a site that has to be specifically located. In most architectural applications, relative accuracy is of more interest than absolute accuracy.

Imagine combining the clarity of a digital camera with the accuracy of a survey measurement device. Actually, you don’t have to imagine this because this is essentially what a laser scanner provides. When you combine these two things, you have a representation of the existing world that will give you the ability to visualize things that have not been possible in the past. In this section, we’ll discuss a series of illustrations demonstrating common uses for LiDAR scans.

One of the most common uses for LiDAR scans is documenting as-built conditions of existing facilities. Figure 21.2 shows an axonometric section of an industrial building. You can see the point cloud (all the small dots) overlaid against the building itself (the Revit objects). Notice as well the small, yellow cylinders on tripods. There are seven of them within this view. Those represent each of the survey points for the laser-scanning equipment. Since creating point clouds is a line-of-sight technology, the complexity of the building comes into play when establishing locations for survey points.

images

Figure 21.2 Creating as-built drawings. The black-and-white scan data in the background is represented as a granular series of points.

The next obvious step past the 3D model elements is creating 2D documentation. In Figure 21.3 you can see the point cloud for an industrial plant and all of the complex piping that runs through it. This isn’t a photograph—it’s actually the image derived from the points within the scan. This image was overlaid into Revit to create the piping layout next to it. Imagine the amount of time it would take to measure and verify all this information in the field. With the LiDAR scan, it’s all right there in 3D.

images images

Figure 21.3 A LiDAR image and the 3D model derived from it

Another common use of LiDAR in the modeling environment is to verify existing conditions that you might already have modeled. Even if you had as-built drawings of an existing building, they might not reflect the changes that could have occurred over the life of the building or be accurate to the degree you need for the upcoming project. Even as the contracting world has greatly advanced to embrace building information modeling (BIM) and on-site coordination, not everything gets placed where it was drawn (for various reasons). But more and more owners are asking for as-built models at the end of the construction process. What has changed or what was omitted from the model or construction? By overlaying the model with the scan, you can visually compare the two, as shown in Figure 21.4.

images

Figure 21.4 Comparing existing conditions to model elements

LiDAR can also show you variation to a very fine degree within the scan data in existing buildings. This can be floors that have variation in the slab, walls that aren’t plumb, slope in joists, and so on. In Figure 21.5, you can see a LiDAR scan that is using a heat map of a floor slab. The warmer colors are closer; the cooler ones are farther away. You can see the variation in the floor slab. By scanning the floor, we were able to tell that over a couple hundred feet we had almost 3" of variation over the floor. In this project, the point cloud was used to calculate the amount of floor leveler needed to bring the floor to a flat, level plane and explain that cost to the client.

images

Figure 21.5 LiDAR shown as a heat map for floor deflection

Planning for a LiDAR Survey

Several factors come into play when you are trying to plan a laser scan. Planning is an important part of the process. If planning is done poorly, your scan data will be insufficient (or overzealous), leading to problems when you need to migrate the point cloud into Revit elements. It’s important to have an understanding of the scan-planning process so that you are able to communicate the project requirements to the service provider. In this section, we’ll discuss the basics of preparing for a scan, what to look for, and how to plan for a scan in your facility.

Exterior or Interior

Knowing whether you need an exterior or interior scan is important because it will largely determine the type of scanning equipment you should use. If your project is exterior in scope and/or requires you to collect information that is more than 80' (24 m) away from the scanner, you will want to use or hire a time-of-flight scanner. If your project is an interior space that is limited to shorter lines of sight, you will want to use a phase-shift scanner because of the high-speed data-collection capabilities at short range.

Level of Detail

This is typically the most difficult factor to determine. This is also one of the largest cost drivers for a LiDAR project, and if it’s misunderstood or specified incorrectly, there is a risk that the scan won’t meet your needs. Not planning for enough detail might lead you to scan again, while planning for too much detail will result in receiving way too many points, huge files, and unwieldy point clouds.

There are two levels of detail in LiDAR project delivery:

Point Cloud Level of Detail  This will affect the amount of field collection time. A higher level of detail = more field time = higher cost.

Level of Detail of the Derivatives  What is the smallest scale of things you’ll want in the scan? This will affect the amount of office processing and modeling time and typically refers to the lowest level of modeling detail. An example would be specifying scanning all pipes greater than or equal to 6" (150 mm) diameter. Again, a higher level of detail = more modeling time = higher cost.

You must have a good grasp of your project needs when planning for LiDAR data collection and modeling so that you can convey the requirements to those conducting the scan. Unclear direction to a service provider can result in enormous blows to schedule and budget. For example, if you call a LiDAR service provider and say, “I need to have LiDAR collected on my project and I need it delivered as a 3D as-built model,” that can mean many different things. You need to take the time to clearly specify the project requirements so that the provider doesn’t spend two months modeling an entire building when you needed only the door and window openings.

Imagery and Color

Some scanners have built-in digital cameras that take panoramic photos and stitch them together. The colors from the photos can then be draped onto the point clouds to give them a “true-color” appearance. Some scanners do not have a built-in camera and will deliver a point cloud in black-and-white pixels. This requires the service provider to collect the imagery manually and postprocess it in order to drape it to the point cloud if color is desired. Figure 21.6 shows the possible difference with the same image. The image on the left is a color scan, whereas the image on the right is devoid of color. Depending on what you need to get out of the scan, one will be better than the other.

images images

Figure 21.6 A color point cloud and a black-and-white point cloud

Schedule

When trying to set your scanning schedule, the trick is to manage your LiDAR delivery expectations with the level of detail that is required. In other words, if the delivery is simply a geo-referenced point cloud, it can be delivered shortly after field collection. If the delivery calls for a 3D model of the entire building, including the architectural, structural, mechanical, electrical, and plumbing components, then it is going to take a while longer to create.

You must also take into account the requirements of the building or facility you’re planning to scan. Are there security requirements? Does the building need to remain operational during the day, which means the scanning needs to be done at night? A host of issues will need to be coordinated with the building owner to ensure that the scanning can happen in a way that will meet all the requirements.

Once you have answered these questions, it is a good time to map out the scanner locations on the site to ensure proper coverage. This is also a good tool for estimating field time and cost. The best way to do this is to use any existing drawings that are available to map out circles that represent the scanner locations. For example, if it is an interior scan, you can use an existing floor plan to plot out the circles. You will most likely be using a phase-based scanner with an effective range of 60' (18 m). You can scale and plot 60' (18 m) diameter circles on the floor plan to look at the coverage, remembering that you’ll need line of sight for each of the circles. So if you are scanning an office space and you have an enclosed conference room, it will need to be set up as another scan point even if it falls within another 60' (18 m) circle. Once you have covered the area on paper, you will know how many scan setups you will need. From there it becomes simple math to get a rough estimate of the necessary field time. The following formula is a good rule of thumb to get a rough estimate of time:

Scan points (or circles) × 20 minutes per location = approximate time

Using the Scan in a Project

Once your LiDAR scan is complete and processed by the scanner, you will have a point cloud to use. This point cloud is literally just that—millions of small points geolocated in a three-dimensional field. Finally, with a point cloud in hand, you can begin creating Revit objects around it and generating the building form. Point cloud importing became available with the release of Revit Architecture 2012, and you are allowed to import several raw formats of point cloud data. This list includes 3DD, ASC, CL3, CLR, E57, FLS, FWS, IXF, LAS, PTG, PTS, PTX, XYB, and XYZ. If you’re having a scan performed on your building, you’ll want to ensure that the point cloud you receive from the scanner will be one of those file types. Figure 21.7 shows the dialog box for importing native point cloud files.

images

Figure 21.7 Importing the point cloud data

Once you receive the point cloud files from the scanner, the next step is to get them loaded into your Revit model. For the following exercise, we’re going to use an example point cloud scan of the lighthouse at Fort Gratiot. The lighthouse was the first in the state of Michigan; built in 1829, it marks the entrance to the St. Clair River from Lake Huron. The point cloud was generously donated for use in this book by Midwestern Consulting, who performed the LiDAR scan and created the point cloud (www.midwesternconsulting.com).

images

You can download the finished file from the book’s web page, www.sybex.com/go/masteringrevitarch2016. It’s in the Chapter 21 folder and it’s named c21_PointClouds_Start.rvt. The point cloud is a reference file and will need to be downloaded separately. The file is called Fort Gratiot Lighthouse.rcs. Due to the large size of point cloud files (this RCS file is 2.7 GB), we have provided only the compressed, indexed point cloud and not the original, unindexed file. We’ll discuss the differences between the compressed and uncompressed point cloud files in the next section.

Getting Started with a Point Cloud

To begin using a point cloud that you’ve just received from a scanner, you’ll need to insert the file into Revit. The first time you load one of these files into Revit, Revit will need to convert your scan file to an RCS file type. This is an Autodesk proprietary file type that will compress the original scan and optimize it for use in Revit. Converting this file will create a new file on your system, taking up more drive space (plan ahead!). The processing for converting this file can take some time based on your processor speed and the I/O speed of your hard drive, so be patient. It has to happen only once, but it will be once for every scan point you import.

inline    One recommendation for ease of use within the model is to import the point cloud data files into a separate Revit file and then link the new file into your main model. This will keep the main model from being weighed down by all the point cloud files. Another option would be to place the linked file in its own workset to simplify turning the inserted point clouds on or off. No one wants to manually turn on or off a hundred linked files!

To get started, open the default Architectural template in Revit and select the Insert tab. From the Link panel, choose the Point Cloud button. Choosing this button will open the Link Point Cloud dialog box (Figure 21.7). You’ll have the same options for positioning the point cloud that you do when linking in other Revit files—namely to link via center to center, origin to origin, or shared coordinates. Regardless of the method you choose, make sure you remember it. Your LiDAR scan will consist of a file for every scan point—which can be hundreds of scan points depending on your building. You’ll want to link them each in the same way so they all co-locate properly.

Select the Files Of Type drop-down and choose the Raw Formats option. This will allow you to select the file you’ve received from the scanner. Choosing the raw file will convert the point cloud files to an RCS format by using the Insert Point Cloud tool. Once you select the file, you will be asked if you’d like to index the file. This process can be very time consuming, so be patient (Figure 21.8). It is also possible to batch-convert these files with this utility.

images

Figure 21.8 Converting the point cloud files

Revit 2016 contains a Point Cloud File Indexing utility that will compress the point cloud into a format usable by Revit. It can index one or more point clouds into RCS files. Once you select the native file from your scanner and agree to index the file, you’ll see the Point Cloud File Indexing dialog box (Figure 21.9). Click the Start Indexing button to begin the process. Once you’ve started, Revit will give you a countdown until the file(s) are done. While this is happening, you can continue to work on other tasks within Revit. The default location for the indexed file is the same location as the original file. The new files are a bit more than half the size of the original, so make sure your drive has enough space before you begin indexing.

images

Figure 21.9 Indexing the point cloud to an RCS file

Once your file indexing is complete, you’ll need to insert your new RCS file into Revit. To do this, choose the Point Cloud button again, and in the Link Point Cloud dialog box, click the Files Of Type drop-down again. This time select Point Clouds (*.rcs) and browse to your newly created file (Figure 21.10). You have the option to insert this RCS file as you would any other linked Revit or CAD file. In our case, we chose Origin To Origin. Note that this is also the file we’ve provided as part of the download for this chapter.

images

Figure 21.10 Inserting the point cloud into a blank Revit template

Your inserted point cloud file is a black-and-white point cloud. The inserted file looks like Figure 21.11.

images

Figure 21.11 The inserted point cloud

One of the great things about point clouds is that they can be cut and manipulated like Revit geometry to some extent. You can cut plans, sections, or any other view type of the point cloud to help isolate the view to get a better understanding of the objects in the point cloud (Figure 21.12). There’s also a significant amount of detail within the point cloud. You probably can’t see it here in printed form, but if you view this RCS file, you’ll be able to see the individual bricks that make up the lighthouse.

images images

Figure 21.12 Plan and section of the point cloud

In most cases, you’re going to be working with more than one point cloud file, and you’ll want to insert multiple point clouds into your Revit file. Once you’ve inserted your first point cloud, you’ll notice that your options have changed slightly in the Point Cloud dialog box. After you import the first RCS file, a new option is available in the Link Point Cloud dialog box. When you go to insert the second or nth point cloud, the Positioning drop-down menu will give you the option to place the rest of your files from the origin to the last-placed point cloud (Figure 21.13). This will allow the point clouds to insert relative to one another. If you choose to split the point cloud Revit model into multiple Revit files, keep the last RCS file imported to use in the other files for the Origin To Last Placed option.

images

Figure 21.13 Using the Positioning drop-down menu in the Link Point Cloud dialog box

If a building model has already been started in a separate file (for example, an as-built model that you’re verifying with the laser scan), we recommend that you align the first point cloud you’ve inserted by linking this point cloud Revit file into your building model Revit file. The best way to align the point cloud and building model is to find a good location where the building geometry is well defined and the point cloud is clear. Ideally this will occur at a wall, floor, or other piece of static geometry that is shared between your model and the point cloud. This essentially becomes your 0,0 point for the model and cloud relationship.

If visibility within your view is problematic, you can limit the view range or apply a scope box. This will allow you to limit the number of points within the view to get a decent reading; otherwise, too many points can get unclear and overwhelming (Figure 21.14).

images

Figure 21.14 Use a scope box to limit the point cloud.

Modeling with a Point Cloud

Back to our model and working with the point cloud. So far, we’ve contacted a laser scanner provider, gotten a scan performed, and collected the scan data. Revit has processed the native point cloud file into an RCS file, and we’ve inserted that into our model. What we need to do next is begin creating the model content.

We’re going to start creating this content with the keeper’s quarters, the small building attached to the base of the Revit model. To effectively work on this part of the building, you need to isolate this portion of the point cloud from the tower. As we’ve mentioned, this is to keep the model reacting quickly to your commands.

  1. Start by duplicating Level 1 in the Project Browser. To do this, right-click Level 1 and choose Duplicate View ➢ Duplicate from the context menu. Right-click the newly created Copy of Level 1 and choose Rename from the context menu. Name your new level Level 1 – Keeper’s Quarters.
  2. In the view you just created, open the Properties palette and check the boxes for Crop View and Crop View Visible. This will turn on the crop region around the point cloud. We’re looking to isolate the keeper’s quarters, so drag in the edges of the point cloud until you can isolate the house on the left of the tower (Figure 21.15).

  3. From the site visit and what we can see in the point cloud, we know the lighthouse and keeper’s quarters are solid brick in structure. The keeper’s quarters is a one-story brick building with a plaster finish coat on the interior. The building is historic and won’t fit within the context of modern construction practices, so we’ll need to do a bit of measuring. Zooming in on the upper-right corner of the view, we can use the Measure tool to figure out the average thickness of the wall (Figure 21.16). Based on taking some sample measurements, we’re going to assume an average width of 4 ½" (115 mm).
  4. Because this is a nonstandard wall type, we probably won’t have this wall as part of our office standard template. We’ll need to create the wall type so we can begin to create the wall. Since we are documenting existing conditions, we’re going to use a rather generic wall type. From the Architecture tab, choose the Wall tool. Choose Basic Wall Generic 8" (Basic Wall – 200 mm) as a starting point for your new wall. From the Properties palette, select Edit Type. Duplicate this new wall and name it Generic – 4 1/2" (Generic 115 mm) and click OK. Still in the Type Properties dialog box, click the Edit button for the wall structure. Change the wall thickness to 4 1/2" (115 mm) and click OK to exit the dialog boxes (Figure 21.17).
  5. With the wall type created, you’re ready to begin drawing walls. Using the point cloud as a background, trace over the wall locations. You’ll notice as you’re doing this that the walls of the keeper’s quarters are not necessarily square and straight (Figure 21.18). You’ll need to use your best judgment to place and locate the walls relative to the laser scan. As you do more and more modeling against laser scans, you’ll find that this condition exists, especially in older structures. Your tolerances for accuracy will be impacted by how true the building is that you’re modeling against.
  6. The workflow for the rest of this building is similar to the plan conditions. We’ve duplicated the South, North, and West elevations, cropping the views down to only the keeper’s quarters. As you step through each of these views, you’ll need to create families and objects within Revit to mimic the conditions of the existing building. As an example, in our plan we had to measure and re-create the exterior walls. In the elevations, you’ll need to create the doors, windows, and roof conditions (Figure 21.19).
images

Figure 21.15 Cropping the keeper’s quarters

images

Figure 21.16 Analyzing the wall thickness

images

Figure 21.17 Creating the wall type

images

Figure 21.18 Working with untrue existing building conditions

images

Figure 21.19 Modeling the other building components

 

Obviously, depending on how standard your building is, this process can take some time. Be patient working your way around the building and be sure to document the conditions. As you go, you’ll discover workflows that will help you become more efficient with your processes.

images

Manipulating a Point Cloud

What if you want to modify parts of the point cloud? Say your scan of a building was taken while it was occupied and you’d like to remove the people, as in Figure 21.1. Or suppose you had an interior scan and you’d like to remove some of the furniture in the scan. The Autodesk® ReCap™ tool allows you to easily manipulate point cloud data and remove unneeded scan content. The application will create the same RCS file that Revit will, and the files are usable between applications. So, scans you manipulate in ReCap can then be inserted into Revit and used for your project. ReCap has some additional tools that allow you to run basic analysis against the model, such as elevation changes (Figure 21.20), scan point locations, and point intensity. You can find out more about ReCap at www.autodesk.com/products/recap/overview.

images

Figure 21.20 The lighthouse point cloud in ReCap showing the building elevations

The Bottom Line

Understand how to create a point cloud.  Point clouds are created with laser-scanning equipment typically by a surveyor or other LiDAR provider. Understanding the processes behind creating point clouds is critical to being able to plan a scan for your project.

Master It  What are the two types of LiDAR scanners and how do they differ?

Plan for a scan.  Planning a point cloud scan is an important part of the process. This will help ensure that you collect all the information that you need inside the building and don’t have to repeat the scan because something was overlooked.

Master It  What are the key elements to planning a LiDAR scan?

Work with the point cloud in Revit.  Once you import the point cloud into Revit, you can begin modeling. Understanding how to use that data in the model will keep your project moving efficiently and your frustration at a minimum.

Master It  List some of the ways you can optimize point cloud performance in Revit.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset