[Papywizard] Multi format preset generator  

Everything you need to motorize your head
no avatar
sjhenry
Member
 
Topic author
Posts: 146
Likes: 0 post
Liked in: 0 post
Joined: Tue Mar 10, 2009 1:43 am
Location: Colorado, USA
Info

[Papywizard] Multi format preset generator

by sjhenry » Thu Jul 16, 2009 1:58 am

Here is a preset generator for the PW that generates presets for a target format. Some of you may have used other formats like 6X6, 6X17, 4X5 medium, larger or ultra large format. If you want to do those different format with the digital, then you are at the right place. This script is for you.

1. What is it?
This html/javascript program creates a PW preset for a given camera/lens combination and for a given target format. This creates a preset and a preview preset that travels on the edge of the mosaic from top-left, top-right, bottom-right, bottom-left to top-left.

2. Where is the screen shot?
a) Picture 2 shows an initial opening screen
b) Picture 3 shows an preset generated screen

3. How to install?
a) Open notepad or any text editor
b) Copy the following code (remove the "Code:" part)
c) Paste that in the text editor
d) Save it with a name (like pw_mf_preset.html)
e) Double click on the name. It will be opened in the default browser.
f) You can create a shortcut as well (see Picture 1).

4. What is the system requirement?
A modern browser - latest version of any browser. I wrote it in html/javascript combination so that it works in most of the browsers. I tested it in IE and Firefox. It works find on these browsers. The javascript needs to be enabled on the browser. The script uses very premitive javascript so it should work in most browsers without any modifications. If you find that it is not running in a browser, please post it in this thread to figure out a solution.

5. What are the fields on the screen?
a) Crop Factor: This dropdown box shows all the possible sensor crop for the DSLR currently available.
Some example,
Code: Select all
  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.

In order to use Medium Format camera/digital back, use the following table.
Code: Select all
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

b) Aspect Ratio: Choose the maximum sensor aspect ratio for a given camera. Mostly it is 3:2 ration for DSLR.
Some camera offer in camera crop of 4:3 and 16:9. It is best to use the native aspect of the sensor.
c) Overlap: This is the overlap percentage between the adjustant shots in yaw and pitch axis.
d) Orientation: Orientation of the camera when taking the mosaic - Landscape or Portrait.
e) Focal Length: The focal length of the lens used. Don't do any conversion here. If you use 50mm lens on a 1.6 crop body, just enter 50 and not 80.
f) Width in Pixels: Source Camera sensor width in pixels. The default value is populated with Rebel XSI sensor width 4272.
g) Height in Pixels: Source camera sensor height in pixels. The default value is populated with Rebel XSI Sensor height 2848.
h) Target Format: Name of the target format shown. Most of the panoramic film formats like 35mm format - XPAN, medium format - 6X17, 6X24, large format - 4X10, 8X20, 7X17 are given. Beside these panoramic formats regular medium format -6X6, 6X9, large format - 4X5, 5X7 are given as well.
i) Target Orientation: Orientation for the target format.
j) Target Forcal Length: Focal length on the target format.
k) Generate (button): Press this button to generate the preset.
l) Preset (text area): The generated preset will be shown here.

Target format system has the bold value in it.

5. How to use it?
Select a value that matches your camera.
Select the correct aspect ratio for your camera.
Select an overlap percentage.
Select the orientation of the camera.
Enter the focal length of the lens.
Choose a target format.
Choose the target format orientation.
Enter a valid focal length for the target format.
Enter the width of the picture in pixels (whole number)
Enter the height of the picture in pixels (whole number)
Press the "Generate" button.

This creates a preset in the bottom text area. The preset name will be 35<2 digit crop factor><orientation>_<focal length>_<target format><orientation>_<target focal length>_<rows>_<columns>. Now copy this to a file same as the preset name with an extension of .xml.
For example, you use Canon 450D in portrait with 150 mm lens for a target format of 6X17 with focal length 150. The preset name will be 3516P_150_6X17L_150_3_14. The preview preset name will be 3516P_150_6X17L_150_3_14_preview. Save the preset in a file called 3516P_150_6X17L_150_3_14.xml.

Load this preset file into the PW using File->Import Preset File menu.

Set the home position correctly. Select the preview preset (3516P_150_6X17L_150_3_14_preview) and see the positions. Note that you have to use the simulation for shutter, otherwise you will take 5 picture of the 4 corners of the mosaic.

Once you set the home position correctly, then select the preset (3516P_150_6X17L_150_3_14) and take the mosaic.

6) what is in the tooltip?
a) The tooltip has a Source section where the format used, focal length used, rows and columns are mentioned.
b) The tooltip also has a Target section which shows the target format, focal length, resultant horizontal, vertical FOV and sizes. In addition it shows the mosaic FOV as well.

