back to top

How to Create a 3D Model from Photos

A- A+
Related course: Wow Factor Photography

If you are looking to create a 3D model from photos, then we have the perfect article for you.
We will show you how to approach, photograph and create photogammetry from start to finish.
A large white house - 3d model created from photos

What Is 3D Modelling

Since the dawn of time, artists have been trying to replicate how we experience the world around. 3D printing and modeling is just another hurdle waiting to be jumped.
Now, with the advent of 3D printers, we are almost there. We just need to make the models to print. We call the process of turning a series of images into a 3D model photogammetry.
A 3D model is just that, a model with three dimensions. A photograph might have a height and a width, but it lacks depth. It is inherently unrealistic.
You can’t walk around a 2D model and see it from all sides. With 3D modeling you eliminate that boundary, allowing the viewer to see the item entirely.
Sophisticated computer programs help us create these plans, and have done for years. Engineers, designers, and architects have been using 3D modeling machines for years.
3D modeling is the next step in showing off your art. They also make great presents, and are just one step closer to creating a 3D jigsaw puzzle.
You can also use this technique to revisit locations you have been to. With your images, you can create a virtual world that you can ‘walk around in’ after the fact.
These might not be for 3D physical pieces, but the process is the same.
If you really loved the Eiffel Tower in Paris, you might want a realistic rendition on your mantle. With today’s technology, it is possible.
A moving gif of two 3d models of the Eiffel tower circling on a white background

Why Use 3D Modelling

Well, why not? The reasons range from creating very special memories from your travels to creating a 3D object from a photographed subject.
If you are an architectural photographer, an architect, or work in similar fields, there are benefits in creating a perfect rendition of an existing object.
Combining empty 3D spaces with CGI allows interior designers the chance to show possible setups. Even crime specialists use this process to enable the return to the scene digitally.
On top of this, product photographers use 3D modeling so viewers can see the item from every angle. This is important where sides may differ from the front.
Having something interactive makes it more accessible to those who see and use them. A product is harder to put down once picked up, 3D images and models bridge that gap between the digital ‘flat land’ and reality.
To create photogammetry, you first need to photograph a subject or item from all sides. If the final image is to be 360°, then it needs to be captured with the same field of view in mind.
Software such as Still from Motion (SfM) programs are needed to render the images into its final component. These are nothing new, as many professions have been using these for years.
They are new for photographers. They saw the benefit of having a space turned into a 3D piece. In our modern world, we now have access to 3D printers – we can own them and use them in our everyday lives.
One of the best examples of 3D modeling is the #NEWPALMYRA online community and data repository. They are attempting to reconstruct the ancient ruins of Palmyra through the same technique we are using.
Other projects, like these virtual rooms, have been completely rendered using 3D modeling software.
An impressive 3D model of columns outside a classical building created with photogammetry

Camera

Camera Equipment

You can use any camera for this, but you need to consider a few things. A DSLR such as Canon or Nikon will give you many settings, let you photograph in raw and will provide high-quality images.
For more information on why you should shoot in raw, see our Raw Vs. Jpeg article here.
I used the Canon 5D Mark III as it is full frame. If you would like more information on what full-frame means and what it does to your camera’s view, read our Full Frame vs. Crop article.
With this, I used the Canon 24-70mm lens. This was due to needing a wide angle, without huge amounts of distortion (found in ultra-wide angle lenses).
The only thing you need apart from these is a sturdy tripod. I used the Manfrotto MT055XPRO3 with the Manfrotto 327RC2 joystick ball head.
The tripod allowed me to shoot from head height (I am 6’2″) when fully extended.
The other benefit is, and it’s a detail, two of the legs were covered in rubber.
When you are out shooting in winter weather, your tripod is a cold magnet. This can become old fast, especially when you don’t have gloves (I hate shooting wearing gloves).
The rubber didn’t freeze my hands as the metal would have.
You can, of course, use a shutter release, camera gloves, and a bubble level, but I didn’t feel this was necessary.
For one, we aren’t shooting at very slow shutter speeds. Also, the camera already comes with a shutter timer and built-in spirit level.
A Manfrotto tripod on a white background - create 3d model from photos

Camera Settings

