Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
Using Precise Real World Distances
Clone this wiki locally
Click the preview above for a brief video tutorial
Since version 3.8, ShootOFF supports displaying targets on the projector arena in precise real-world dimensions. This feature is called perspective projection; it allows you to scale a target to the appropriate size to mimic its physical counterpart at specified real-world distances. This is useful if you want to place a competition virtual target at its standard regulation distance (e.g. ISSF targets are typically 50 cm x 50 cm and appear at 10 m for handgun competitions) and have the virtual target appear as it would at that distance in real life. It can also be used by training exercises to make targets appear as if they are moving towards or away from you starting from their real-world size (e.g. launched sporting clays).
Requirements for perspective projection
Note: In ShootOFF 3.10, only a supported camera OR the paper pattern are required for real world distances. The camera distance is not necessary when using the paper pattern but IS NECESSARY when using a supported camera and no pattern. The following paragraph about requirements is relevant for ShootOFF 3.8 and 3.9 final only.
There are requirements that must be met for perspective projection to work, otherwise ShootOFF does not have enough information to calculate distances in the real world. Any two out of three of the following points are mandatory -- if just one is missing it will be automatically calculated -- if more than one is missing perspective projection will not work.
A camera that is supported by ShootOFF
The camera focal length, sensor width, and sensor height at the current camera input resolution are required. ShootOFF maintains a list of supported cameras. This information may be available online for other cameras, or can be derived through highly accurate calculation of the two other parameters. ShootOFF currently supports the following cameras and resolutions:
| Camera Name | Supported Resolutions | ------------- | ------------- | | Logitech c270 | 1280x720, 800x600, 640x480 | | Logitech c920 | 1280x720 | | Microsoft LifeCam HD-3000 | 640x480 |
Note that the default resolution for ShootOFF is 640x480, with the exception of the Logitech c920 at 1280x720. Any of these cameras should work with perspective projection without any configuration changes
The distance between the camera and the projection screen
This distance, if given by the user, must be accurate to within a few inches for precise perspective projection. The more accurate this measurement is, the more accurate the target sizes will be. A soft tape measure is recommended.
A paper perspective calibration pattern placed on the projection surface (e.g. screen) before arena calibration
Assuming at least one of the points above is known, ShootOFF can calculate the other point by detecting a perspective calibration pattern while auto-calibrating the arena. To meet this requirement, print out PerspectiveCalibrationPattern.pdf, which can be found in ShootOFF's targets directory, on a standard US Letter 8.5" x 11" piece of paper with 1/4" margins and place it in view of the camera but outside the projection area in landscape (as opposed to portrait). See the image below for an example of proper pattern placement. When detected, this paper gives ShootOFF a reference to a known size. We do not have an option for any other paper size, such as A4. If we receive enough requests for supporting A4, we will consider it.
(Note: Print the pattern in Adobe Acrobat or Reader by selecting "Actual size" in the print dialog. This will set the correct margins.)
The paper should be printed on non-glossy (matte) paper with non-glossy ink or toner. There must be enough light for the pattern to be clearly visible in the camera feed. This pattern only needs to be seen during ShootOFF auto-calibration. We recommend you always use the pattern as it will achieve more accurate results than manually measuring distances.
Using Perspective Projection
Some targets (e.g. IPSC, ISSF, and USPSA) contain default dimensions and distances. These targets will be automatically resized to their default size when placed on the projector arena after auto-calibration (assuming auto-calibration succeeded in initializing perspective projection with the points listed above). Any targets placed on the arena before auto-calibration will also be automatically resized to their default dimensions after auto-calibration completes.
To manually set a target's distance, select the target on the arena tab. This will open up a settings pane at the bottom of the main ShootOFF window as depicted below, unless perspective projection was not initialized correctly. If perspective projection was not initialized correctly you will get an error message telling you what to do. All data points are in millimeters and must be filled in.
The data points have the following meanings:
A. Shooter distance (mm) -- how far the shooter is from the projection (e.g. the wall, screen, etc. that the projector's image appears on). The shooter may move during the exercise, thus you may want to just set this to where the shooter starts.
B. Camera distance (mm) -- how far the camera is from the projection (e.g. the wall, screen, etc. that the projector's image appears on). Generally, you should not change this value unless the camera is moved, but even then we suggest you just recalibrate with the perspective pattern as shown above.
C. Target distance (mm) -- initially shows the current distance of the target from the shooter, but should be set to the distance you want the target to appear at. Assuming you auto-calibrated with the perspective pattern and are using targets with a default width, height, and distance, this is the only value you should typically need to change.
D. Target width (mm) -- the current real-world width of the target. Generally, you should not change this value unless it needs to be set because there is no default for the target being configured.
E. Target height (mm) -- the current real-world height of the target. Generally, you should not change this value unless it needs to be set because there is no default for the target being configured.