Code: Select all
        <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>

If you have any other questions/feedback about this program, please post it in this thread.

Jones

PS: The example shown at http://www.autopano.net/forum/p44509-2009-05-04-21-59-15#p44509 used this preset generator to generate the preset.

Code: Select all
<!--
 ! 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>






Last edited by sjhenry on Wed Jul 22, 2009 2:33 am, edited 1 time in total.

User avatar
Paul
Member
 
Posts: 778
Likes: 0 post
Liked in: 0 post
Joined: Sat Aug 30, 2008 4:46 pm
Location: Bonn, Germany
Info

by Paul » Thu Jul 16, 2009 7:16 am

Thanks a lot !

I can't figure out which inputs are relevant for the calculation and which are only used for text inside the template.
And would it be possible to add the calculation of 360x180 degree spheres?
Paul

close, but no cigar ... ... ...

User avatar
fma38
Member
 
Posts: 5842
Likes: 2 posts
Liked in: 1 post
Joined: Wed Dec 07, 2005 6:21 pm
Location: Grenoble, France
Info

by fma38 » Thu Jul 16, 2009 8:30 am

I finally just put a link to this page (and the previous one); it will be easier for you to maintain it. Consider the forum as the official place for your scripts.

Again, very good job!
Frédéric

Canon 20D + 17-40/f4 L USM + 70-200/f4 L USM + 50/f1.4 USM
Merlin/Orion panohead + Papywizard on Nokia N800 and HP TC-1100

no avatar
sjhenry
Member
 
Topic author
Posts: 146
Likes: 0 post
Liked in: 0 post
Joined: Tue Mar 10, 2009 1:43 am
Location: Colorado, USA
Info

by sjhenry » Thu Jul 16, 2009 4:27 pm

Paul,

All the parameters are used in the calculation. Then input values and the calculated values are displayed in the tooltip.

Indeed I have another script to do the 360X180 which initially I thought may not be useful for others. Let me post it here that one as well.

Jones

no avatar
sjhenry
Member
 
Topic author
Posts: 146
Likes: 0 post
Liked in: 0 post
Joined: Tue Mar 10, 2009 1:43 am
Location: Colorado, USA
Info

by sjhenry » Thu Jul 16, 2009 4:40 pm

Thanks Frederic. I'll keep it here.

no avatar
Gordon
Member
 
Posts: 357
Likes: 0 post
Liked in: 0 post
Joined: Wed Oct 08, 2008 12:18 pm
Location: Deep in the woods, UK
Info

by Gordon » Thu Jul 16, 2009 7:08 pm

Very useful :)

Gordon
2000th Member :D

GigaPixel Experimenter
Gigapan Beta Unit, Canon Powershot S5IS, Canon 350D, Nikon D40, Manfrotto Tripod, BT-Serial + Papywizard on Nokia 770, Fully-Operational Merlin the Wizard Unit!!!

no avatar
sjhenry
Member
 
Topic author
Posts: 146
Likes: 0 post
Liked in: 0 post
Joined: Tue Mar 10, 2009 1:43 am
Location: Colorado, USA
Info

by sjhenry » Sat Jul 18, 2009 12:19 am

I have updated

1) the script to show the correct horizontal and vertical size in tool tip
2) the script to show the mosaic horizontal and vertical size in tool tip
3) the screen shot with the new tool tip

Jones

no avatar
sjhenry
Member
 
Topic author
Posts: 146
Likes: 0 post
Liked in: 0 post
Joined: Tue Mar 10, 2009 1:43 am
Location: Colorado, USA
Info

by sjhenry » Sat Jul 18, 2009 12:25 am

Following is a small tutorial to use the above script.

Step 1 - Find out the source and target format
====================================

Say I have a rebel xsi with ef 400mm lens. I want to create a 6X17 format picture with 400mm lens. For those who don't know about the 6X17, it is a medium format film based panoramic format. It has a aspect ratio of 1:3.

no avatar
sjhenry
Member
 
Topic author
Posts: 146
Likes: 0 post
Liked in: 0 post
Joined: Tue Mar 10, 2009 1:43 am
Location: Colorado, USA
Info

by sjhenry » Sat Jul 18, 2009 12:32 am

Step 2 - Generate the preset
=======================

Since the camera is rebel XSI and the lens is 400mm in the horizontal orientation, plug in the following values

Crop Factor =======> 1.6
Aspect Ratio =======> 3:2
Overlap =======> 25%
Orientation =======> Landscape
Width in Pixels =======> 4272
Height in Pixels =======> 2848

Now the target format is 6X17 with 400mm in the horizontal orientation, plug in the following values