For the camera settings, the lowest ISO possible will prove you with the best quality images. As I had the tripod, I was able to shoot at ISO 100. This is the first thing I set my camera to.
Next, I set the aperture. I knew my depth of field had to be, at the minimum, mid-level. A shallow depth of field (wide aperture) would only place a small area of my subject in focus.
I didn’t need the entire scene in focus, so I didn’t need anything above the f/5.6 that I used.
Lastly, these two above settings gave me the shutter speed value. I kept this until last as it wasn’t important in our subject matter. If we were photographing moving objects, shutter speed might be one of the first settings to consider.
As we used the tripod, camera shake or slow shutter speed wasn’t a problem. The end value for what I was photographing came to around 1/100th of a second.
This might have been faster, but I also over-exposed the image by 1-stop.
By setting my EV to +1 exposure, I was ensuring my camera would light the statue enough for correct exposure. The day was overcast, and the surrounding location was covered in snow.
This would have pushed my automatic settings to darken the image to bring out the details in the light and highlight areas of the scene.
In overexposing the scene, I managed to retain the detail in the blacks and shadows. After all, the statue is my subject and the local area was not – it won’t be included in the final 3D model.
For these settings, I used Manual mode on the camera. This let me change any values I wanted without them affecting other settings.
I don’t see why you would want to use Aperture or Shutter Priority modes.
A close up shot of changing camera settings on manual mode - Photogammetry

Software

This is where we use software to create a 3D model from photos. First, we need to have our images saved as either Jpeg or Tiff formats. If you photographed using a raw format, then you need an image editor to convert them.
Now is a perfect time to change any part of the images. You want to do this before you upload them to the SfM (Structure from Motion) software. Be it adjusting the exposure or converting the images to black and white.
For the 3D modeling, we will use Agisoft Photoscan. You can download the free trial here, letting you use the software before spending $180.
But, be warned. The free trial doesn’t let you save or export your project. It’s a great way to see your 3D model take shape, but you can’t finish the project without activating the software.
Two alternatives to Agisoft Photoscan for photogrammetry are Regard3D and VisualSfM.
Regard3D is a structure-from-motion program, creating a 3D model from a series of photographs. This software works on Linux, Mac and Windows alike, and is absolutely free.
VisualSfM is another GUI application, resulting in 3D reconstructions using a series of images. This is also free for personal use, and also works on Linux, Mac and Windows platforms.
For creating meshes and cleaning your image, there are other options. AutoDesk Maya is a great alternative, and so is Mesh Mixer. Maya has a free trial, but Mesh Mixer is free.

Sceaux Castle - a 3d model created by Pierre Moulon
Sceaux Castle – Pierre Moulon

Example – Statue

For my example, I wanted to try something small to medium. My reasoning was that this was the first time I had tried this process.
I didn’t want to waste an epic amount of time photographing something really big to find out I had missed something.
This is why I tried to capture the Harry Hill Bandholtz statue, located in Freedom Square (Szabadság tér) in Budapest. It was small enough to capture in under one hundred images, and I could move around it 360°.
There were more benefits to this statue, which I found while photographing it. I will go into these later.
I also chose the statue as I wanted to stay clear of reflective or shiny surfaces. These subjects can play havoc with your final render, and will not show a true image in the final result.
When it came to the shoot, I wanted an overcast day. This ensures that the light is not harsh, and falls evenly on the subject.
If you do have to shoot on a bright day, go for the morning or evening. This will mean the sun isn’t directly above the subject.
Harry Hill Bandholtz statue in Freedom Square (Szabadság tér) in Budapest

Location

Choose your location carefully. Photographing a huge building or monument would cause many issues that would be overbearing to solve at the same time. Plus, see if you can hit the ball first before joining the big leagues.
By choosing something too big, you run the risk of not being able to fit the entire subject in your frame at the same time. You may also find you can’t move around it easily, or some areas might be off-limits.
On top of this, large structures need more and more images. Our process will need a lot of overlapping. Around 80%. So, shooting a large building might force you to be out for hours.
Not only is this frustrating and boring, but it might also be cold. The amount of natural light could change drastically.
My advice is to location scout first. Go out with your camera, and consider leaving your tripod behind. Find a subject and take some reference shots.
Can you expose the subject easily? Are there objects in-between you and your subject? Can you walk around the subject 360°?
If not, try something else. In theory, you don’t have to go out at all. You could find a large vase at home, for example, and use the same technique.
This way, you can practice all you want, and take the time over each shot. This will help later on when you do try it in the field.
Location scouting to choose a subject to create a 3D model from photos

Approach

