choose 1.0 for full frame DSLR/film cameras irrespective of camera maker
choose 1.3 for Canon 1D series
choose 1.5 for Nikon crop cameras like D40 etc
choose 1.6 for Canon Rebel series
choose 1.8 for Sigma SD14 series
choose 2.0 for 4/3 and micro 4/3 system
Note that if you use any point and shoot camera, use the crop factor of 1.0 and its 35mm equivalent focal length. For example, Canon A590 has 140mm (35mm equivalent) at tele end. So use crop factor of 1.0 and focal length of 140mm.
Sensor Size
56.0X41.5 Phase One 645 AF
56.0X36.0 Aptus-II 10, Leaf AFi-II 10
53.9X40.4 Phase One P65+
49.1X36.8 Phase One P45, Phase One P45+
48.9X36.7 Phase One H25, Phase One P25, Phase One P25+
48.0X36.0 Aptus 75S, Aptus 54S, Aptus 75, Aptus 22, Aptus-II 7, Lead AFi-II 7, Mamiya ZD
44.0X33.0 Aptus 65S, Aptus 65, Aptus-II 6, Leaf AFi-II 6
44.2X33.1 Phase One P21, Phase One P30, Phase One P30+, Phase One P21+
43.9X32.9 Phase One P40+
43.2X31.7 Aptus 17
36.9X36.9 Phase One H20, Phase One P20, Phase One P20+
36.9X24.6 Phase One H101, H10
<tooltip>
Source:
Format: 35mm (1.6 Crop, 3:2 Aspect Ratio, Portrait orientation)
Focal Length: 150mm lens, overlap: 25%, Horizontal FOV: 4.3, Vertical FOV: 7.1
Rows: 3, Columns: 14
Target:
Format: 6X17(Landscape orientation)
Focal Length: 150mm lens, Horizontal FOV: 58.5, Vertical FOV: 21.1
Horizontal Size: 29382, Vertical Size: 9794
Mosaic Horizontal FOV: 62.3, Vertical FOV: 22.7
Mosaic Horizontal Size: 31025, Vertical Size: 11305
</tooltip>
<!--
! This program is to generate preset for the Papywizard
! program. This program can be used for commercial and/or
! non-commercial use for free.
!
! Author: Jones Henry Subbiah (C) 2009.
!
! Disclaimer: The user assumes the responsibility of any
! any demage using the preset. The author is not responsible
! for anything.
!
! The preset generated assumes top-left corner of the pano
! is the home position that is yaw = 0, and pitch = 0. The
! name of the preset will be sourceformat_focallength_targetformat_focallength_rows_columns
!
! History of changes:
! ====================
! 0.1 Initial public version
! 0.2 Fixed a bug in yaw_skip_pos, pitch_skip_pos
! (affected only when Portrait as source orientation)
! 0.3 Added history of changes
! 0.4 Rearranged the columns
! 0.5 Made target labels bold
! 0.6 Added medium format digital camera/back to the source system
! 0.7 Added 1:1 apect ratio for medium format digital camera/back
!
-->
<html>
<head>
<title>Papywizard Multi Format Preset Generator</title>
<script language="Javascript">
var OPTIMUM_DEGREES = 10.0;
var DEBUG = false;
var pval = "";
/*
* This function appends the message to the text box.
*/
function write ( message )
{
pval += message + "\n";
}
/*
* This function appends debug messages to the text box.
*/
function debug ( message )
{
if ( DEBUG )
write ( message );
}
/*
* This function calculates the angular field of view.
*/
function calculate_fov ( frame_length, focal_length )
{
return ( 2 * Math.atan ( frame_length / ( 2 * focal_length ) ) * 180 / Math.PI );
}
function validate_input()
{
if ( isNaN ( parseFloat ( document.main.fl.value ) ) )
{
alert ( "Enter a valid focal length" );
document.main.fl.focus();
return false;
}
if ( isNaN ( parseInt ( document.main.tfl.value ) ) )
{
alert ( "Enter a valid target focal length" );
document.main.tfl.focus();
return false;
}
if ( isNaN ( parseInt ( document.main.wip.value ) ) )
{
alert ( "Enter a valid pixel width number" );
document.main.wip.focus();
return false;
}
if ( isNaN ( parseInt ( document.main.hip.value ) ) )
{
alert ( "Enter a valid pixel width number" );
document.main.hip.focus();
return false;
}
return true;
}
/*
* This function rounds a number to a single decimal precision.
* The trick to is to add 0.05 to the number and truncate at the first
* decimal position.
*/
function round21 ( number )
{
nnum = number + 0.05;
nums = nnum.toString();
numa = nums.split('.');
return ( numa[0] + '.' + numa[1].charAt(0) );
}
/*
* This function finds the number of yaw positions to skip.
*/
function yaw_skip_pos ( hfov, vfov )
{
var yaw = 0.0;
var ydiff = 0;
while ( 1 )
{
yaw += hfov;
if ( yaw > OPTIMUM_DEGREES )
{
break;
}
ydiff++;
}
debug ( "ydiff: " + ydiff );
if ( ydiff < 1 )
ydiff = 1;
debug ( "ydiff: " + ydiff );
return ( ydiff );
}
/*
* This function finds the number of pitch positions to skip.
*/
function pitch_skip_pos ( hfov, vfov )
{
var pitch = 0.0;
var pdiff = 0;
while ( 1 )
{
pitch += vfov;
if ( pitch > OPTIMUM_DEGREES )
{
break;
}
pdiff++;
}
debug ( "pdiff: " + pdiff );
if ( pdiff < 1 )
pdiff = 1;
debug ( "pdiff: " + pdiff );
return ( pdiff );
}
/*
* This function initializes all the position of the pano.
* The position is of the form "row,col,pitch,yaw".
* Each position of the pano is represented here in the String array.
*/
function initialize_positions ( hfov, vfov, prows, pcols )
{
var pos = new Array ( prows * pcols );
var yaw = 0.0;
var pitch = 0.0;
for ( ctr1 = 0; ctr1 < prows; ctr1++ )
{
for ( ctr2 = 0; ctr2 < pcols; ctr2++ )
{
pos[ctr1 * pcols + ctr2] = ( ctr1 + 1 ) + "," + ( ctr2 + 1 ) + "," + round21 ( pitch, 1 ) + "," + round21 ( yaw, 1 );
yaw += hfov;
}
pitch += vfov;
yaw = 0;
}
for ( ctr1 = 0; ctr1 < pos.length; ctr1++ )
{
debug ( "pos[" + ctr1 + "]: " + pos[ctr1] );
}
return ( pos );
}
/*
* This function initializes the row, paired row values.
* The array index is the row number and the array value is the paired row number.
*/
function initialize_rows ( prows )
{
var prs = new Array ( prows );
for ( ctr1 = 0; ctr1 < prows; ctr1++ )
{
prs[ctr1] = -1;
debug ( "prs[" + ctr1 + "]: " + prs[ctr1] );
}
return ( prs );
}
/*
* This function finds the row used already as a paired row.
*/
function find_paired_row ( prs, prow )
{
for ( var ctr = 0; ctr < prs.length; ctr++ )
{
if ( prs[ctr] == prow )
{
return ( ctr );
}
}
return ( -1 );
}
/*
* This function finds the row and its corresponding paired row.
*/
function calculate_paired_row ( prs, pdiff )
{
var prows = prs.length;
for ( var ctr = 0; ctr < prows; ctr++ )
{
if ( ctr + pdiff < prows )
{
prs[ctr] = ctr + pdiff;
}
var prw = find_paired_row ( prs, ctr );
debug ( 'prw: ' + prw );
if ( prw != -1 )
{
debug ( 'here' );
prs[ctr] = -2;
}
}
for ( ctr1 = 0; ctr1 < prows; ctr1++ )
{
debug ( "prs[" + ctr1 + "]: " + prs[ctr1] );
}
return ( prs );
}
/*
* This function writes the "pict" element of the preset XML.
*/
function print_shoot ( pos )
{
var val = pos.split(',');
write ( ' <pict yaw="' + Number ( val[3] ).toFixed(1) + '" pitch="-' + Number ( val[2] ).toFixed(1) + '"/> <!-- ' + Number ( val[0] ).toFixed(0) + ',' + Number ( val[1] ).toFixed(0) + ' -->' );
}
/*
* This function creates the normal move of the head.
* The normal move is defined as
* row 1 as left-to-right
* row 2 as right-to-left
* row 3 as left-to-right
* ...
*/
function do_normal_move ( prows, pcols, pos )
{
for ( var ridx = 0; ridx < prows; ridx++ )
{
if ( ( ridx + 1 ) % 2 == 1 )
{
var cidx = 0;
write ( " <!-- arrange columns left to right in row " + ( ridx + 1 ) + " starting from column " + ( cidx + 1 ) + " -->" );
for ( ; cidx < pcols; cidx++ )
{
print_shoot ( pos[ridx*pcols+cidx] );
}
}
else
{
var cidx = pcols - 1;
write ( " <!-- arrange columns right to left in row " + ( ridx + 1 ) + " starting from column " + ( cidx + 1 ) + " -->" );
for ( ; cidx >= 0; cidx-- )
{
print_shoot ( pos[ridx*pcols+cidx] );
}
}
}
}
/*
* This function creates the special move of the head.
* The special move is done by moving the head around 10.0 degrees like
* row1 columns that have around 10.0 move
* row3(paired row) columns that are reverse from the initial row
* row2 (non-paired row) columns that are 10.0 degrees apart in the repeating order
*/
function do_special_move ( prows, pcols, pos, prs, ydiff, pdiff )
{
var c = new Array ( pcols );
var cnt = 0;
for ( var ridx = 0; ridx < prows; ridx++ )
{
if ( prs[ridx] == -2 )
{
continue;
}
else if ( prs[ridx] == -1 )
{
write ( " <!-- columns in row " + ( ridx + 1 ) + " is not paired -->" );
for ( var ctr = 0; ctr <= ( ydiff + 1 ); ctr++ )
{
if ( ( ydiff + 1 ) >= ( ctr + 1 ) )
{
cnt = 0;
for ( var cidx = ctr; cidx < pcols; cidx += ydiff + 1 )
{
c[cnt++] = ridx * pcols + cidx;
}
if ( ( ctr + 1 ) % 2 == 0 && pcols > 10 )
{
write ( " <!-- arrange columns right to left in row " + ( ridx + 1 ) + " starting from column " + ( ctr + 1 ) + " -->" );
for ( var aidx = cnt - 1; aidx >= 0; aidx-- )
{
print_shoot ( pos[c[aidx]] );
}
}
else
{
write ( " <!-- arrange columns left to right in row " + ( ridx + 1 ) + " starting from column " + ( ctr + 1 ) + " -->" );
for ( var aidx = 0; aidx < cnt; aidx++ )
{
print_shoot ( pos[c[aidx]] );
}
}
}
}
}
else
{
write ( " <!-- columns in row " + ( ridx + 1 ) + " is paired with row " + ( prs[ridx] + 1 ) + " -->" );
for ( var ctr = 0; ctr < ydiff + 1; ctr++ )
{
if ( ctr + ydiff < pcols )
{
cnt = 0;
write ( " <!-- arrange columns left to right in row " + ( ridx + 1 ) + " starting from column " + ( ctr + 1 ) + " -->" );
for ( var cidx = ctr; cidx < pcols; cidx += ydiff + 1 )
{
print_shoot ( pos[ridx*pcols+cidx] );
c[cnt++] = cidx + 1;
}
}
if ( prs[ridx] < prows && c[cnt-1] > 0 )
{
write ( " <!-- arrange columns right to left in row " + ( prs[ridx] + 1 ) + " starting from column " + c[cnt-1] + " -->" );
for ( var cidx = cnt - 1; cidx >= 0; cidx-- )
{
print_shoot ( pos[prs[ridx]*pcols+c[cidx]-1] );
}
}
}
}
}
}
function do_preset()
{
var source_frame_width = 0.0;
var source_frame_height = 0.0;
var thfov = 0.0;
var hfov = 0.0;
var tvfov = 0.0;
var vfov = 0.0;
var focal_length = 0.0;
var crop_factor = 0.0;
var overlap = 0.0;
var ratio = 0.0;
var prows = 0;
var pcols = 0;
var ar = '';
var orientation = '';
var target_orientation = '';
var target_format_name = '';
var target_focal_legnth = 0.0;
var target_frame_width = 0.0;
var target_frame_height = 0.0;
var target_hfov = 0.0;
var target_vfov = 0.0;
var tft = '';
var wip = 0;
var hip = 0;
var scan_pixel = 0;
pval = "";
if ( validate_input() )
{
focal_length = parseFloat ( document.main.fl.value );
var sfa = ( document.main.sf.options[document.main.sf.selectedIndex].value ).split ( ',' );
crop_factor = Number ( sfa[0] );
source_frame_width = Number ( sfa[1] );
source_frame_height = Number ( sfa[2] );
overlap = parseFloat ( document.main.ol.options[document.main.ol.selectedIndex].value );
ar = (document.main.r.options[document.main.r.selectedIndex].value).split ( ',' );
ratio = parseFloat ( ar[1] );
orientation = document.main.or.value;
wip = parseInt ( document.main.wip.value );
hip = parseInt ( document.main.hip.value );
debug ( "focal_length: " + focal_length );
debug ( "source_frame_width: " + source_frame_width );
debug ( "source_frame_height: " + source_frame_height );
debug ( "crop_factor: " + crop_factor );
debug ( "overlap: " + overlap );
debug ( "ratio: " + ratio );
debug ( "orientation: " + orientation );
debug ( "wip: " + wip );
debug ( "hip: " + hip );
thfov = calculate_fov ( source_frame_width, focal_length );
hfov = thfov * ( 1.0 - overlap / ratio / 100.0 );
hfov = Number ( round21 ( hfov ) );
tvfov = calculate_fov ( source_frame_height, focal_length );
vfov = tvfov * ( 1.0 - overlap / 100.0 );
vfov = Number ( round21 ( vfov ) );
debug ( "thfov: " + thfov );
debug ( "tvfov: " + tvfov );
if ( orientation == 'P' )
{
var tmp = hfov;
hfov = vfov;
vfov = tmp;
}
debug ( "hfov: " + hfov );
debug ( "vfov: " + vfov );
tft = (document.main.tft.options[document.main.tft.selectedIndex].value).split ( ',' );
target_format_name = tft[0];
target_frame_width = parseFloat ( tft[1] );
target_frame_height = parseFloat ( tft[2] );
target_orientation = document.main.tor.value;
target_focal_length = parseFloat ( document.main.tfl.value );
debug ( "target_format_name: " + target_format_name );
debug ( "target_frame_width: " + target_frame_width );
debug ( "target_frame_height: " + target_frame_height );
debug ( "target_orientation: " + target_orientation );
debug ( "target_focal_length: " + target_focal_length );
target_hfov = calculate_fov ( target_frame_width, target_focal_length );
target_hfov = Number ( round21 ( target_hfov ) );
target_vfov = calculate_fov ( target_frame_height, target_focal_length );
target_vfov = Number ( round21 ( target_vfov ) );
if ( target_orientation == 'P' )
{
var tmp = target_hfov;
target_hfov = target_vfov;
target_vfov = tmp;
}
debug ( "target_hfov: " + target_hfov );
debug ( "target_vfov: " + target_vfov );
pcols = Math.ceil ( target_hfov / hfov );
prows = Math.ceil ( target_vfov / vfov );
debug ( "pcols: " + pcols );
debug ( "prows: " + prows );
scan_pixel = Math.round ( wip / thfov );
debug ( "scan_pixel: " + scan_pixel );
var pos = initialize_positions ( hfov, vfov, prows, pcols );
var prs = initialize_rows ( prows );
var ydiff = yaw_skip_pos ( hfov, vfov );
var pdiff = pitch_skip_pos ( hfov, vfov );
prs = calculate_paired_row ( prs, pdiff );
write ( '<?xml version="1.0" encoding="utf-8"?>\n' );
write ( '<papywizard>\n' );
write ( ' <preset name="35' + ( crop_factor * 10 ) + orientation + '_' + focal_length + '_' + target_format_name + target_orientation + '_' + target_focal_length + '_' + prows + '_' + pcols + '">' );
write ( ' <tooltip>' );
write ( ' Source:' );
write ( ' Format: 35mm (' + crop_factor + ' Crop, ' + ar[0] + ' Aspect Ratio' + ', ' + ( orientation == 'L' ? 'Landscape' : 'Portrait' ) + ' orientation)' );
write ( ' Focal Length: ' + focal_length + 'mm lens, overlap: ' + overlap + '%, Horizontal FOV: ' + hfov + ', Vertical FOV: ' + vfov );
write ( ' Rows: ' + prows + ', Columns: ' + pcols );
write ( ' Target:' );
write ( ' Format: ' + target_format_name + '(' + ( target_orientation == 'L' ? 'Landscape' : 'Portrait' ) + ' orientation)' );
write ( ' Focal Length: ' + target_focal_length + 'mm lens, Horizontal FOV: ' + target_hfov + ', Vertical FOV: ' + target_vfov );
var target_ratio = target_frame_width / target_frame_height;
var vertical_size = Math.round ( Math.ceil ( target_hfov ) * scan_pixel / target_ratio );
write ( ' Horizontal Size: ' + Math.round ( vertical_size * target_ratio ) + ', Vertical Size: ' + vertical_size );
var t_hfov = ( hfov * pcols + thfov * overlap / 100.0 ).toFixed(1);
var t_vfov = ( vfov * prows + tvfov * overlap / 100.0 ).toFixed(1);
write ( ' Mosaic Horizontal FOV: ' + t_hfov + ', Vertical FOV: ' + t_vfov );
write ( ' Mosaic Horizontal Size: ' + Math.round ( t_hfov * scan_pixel ) + ', Vertical Size: ' + Math.round ( t_vfov * scan_pixel ) );
write ( ' </tooltip>' );
write ( ' <shoot>' );
if ( hfov > OPTIMUM_DEGREES )
{
do_normal_move ( prows, pcols, pos );
}
else
{
do_special_move ( prows, pcols, pos, prs, ydiff, pdiff );
}
write ( ' </shoot>' );
write ( ' </preset>\n' );
/*
* Create the preview preset.
* This preview preset will have
* 1. top-left position
* 2. top-right position
* 3. bottom-right position
* 4. bottom-left position
* 5. top-left position
*/
write ( ' <preset name="35' + ( crop_factor * 10 ) + orientation + '_' + focal_length + '_' + prows + '_' + pcols + '_preview">' );
write ( ' <tooltip>' );
write ( ' A preview preset for the following that travels through the edges of the pano' );
write ( ' Source:' );
write ( ' Format: 35mm (' + crop_factor + ' Crop, ' + ar[0] + ' Aspect Ratio' + ', ' + ( orientation == 'L' ? 'Landscape' : 'Portrait' ) + ' orientation)' );
write ( ' Focal Length: ' + focal_length + 'mm lens, overlap: ' + overlap + '%, Horizontal FOV: ' + hfov + ', Vertical FOV: ' + vfov );
write ( ' Rows: ' + prows + ', Columns: ' + pcols );
write ( ' Target:' );
write ( ' Horizontal FOV: ' + ( hfov * pcols + thfov * overlap / 100.0 ).toFixed(1) + ', Vertical FOV: ' + ( vfov * prows + tvfov * overlap / 100.0 ).toFixed(1) );
write ( ' </tooltip>' );
write ( ' <shoot>' );
print_shoot ( pos[0] ); // top-left
print_shoot ( pos[pcols-1] ); // top-right
print_shoot ( pos[(prows-1)*pcols+pcols-1] ); // bottom-right
print_shoot ( pos[(prows-1)*pcols] ); // bottom-left
print_shoot ( pos[0] ); // top-left
write ( ' </shoot>' );
write ( ' </preset>\n' );
write ( '</papywizard>' );
document.main.preset.value = pval;
}
}
</script>
</head>
<body onload="document.main.preset.value = '';document.main.fl.focus();" bgcolor="#cccccc">
<form name="main">
<table border="0" cellpadding="2" cellspacing="2" width="800">
<tr>
<td>Crop Factor</td>
<td>
<select name="sf" style="width:100px">
<option value="1.0,36.0,24.0">35mm(1.0 Crop)</option>
<option value="1.3,27.7,18.5">35mm(1.3 Crop)</option>
<option value="1.5,24.0,16.0">35mm(1.5 Crop)</option>
<option value="1.6,22.5,15.0" selected>35mm(1.6 Crop)</option>
<option value="1.7,21.2,14.1">35mm(1.7 Crop)</option>
<option value="1.8,20.0,13.3">35mm(1.8 Crop)</option>
<option value="2.0,18.0,12.0">35mm(2.0 Crop)</option>
<option value="1.0,56.0,41.5">MF(56.0X41.5)</option>
<option value="1.0,56.0,36.0">MF(56.0X36.0)</option>
<option value="1.0,53.9,40.4">MF(53.9X40.4)</option>
<option value="1.0,49.1,36.8">MF(49.1X36.8)</option>
<option value="1.0,48.9,36.7">MF(48.9X36.7)</option>
<option value="1.0,48.0,36.0">MF(48.0X36.0)</option>
<option value="1.0,44.0,33.0">MF(44.0X33.0)</option>
<option value="1.0,44.2,33.1">MF(44.2X33.1)</option>
<option value="1.0,43.9,32.9">MF(43.9X32.9)</option>
<option value="1.0,43.2,31.7">MF(43.2X31.7)</option>
<option value="1.0,36.9,36.9">MF(36.9X36.9)</option>
<option value="1.0,36.9,24.6">MF(36.9X24.6)</option>
</select>
</td>
<td>Aspect Ratio</td>
<td>
<select name="r" style="width:100px">
<option value="1:1,1.000000">1:1</option>
<option value="3:2,1.500000" selected>3:2</option>
<option value="4:3,1.333333">4:3</option>
<option value="16:9,1.777778">16:9</option>
</select>
</td>
<td>
Overlap
</td>
<td>
<select name="ol" style="width:100px">
<option value="20">20</option>
<option value="25" selected>25</option>
<option value="30">30</option>
<option value="35">35</option>
<option value="40">40</option>
<option value="45">45</option>
<option value="50">50</option>
</select>
%
</td>
</tr>
<tr>
<td>Orientation</td>
<td>
<select name="or" style="width:100px">
<option value="L">Landscape</option>
<option value="P" selected>Portrait</option>
</select>
</td>
<td>Focal Length</td>
<td>
<input type="text" name="fl" style="width:100px" value="150">
</td>
<td>Width in Pixels</td>
<td>
<input type="text" name="wip" style="width:100px" value="4272">
</td>
</tr>
<tr>
<td>Height in Pixels</td>
<td>
<input type="text" name="hip" style="width:100px" value="2848">
</td>
<td><b>Target Format</b></td>
<td>
<select name="tft" style="width:100px">
<option value="35MM(16:9),36.0,20.25">35MM(16:9)</option>
<option value="XPAN,65.0,24.0">XPAN</option>
<option value="6X45,56.0,42.0">6X45</option>
<option value="6X6,56.0,56.0">6X6</option>
<option value="6X7,70.0,56.0">6X7</option>
<option value="6X9,84.0,56.0">6X9</option>
<option value="6X12,112.0,56.0">6X12</option>
<option value="6X17,168.0,56.0" selected>6X17</option>
<option value="6X24,224.0,56.0">6X24</option>
<option value="6X30,280.0,56.0">6X30</option>
<option value="4X5,127.0,101.6">4X5</option>
<option value="5X7,178.0,127.6">5X7</option>
<option value="4X10,254.7,102.0">4X10</option>
<option value="7X17,432.0,178.0">7X17</option>
<option value="8X10,254.7,199.4">8X10</option>
<option value="8X20,508.0,203.0">8X20</option>
<option value="11X14,357.8,258.8">11X14</option>
<option value="12X20,495.3,306.4">12X20</option>
<option value="14X17,433.4,350.7">14X17</option>
</select>
</td>
<td><b>Target Orientation</b></td>
<td>
<select name="tor" style="width:100px">
<option value="L" selected>Landscape</option>
<option value="P">Portrait</option>
</select>
</td>
</tr>
<tr>
<td>Preset</td>
<td> </td>
<td><b>Target Focal Length</b></td>
<td>
<input type="text" name="tfl" style="width:100px" value="150">
</td>
<td> </td>
<td>
<input type="button" value="Generate" style="width:100px" onClick="do_preset();">
</td>
</tr>
<tr>
<td colspan="6">
<textarea name="preset" rows="18" cols="95"></textarea>
</td>
</tr>
</table>
</form>
</body>
</html>
<?xml version="1.0" encoding="utf-8"?>
<papywizard>
<preset name="3516L_400_6X17L_400_5_9">
<tooltip>
Source:
Format: 35mm (1.6 Crop, 3:2 Aspect Ratio, Landscape orientation)
Focal Length: 400mm lens, overlap: 25%, Horizontal FOV: 2.7, Vertical FOV: 1.6
Rows: 5, Columns: 9
Target:
Format: 6X17(Landscape orientation)
Focal Length: 400mm lens, Horizontal FOV: 23.7, Vertical FOV: 8
Horizontal Size: 31824, Vertical Size: 10608
Mosaic Horizontal FOV: 25.1, Vertical FOV: 8.5
Mosaic Horizontal Size: 33283, Vertical Size: 11271
</tooltip>
<shoot>
<!-- columns in row 1 is not paired -->
<!-- arrange columns left to right in row 1 starting from column 1 -->
<pict yaw="0.0" pitch="-0.0"/> <!-- 1,1 -->
<pict yaw="10.8" pitch="-0.0"/> <!-- 1,5 -->
<pict yaw="21.6" pitch="-0.0"/> <!-- 1,9 -->
<!-- arrange columns left to right in row 1 starting from column 2 -->
<pict yaw="2.7" pitch="-0.0"/> <!-- 1,2 -->
<pict yaw="13.5" pitch="-0.0"/> <!-- 1,6 -->
<!-- arrange columns left to right in row 1 starting from column 3 -->
<pict yaw="5.4" pitch="-0.0"/> <!-- 1,3 -->
<pict yaw="16.2" pitch="-0.0"/> <!-- 1,7 -->
<!-- arrange columns left to right in row 1 starting from column 4 -->
<pict yaw="8.1" pitch="-0.0"/> <!-- 1,4 -->
<pict yaw="18.9" pitch="-0.0"/> <!-- 1,8 -->
<!-- columns in row 2 is not paired -->
<!-- arrange columns left to right in row 2 starting from column 1 -->
<pict yaw="0.0" pitch="-1.6"/> <!-- 2,1 -->
<pict yaw="10.8" pitch="-1.6"/> <!-- 2,5 -->
<pict yaw="21.6" pitch="-1.6"/> <!-- 2,9 -->
<!-- arrange columns left to right in row 2 starting from column 2 -->
<pict yaw="2.7" pitch="-1.6"/> <!-- 2,2 -->
<pict yaw="13.5" pitch="-1.6"/> <!-- 2,6 -->
<!-- arrange columns left to right in row 2 starting from column 3 -->
<pict yaw="5.4" pitch="-1.6"/> <!-- 2,3 -->
<pict yaw="16.2" pitch="-1.6"/> <!-- 2,7 -->
<!-- arrange columns left to right in row 2 starting from column 4 -->
<pict yaw="8.1" pitch="-1.6"/> <!-- 2,4 -->
<pict yaw="18.9" pitch="-1.6"/> <!-- 2,8 -->
<!-- columns in row 3 is not paired -->
<!-- arrange columns left to right in row 3 starting from column 1 -->
<pict yaw="0.0" pitch="-3.2"/> <!-- 3,1 -->
<pict yaw="10.8" pitch="-3.2"/> <!-- 3,5 -->
<pict yaw="21.6" pitch="-3.2"/> <!-- 3,9 -->
<!-- arrange columns left to right in row 3 starting from column 2 -->
<pict yaw="2.7" pitch="-3.2"/> <!-- 3,2 -->
<pict yaw="13.5" pitch="-3.2"/> <!-- 3,6 -->
<!-- arrange columns left to right in row 3 starting from column 3 -->
<pict yaw="5.4" pitch="-3.2"/> <!-- 3,3 -->
<pict yaw="16.2" pitch="-3.2"/> <!-- 3,7 -->
<!-- arrange columns left to right in row 3 starting from column 4 -->
<pict yaw="8.1" pitch="-3.2"/> <!-- 3,4 -->
<pict yaw="18.9" pitch="-3.2"/> <!-- 3,8 -->
<!-- columns in row 4 is not paired -->
<!-- arrange columns left to right in row 4 starting from column 1 -->
<pict yaw="0.0" pitch="-4.8"/> <!-- 4,1 -->
<pict yaw="10.8" pitch="-4.8"/> <!-- 4,5 -->
<pict yaw="21.6" pitch="-4.8"/> <!-- 4,9 -->
<!-- arrange columns left to right in row 4 starting from column 2 -->
<pict yaw="2.7" pitch="-4.8"/> <!-- 4,2 -->
<pict yaw="13.5" pitch="-4.8"/> <!-- 4,6 -->
<!-- arrange columns left to right in row 4 starting from column 3 -->
<pict yaw="5.4" pitch="-4.8"/> <!-- 4,3 -->
<pict yaw="16.2" pitch="-4.8"/> <!-- 4,7 -->
<!-- arrange columns left to right in row 4 starting from column 4 -->
<pict yaw="8.1" pitch="-4.8"/> <!-- 4,4 -->
<pict yaw="18.9" pitch="-4.8"/> <!-- 4,8 -->
<!-- columns in row 5 is not paired -->
<!-- arrange columns left to right in row 5 starting from column 1 -->
<pict yaw="0.0" pitch="-6.4"/> <!-- 5,1 -->
<pict yaw="10.8" pitch="-6.4"/> <!-- 5,5 -->
<pict yaw="21.6" pitch="-6.4"/> <!-- 5,9 -->
<!-- arrange columns left to right in row 5 starting from column 2 -->
<pict yaw="2.7" pitch="-6.4"/> <!-- 5,2 -->
<pict yaw="13.5" pitch="-6.4"/> <!-- 5,6 -->
<!-- arrange columns left to right in row 5 starting from column 3 -->
<pict yaw="5.4" pitch="-6.4"/> <!-- 5,3 -->
<pict yaw="16.2" pitch="-6.4"/> <!-- 5,7 -->
<!-- arrange columns left to right in row 5 starting from column 4 -->
<pict yaw="8.1" pitch="-6.4"/> <!-- 5,4 -->
<pict yaw="18.9" pitch="-6.4"/> <!-- 5,8 -->
</shoot>
</preset>
<preset name="3516L_400_5_9_preview">
<tooltip>
A preview preset for the following that travels through the edges of the pano
Source:
Format: 35mm (1.6 Crop, 3:2 Aspect Ratio, Landscape orientation)
Focal Length: 400mm lens, overlap: 25%, Horizontal FOV: 2.7, Vertical FOV: 1.6
Rows: 5, Columns: 9
Target:
Horizontal FOV: 25.1, Vertical FOV: 8.5
</tooltip>
<shoot>
<pict yaw="0.0" pitch="-0.0"/> <!-- 1,1 -->
<pict yaw="21.6" pitch="-0.0"/> <!-- 1,9 -->
<pict yaw="21.6" pitch="-6.4"/> <!-- 5,9 -->
<pict yaw="0.0" pitch="-6.4"/> <!-- 5,1 -->
<pict yaw="0.0" pitch="-0.0"/> <!-- 1,1 -->
</shoot>
</preset>
</papywizard>
sjhenry wrote:Georg,
For example, if you want to use 18mm lens on your source system, then enter the focal length as 18. Then you choose a target format you want to generate the preset for. For example you want to have 6X17 panoramic format with a 400mm lens, enter 400 in the target focal length and generate the preset.
sjhenry wrote:I added some more description around the "Width in Pixels" and "Height in Pixels". This is the source camera sensor width and height.
First you have to know about what target format you want to take picture. The whole idea of this preset is to use your single camera to act as multiple format camera with different focal lengths. It is up to you to choose the format.
Most of the formats are from film era. A good place to know about different film formats is at www.apug.org
Jones
sjhenry wrote:Georg,
If you want to use 400mm in your source system, then you have to use 400mm lens physically. There is no other way around.
In the preset window, "Focal Length" is for the source system and "Target Focal Length" is for the target system.
Jones
gkaefer wrote:ok - I try it other way round...
with your form you can set source focal length to lets say 18mm (beacause 18mm lens attached with 18mm set for example)
and target focal length to 400mm.
What happens... if you use this xml data with the 18mm lens now?
in my eyes it makes no sense to be able to enter different values for source and target focal length? or do I missunderstand / miss something?
fma38 wrote:You *can* set different focal lengths, but the target must be smaller than the source. (the script should check this condition).
fma38 wrote:You can see this target focal length as another way to compute the final pano: Papywizard allows you to enter the number of images, or the resulting angle; this preset allows you to enter a focal length.
The number of images is computed according to the overlap you ask, to cover the angle of view you would have get with the target focal length...
Users browsing this forum: No registered users and 3 guests