Target Format =========> 6X17
Target Orientation ======> Landscape
Target Focal Length =====> 400

Now press the "Generate" button to generate the preset. You will end up with the following preset.

Code: Select all
<?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>
Last edited by sjhenry on Sat Jul 18, 2009 12:39 am, edited 1 time in total.

no avatar
sjhenry
Member
 
Topic author
Posts: 146
Likes: 0 post
Liked in: 0 post
Joined: Tue Mar 10, 2009 1:43 am
Location: Colorado, USA
Info

by sjhenry » Sat Jul 18, 2009 12:35 am

Step 3 - Load the preset and take the pictures
===================================

Now select the generated preset and save it in a file called 3516L_400_6X17L_400_5_9.xml. The name of the xml file is same as the preset name.

Next load the preset file 3516L_400_6X17L_400_5_9.xml to Papywizard and shoot the pictures.
Last edited by sjhenry on Sat Jul 18, 2009 12:40 am, edited 1 time in total.

no avatar
sjhenry
Member
 
Topic author
Posts: 146
Likes: 0 post
Liked in: 0 post
Joined: Tue Mar 10, 2009 1:43 am
Location: Colorado, USA
Info

by sjhenry » Sat Jul 18, 2009 12:38 am

Step 4 - Import the pictures taken into the stitcher
=======================================

I am going to show only the APP screen here. You can use any stitcher you want or have.

The below screen shot shows the APP Papywizard import screen.


Last edited by sjhenry on Sat Jul 18, 2009 12:59 am, edited 1 time in total.

no avatar
sjhenry
Member
 
Topic author
Posts: 146
Likes: 0 post
Liked in: 0 post
Joined: Tue Mar 10, 2009 1:43 am
Location: Colorado, USA
Info

by sjhenry » Sat Jul 18, 2009 12:43 am

Step 5 - do the detection and create the panorama
=======================================

Here the first screen shows the detection phase where the 45 pictures are shown.

The next screen shows the pano before cropping or checking for any bad stitch.




Last edited by sjhenry on Sat Jul 18, 2009 1:00 am, edited 1 time in total.

no avatar
sjhenry
Member
 
Topic author
Posts: 146
Likes: 0 post
Liked in: 0 post
Joined: Tue Mar 10, 2009 1:43 am
Location: Colorado, USA
Info

by sjhenry » Sat Jul 18, 2009 12:45 am

Step 6 - do the crop and other adjustments for the final rendering
==================================================

The following screen shows it is ready for rendering.


Last edited by sjhenry on Sat Jul 18, 2009 1:01 am, edited 1 time in total.

no avatar
sjhenry
Member
 
Topic author
Posts: 146
Likes: 0 post
Liked in: 0 post
Joined: Tue Mar 10, 2009 1:43 am
Location: Colorado, USA
Info

by sjhenry » Sat Jul 18, 2009 12:51 am

Step 6 - Crop as per the size mentioned in the preset
=========================================

From the APP, the final size of the pano is shown as (see the previous picture)

Horizontal Size: 34239
vertical Size: 11031

The preset tool tip shows the final size of the pano as well (see the generated tool tip for "Horizontal Size:")

They are

Horizontal Size: 31824
Vertical Size: 10608

Now do the crop in any photo editor (or even inside the APP).

The final picture is ready for web, printing etc as shown below


Last edited by sjhenry on Sat Jul 18, 2009 1:02 am, edited 1 time in total.

User avatar
gkaefer
Member
 
Posts: 3450
Likes: 0 post
Liked in: 5 posts
Joined: Tue Jun 09, 2009 1:01 pm
Location: Salzburg
Info

by gkaefer » Sat Jul 18, 2009 10:08 pm

Target Focal Length :: Focal Length

if I use a 18mm lens so I use as Source Focal Length 18
what happens if I use 400 as target forcal lenth?
Why can both be different?

I I shoot pictures with focal length xx the resulting target focal length must (?) also be xx
.. or do I miss something?

ad:
i) Width in Pixels: Frame width in pixels of the picture
j) Height in Pixels: Frame height in pixels of the picture

are thes source (sensor pixel e.g.) or target values (if target values: why is this editable, because of number of taken pictues^set the target size values?

in short: I've no Idea which values must not /must/can/should be combinated to produce a usefull preset...

the other 360x180 pano script.... could be integrated to this one by choosing 2:1 Target format... ;-)
the source and target parameters could be seperated more visible on html form...

Liebe Gruesse,
Georg
Last edited by gkaefer on Sun Jul 19, 2009 11:35 am, edited 1 time in total.

no avatar
sjhenry
Member
 
Topic author
Posts: 146
Likes: 0 post
Liked in: 0 post
Joined: Tue Mar 10, 2009 1:43 am
Location: Colorado, USA
Info