So, you know about the settings, you know about the location and the equipment. How do we tackle the photographing? Well, we need to think about panorama imaging.
Panoramas are created by photographing a scene from many camera perspectives without actually moving.
You take a picture, move the camera along the same axis (horizontally or vertically) and photograph again. You repeat this process until you have captured the entire scene. It could cover a 360° field of view.
When you stitch these images together, you get one image showing the entire scene. This works very well when the field of views you are using overlap.
This allows the software to match the images correctly.
We are using the same process here. As I said before, we need an overlap of around 80%. Each new image we shoot needs to show 20% more of the scene than the last image.
This is why we are going to shoot in portrait orientation. This allows us to get the height of the subject in its entirety.
Next, for each step we place our camera and tripod, we need to take a mini-panorama. This will give us the length of the subject and will ensure the overlap.
So, we will move the camera, take three images and move the camera again.
A triptych of the same statue photographed from different angles to create photogammetry

Shooting

The three images will follow a simple process. The first will have the subject smack bang in the middle. The second, the subject will rest on the left rule-of-thirds intersection, and the third will rest on the right intersection.
This is where I saw the benefit of my subject choice. As I was photographing the statue of a man, I was able to use the head of the statue as a good reference point.
I kept his head above the uppermost rule-of-thirds grid line in all three images.
I was also able to place his head directly on the two intersections, meaning I kept his position constant and allowed me the same reference point each time I moved my camera.
As luck would have it, the distance I chose from the statue’s surrounding hedge kept me at a great distance. In each shot, the tripod was around one meter away.
This allowed me to capture the base of the statue perfectly, using all three camera angles.
This is something I should have thought about this, to begin with.
I started directly in front of the statue. The reason for this was to ensure the square base provided me with a flat reference point.
By using the rule-of-thirds grid on the camera’s Live View, I could line everything up, straight and flat.
The head lay in the middle of the shot, with the head above the uppermost grid line. I used the on-camera spirit level to ensure it was level.
If you are using a Canon DSLR, you can find this in Live View mode by pressing ‘info’ a few times.
Next, I turned the camera so the head sat on the upper-left grid intersection, using the spirit level. The third image was captured with the head on the upper-right intersection.
A triptych of the same statue seen through a viewfinder from different angles to create photogammetry
I changed my location by taking two medium steps right. This was about one meter from the last location, where I repeated the three steps above. I did this the entire way around the statue, which might have taken 30 minutes.
Below is a crude drawing showing how many images I took and from what angle. I took a total of 132 images from 44 different positions, covering the entire 360° view of the statue.
In each position, I took three images.
A diagram of taking photos to create photogammetry of a statue

Process

Step 1 – Install the Software
Go to the Agisoft Photoscan website and download the software. Install and run. If you are using the demo, click on Continue using Photoscan Professional in demo mode.
A screenshot showing how to create a 3d model from photos
Step 2 – Add and Align Images
Click on Workflow->Add Photos. Locate the folder where your Jpegs are stored. Next, select every image in the left-hand browser window. You can do this with Ctrl/Cmd + A.
Go back to Workflow->Align Photos. Set the accuracy to Highest and Generic Preselection to Disabled. Under Advanced, set the Key point limit to 100,000 and Tie point limit to 40,000.
Press Ok. This might take anywhere up to and over an hour, depending on the speed of your computer and the amount of images you are using.
A screenshot showing how to create a 3d model from photos

Troubleshooting

Problems With Automatic Camera Allocations

The first problem I had came from the camera allocation that Agisoft Photoscan uses as default.
When I first looked at the model, I was disappointed the statue wasn’t as sharp and as ‘full’ as I had hoped. The trees and surrounding objects appeared in the shot.
A screenshot showing how to create a 3d model from photos
This partly came from the software reading the wrong placement of between 6-8 camera angles. The program, I believe, had a problem placing the cameras correctly.
I tried to move these independently but instead chose to rename the files to something a little more coherent. The file names had the original names, given by the camera.
A screenshot showing how to create a 3d model from photos
After changing the file names and recreating the 3-D model, the program managed to place the cameras correctly. You can see the difference in the image below.
There are ways you can change the position of the cameras, but admittedly, I found it too complicated. This process worked for me, so I didn’t need to look any further.
A screenshot showing how to create a 3d model from photos
One way is to start again and try aligning the photos again. Add the photos, and then go to Workflow>Align Photos.
In the dialogue box under Pair Preselection, change it from Disabled to Generic.
That might do the trick. What happens is, the software spends more time thinking about your camera placements and where your images overlap.
And there’s that. You now know how to create a 3D model from photos.

Save this article to your Pinterest profile to access it later!

Leave a Reply

Your email address will not be published. Required fields are marked *

[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]