by sjhenry » Mon Jul 20, 2009 1:59 am

Georg,

There is no need to have target focal length and source focal length same. The example I shown is kind of misleading. You can enter any focal length to generate the preset.

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.

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

no avatar
sjhenry
Member
 
Topic author
Posts: 146
Likes: 0 post
Liked in: 0 post
Joined: Tue Mar 10, 2009 1:43 am
Location: Colorado, USA
Info

by sjhenry » Mon Jul 20, 2009 2:01 am

I have updated

1) the look of the preset by bolding all the target format related settings.
2) the description of the fields.

Jones

User avatar
gkaefer
Member
 
Posts: 3450
Likes: 0 post
Liked in: 5 posts
Joined: Tue Jun 09, 2009 1:01 pm
Location: Salzburg
Info

by gkaefer » Mon Jul 20, 2009 9:03 am

Dear Jones,

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.

I do not understand this point. If I've a camera with 18mm lens - how can I shoot a panorama containing x rows and y colums resulting in 400mm resolution?
If I want to have 400mm resolution I've to use a 400mm lens (or 200mm lens with converter etc.) and than source focal length has to be 400mm?

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

ok gets clearer now.

Liebe Gruesse,
Georg

no avatar
sjhenry
Member
 
Topic author
Posts: 146
Likes: 0 post
Liked in: 0 post
Joined: Tue Mar 10, 2009 1:43 am
Location: Colorado, USA
Info

by sjhenry » Tue Jul 21, 2009 1:14 am

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

User avatar
gkaefer
Member
 
Posts: 3450
Likes: 0 post
Liked in: 5 posts
Joined: Tue Jun 09, 2009 1:01 pm
Location: Salzburg
Info

by gkaefer » Tue Jul 21, 2009 8:16 am

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

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?

Liebe Gruesse,
Georg
Last edited by gkaefer on Tue Jul 21, 2009 8:17 am, edited 1 time in total.

User avatar
Paul
Member
 
Posts: 778
Likes: 0 post
Liked in: 0 post
Joined: Sat Aug 30, 2008 4:46 pm
Location: Bonn, Germany
Info

by Paul » Tue Jul 21, 2009 8:36 am

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?

I second that, I also don't understand the target focal setting.
So we need some help to understand your approach ...

Just looking on two presets:
Is it right, that you shrink the covered rectangle when target FL is larger than than real FL and vice versa?

So the solution for me as a dummy is: Never set target FL different to real FL.
Paul

close, but no cigar ... ... ...

User avatar
fma38
Member
 
Posts: 5842
Likes: 2 posts
Liked in: 1 post
Joined: Wed Dec 07, 2005 6:21 pm
Location: Grenoble, France
Info

by fma38 » Tue Jul 21, 2009 9:32 am

You *can* set different focal lengths, but the target must be smaller than the source. (the script should check this condition).
Frédéric

Canon 20D + 17-40/f4 L USM + 70-200/f4 L USM + 50/f1.4 USM
Merlin/Orion panohead + Papywizard on Nokia N800 and HP TC-1100

User avatar
gkaefer
Member
 
Posts: 3450
Likes: 0 post
Liked in: 5 posts
Joined: Tue Jun 09, 2009 1:01 pm
Location: Salzburg
Info

by gkaefer » Tue Jul 21, 2009 9:49 am

fma38 wrote:You *can* set different focal lengths, but the target must be smaller than the source. (the script should check this condition).

sorry for insisting ;-)
I dont understand the concept.
clear I "can" do it, but what is it for? in your case to set lens e.g. 100mm and get an preset with smaller target focal length. result will be more overlap of single images...

thanks,
Georg
Last edited by gkaefer on Tue Jul 21, 2009 9:50 am, edited 1 time in total.

User avatar
fma38
Member
 
Posts: 5842
Likes: 2 posts
Liked in: 1 post
Joined: Wed Dec 07, 2005 6:21 pm
Location: Grenoble, France
Info

by fma38 » Tue Jul 21, 2009 10:10 am

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...
Frédéric

Canon 20D + 17-40/f4 L USM + 70-200/f4 L USM + 50/f1.4 USM
Merlin/Orion panohead + Papywizard on Nokia N800 and HP TC-1100

User avatar
gkaefer
Member
 
Posts: 3450
Likes: 0 post
Liked in: 5 posts
Joined: Tue Jun 09, 2009 1:01 pm
Location: Salzburg
Info

by gkaefer » Tue Jul 21, 2009 11:19 am

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...

thanks for clarification!
Liebe Gruesse,
Georg

Next

Return to Motorized panohead project: Merlin, Orion & Papywizard

Who is online

Users browsing this forum: No registered users and 2 guests