home *** CD-ROM | disk | FTP | other *** search
/ World of Graphics / WOGRAPH.BIN / 907.DMORF.DOC < prev    next >
Text File  |  1993-07-12  |  15KB  |  380 lines

  1. DMORF Rel 1.1 (07/12/93)
  2. Copyright (c) 1992, 1993, by David K. Mason.
  3. All Right Reserved.
  4.  
  5. DMorf (Dave's Morphing program) is a small morphing program that
  6. runs in DOS graphics mode.  It operates on TGA, GIF, and IMG
  7. files, and produces a bunch of TGA files as output.
  8. You can compile these TGA files with my other program, DTA, or
  9. dump 'em straight out to video if you've got the hardware.
  10.  
  11. ----------------------------------------------------------------------
  12. Hardware requirements:
  13.  
  14. To run DMorf, you MUST have:
  15.  1) A VGA monitor
  16.  2) At least a '286
  17.  3) A mouse with a microsoft-compatible driver
  18.  4) *some* extended memory (expanded memory is not
  19.     useful).
  20. To accomplish any serious work with this program, you SHOULD have:
  21.  1) SVGA board with VESA in BIOS or with a VESA driver.
  22.     By default, DMorf will use the 640x480x256 mode.  If you use the
  23.     /800 command-line switch it'll use 800x600 mode instead.  The
  24.     /1024 command-line switch tells DMorf to use 1024x768 mode
  25.     instead.
  26.  2) A fast processor *and* numeric coprocessor... DMorf DRAGS without
  27.     a copro.  Right now the 486DX is the best chip to have because the
  28.     coprocessor is integrated on the same chip.
  29.     (When the Pentium comes out, it should be fantastic because of
  30.     its optimized floating point instructions.)
  31.  3) *Lots* of extended memory, unless you're working
  32.     with teeny pictures.
  33.  
  34.     This program runs in '286 protected mode, and allows
  35.     access to up to 16M of extended memory.
  36.  
  37.     ( During the warping process, DMorf creates a buffer
  38.     big enough to hold one entire picture, in RGBa (32-bit)
  39.     form.  That means 256000 bytes if you're working with
  40.     320x200 pictures, or 1,228,800 for 640x480, or 1,920,000
  41.     for 800x600, or 3,145,728 for 1024x768. )
  42.  
  43.     You can speed DMorf up quite a bit using the /PRELOAD command-line
  44.     switch... it loads copies of both pictures into memory at startup
  45.     thus when displaying, editing, or morphing, it won't have to read
  46.     the pitures from disk.  Also, it causes some intermediate pictures
  47.     to be stored in memory instead of saved and loaded from disk.
  48.     This can save significant time, but uses a *lot* of memory....
  49.     multiply the numbers in the previous paragraph by 3 or 4.
  50.  
  51. ----------------------------------------------------------------------
  52. DOS-Extender Files
  53.  
  54. The DOS-Extender Files from the Borland Pascal compiler (DPMI16BI.OVL,
  55. RTM.EXE, and DPMIINST.EXE) must exist somewhere in your DOS path,
  56. or in the same directory where you keep DMORF.EXE.
  57. ... or DMORF will not work at all.  These files are in the DMorf
  58. archive.
  59.  
  60. If you've got an unsupported 286 processor (you'll know, because
  61. DMORF will complain loudly), then you'll have to:
  62.  
  63.  (1) disable any memory management software you have running
  64.      (like HIMEM.SYS)
  65.  (2) run the other program in this archive, DPMIINST, which will
  66.      configure RTM.EXE for your system
  67.  
  68.  and then
  69.  
  70.  (3) turn any disabled memory managment stuff back on
  71.  
  72. ----------------------------------------------------------------------
  73. Multiple versions:
  74.  
  75. DMorf 1.1 comes in two varieties: DMORF.EXE and DMORFNC.EXE.
  76. Both versions can run in systems that either have or don't have
  77. math coprocessors, but DMORF.EXE will run much faster on
  78. systems with coprocessors, and DMORFNC will run faster
  79. on systems that DON'T have coprocessors.
  80.  
  81. If you have a choice, use DMORF.EXE and a coprocessor.
  82.  
  83. Sorry, but because it uses a different method of representing
  84. floating point numbers, DMORFNC.EXE will not be able to read
  85. mesh files created with versions 1.0 and earlier of DMorf.
  86. You could get around this by loading a mesh file into DMORF.EXE,
  87. saving it in the 1.1 mesh file format, and then loading the
  88. new mesh into DMORFNC.EXE.
  89.  
  90. ----------------------------------------------------------------------
  91. How to use DMorf:
  92.  
  93. To get started with DMorf, type "DMORF <file1> <file2>"
  94.  
  95. The files can be TGA (16, 24, or 32, compressed or uncompressed),
  96. Vivid IMG, or GIF.  The two files don't have to be in the same
  97. format, but they do have to share the same dimensions.
  98.  
  99. DMorf will then read and display the two pictures in side-by-side
  100. windows.  If you only supplied one filename, then it'll display
  101. that picture twice. It scales them so they'll fit in the windows.
  102.  
  103. Then, it lays a mesh over the two pictures.
  104. In this program, a mesh is represented by a bunch of horizontal
  105. and vertical lines.  The points where they intersect can be
  106. adjusted.
  107. Initially, there are lines on the four edges of the picture,
  108.  
  109. There are always the same number of mesh points defined in the
  110. two pictures, though they aren't always in the same places.
  111.  
  112. To add a new line to the mesh, move the mouse cursor to the
  113. border around one of the pictures (which one doesn't particularly
  114. matter).  Click the *right* mouse button at the point where you want
  115. the line added.  (If the cursor is on the top or bottom border, a
  116. vertical line will be added, and if it's on one of the sides, a
  117. horizontal line will be added.)
  118.  
  119. To move a vertex, put the mouse cursor over the intersection
  120. of two lines, press the button, and move the mouse.
  121. Let go of the button when you've got the point where you want
  122. it.  DMorf will try to prevent you from overlapping lines.
  123. It's possible to defeat it with weird angles.  Don't do that...
  124. it's bad.
  125.  
  126. The point of these meshes is to define the shapes of the objects
  127. in the pictures.  The lines should match the contours of any
  128. objects in the scenes.
  129.  
  130. Move the vertices of the lines so that the lines match the curves
  131. of the objects in the pictures.  When you've got meshes that you're
  132. satisfied with, click on the "Go" button and watch.
  133.  
  134. After you've saved a your mesh in a .MSH file (using the Save or
  135. SaveAs button), you could start DMorf by just typing
  136. "DMORF MESHFILE.MSH".  DMorf will remember the names of your
  137. picture files and any settings particular to your morph
  138. sequence.
  139.  
  140. ----------------------------------------------------------------------
  141. The User Interface:
  142.  
  143. (note: also take a look at WHATSNEW.DMO... that file is sometimes
  144. more up-to-date than this one is)
  145.  
  146. Here's what the other controls on the screen do:
  147.  
  148.  The Save button: saves your meshes and settings to a control file.
  149.    It doesn't prompt for a filename unless this is a new mesh.
  150.  
  151.  The Save As button: same as Save, but always prompts for a filename.
  152.  
  153.  The Load button: loads a control file. Always prompts for a filename.
  154.  
  155.  The Reload button: re-loads the current control file.  Doesn't prompt
  156.   for a filename unless none is currently loaded.
  157.  
  158.  The Quit button: Changed my mind.  Get me out of this program NOW.
  159.    The escape key does the same thing.
  160.  
  161.  The Go button: causes DMorf to start morphing.
  162.  
  163.  The About button: gives DMorf copyright info.
  164.  
  165.  The Colors button: switches to the Colors dialog.
  166.  
  167.  The Pictures button: switches to the Pictures dialog.
  168.  
  169.  The Settings button: switches to the Settings dialog.
  170.  
  171.  The Swap button: swaps the meshes between the two windows.
  172.  
  173.  The Max buttons: display just one of the images, much larger.
  174.    This gives much finer control over the mesh control points.
  175.  
  176.  The Edit buttons: load one of the pictures into memory, display
  177.    it larger, and allow editing of the pixels' alpha values.
  178.  
  179.  The Del button: lets you delete a line from the meshes.
  180.  
  181.  The 1->2 button: copies the mesh from window 1 into
  182.    window 2.
  183.  
  184.  The 2->1 button: copies the mesh from window 2 into
  185.    window 1.
  186.  
  187.  The FlipH buttons : flips one of the meshes horizontally.
  188.  
  189.  The Splines button: gives you a preview of what splines for the
  190.    current mesh points would look like.  If you're using
  191.    "Spline meshes" mode, make sure you use this button once in a
  192.    while to make sure the splines aren't going nuts.
  193.  
  194.  The Hide button: shows the pictures without any mesh superimposed.
  195.  
  196. (Settings:)
  197.  
  198.  The Frames control: tells DMorf how many pictures to create.
  199.    If you're in Morph mode, then this represents how many tween
  200.    frames to create.  In warp mode, this number includes a
  201.    fully-warped final frame.
  202.  
  203.  First: specifies the first frame to actually render in the range
  204.    0 to Last
  205.  
  206.  Last: specifies the final frame to render in the range First
  207.    to (Frames-1)
  208.  
  209.  Warp 1/2: determines the speed of the warping portion of the
  210.    morph.  Specifically, the number determines at which percent
  211.    of the morph the warp should be half done.
  212.  
  213.  Fade 1/2: determines the speed of the fading portion of the
  214.    morph.  Specifically, the number determines at which percent
  215.    of the morph the fade should be half done.
  216.  
  217.  Spline meshes:
  218.    When your points are all located where you want them to be,
  219.    and you tell DMorf to go ahead and morph, DMorf figures out
  220.    which points to map where by drawing spine curves between
  221.    the vertices.
  222.  
  223.    If you turn this control off, it'll draw straight lines instead.
  224.    Reasons to use splines instead of lines: the warp often looks
  225.    a whole lot better.
  226.  
  227.    Reasons to use lines instead of splines:
  228.  
  229.    (1) Splines sometimes go haywire, with curves going every which
  230.        way, overlapping, and (gasp) sometimes even passing beyond
  231.        of the picture borders
  232.    (2) You don't want something curved when it warps
  233.    (3) lines are faster than splines.
  234.  
  235.  Spline Always:
  236.    Because it takes so much longer to display splines than it does
  237.    to display lines, DMorf usually just displays lines and waits for
  238.    you to click the Splines button to show what the splines look
  239.    like. If you check off Spline always, DMorf always shows the mesh
  240.    as splines.
  241.  
  242.  Just Warp:  In Morph mode, the program will map points from
  243.    picture #1 toward picture #2, and from 2 toward 1, and
  244.    cross-fade.  In Warp mode, it'll just map points from
  245.    #1 toward #2, with no fade.
  246.  
  247.    Not too surprisingly, Warp mode takes half the time
  248.    that Morph mode does.
  249.  
  250.  Smooth resampling:  In smooth mode, DMorf interpolates
  251.    new pixel values from all source pixels that should
  252.    contribute... if you turn this control off, it just
  253.    grabs a the closest pixel value.
  254.    Nearest neighbor, in other words.  The results
  255.    in smooth mode look massively better than dumb mode.
  256.    But dumb mode is massively faster.  Dumb mode would be
  257.    useful in test runs, but don't use it for real stuff, 'cause
  258.    it looks like crap.
  259.  
  260.  Show In-between: DMorf usually displays, while morphing, all the
  261.    intermediate pictures it creates.  If you turn off this switch,
  262.    it won't, and it'll finish quicker.
  263.  
  264.  Verbose status: DMorf usually displays the frame number it's working
  265.   on, plus the percentage that it's finished of the frame.  With
  266.   verbose status switched off, it lists only the frame number.
  267.  
  268. (In the Pictures dialog)
  269.  
  270.  The Before text box: Specifies the name of the picture to morph
  271.    from.
  272.  
  273.  The After text box: Specifies the name of the picture to morph to.
  274.  
  275.  The Background text box: specifies a picture to overlay the morphed
  276.    frames onto (assuming they have transparency).  This text box
  277.    currently doesn't do anything at all... in the future, when DMorf
  278.    shells out to DTA, it'll use this value to build the DTA
  279.    command-line.
  280.  
  281.  The RLE Checkbox: Tells DMorf whether or not to create run-length
  282.    encoded (compressed) TGA files.
  283.    Compressed TGA files are almost always smaller than
  284.    non-compressed, but some programs can't read them.
  285.    (DTA can)
  286.  
  287.  The 32-Bit Checkbox: Tells DMorf whether to create 24-bit or
  288.    32-bit TGA files.  The only reason you might want to
  289.    use 32-bit TGA files is if you're planning to do compositing.
  290.    Some programs can only read 24-bit TGA files.  (DTA can read
  291.    either)
  292.  
  293.  The Bottom-to-Top Checkbox: Tells DMorf whether to create
  294.    TGA files that begin at the bottom of the screen, or at the
  295.    top of the screen.  Some programs can only read one or
  296.    the other variety.  (DTA can read both, but prefers bottom-to
  297.    top)
  298.  
  299. (In the Colors Dialog)
  300.  
  301.  The Mesh colors controls: sets the red, green, and blue components of
  302.    the color used to display the control mesh.
  303.  
  304.  The Alpha colors controls: sets the red, green, and blue components of
  305.    the color used to represent pixels that are more than 50%
  306.    transparent.
  307.  
  308.  The gamma controls: The "File" value specifies the gamma correction
  309.   value that's already been applied to the picture.  The "Disp"
  310.   value specifies the new gamma correction value for the screen.
  311.   (Note: gamma correction is a gimmick for adjusting the brightness
  312.   of a picture.)
  313.  
  314. If all this makes no sense, just start messing around with the
  315. program.  Once you figure out how to add new points to the mesh,
  316. the rest of the interface is pretty intuitive.
  317.  
  318. ----------------------------------------------------------------------
  319. Credits:
  320.  
  321. The warping, morphing, image scaling, and spline algorithms all
  322. come (with modification) from George Wolberg's excellent book
  323. Digital Image Warping. The user interface stuff is all mine.
  324.  
  325. Thanks to Michael Day (Knight Software) for making his VESA
  326. BGI graphics driver (BGI256) available.
  327.  
  328. Thanks to Lutz Kretzschmar for letting me use his SVGA
  329. mouse-handling code.
  330.  
  331. Thanks to the Compuserve GRAPHDEV forum gang, and the Graphics
  332. Alternative BBS gang for their suggestions, and various bugs
  333. they've helped me identify.
  334.  
  335. Thanks to Eric Deren for his neat ideas on manipulating meshes.
  336.  
  337. ----------------------------------------------------------------------
  338. Disclaimer:
  339.  
  340.   If you use DMorf, you do so at your own risk.  I won't be held
  341.   responsible if it screws anything up.
  342.  
  343. ----------------------------------------------------------------------
  344. Support:
  345.  
  346.   If you've got any requests/bug reports/suggestions, send a message
  347.   to:
  348.     "David Mason" on the "You Can Call Me Ray" BBS, (708) 358-5611,
  349.     and on "The Graphics Alternative", (510) 524-2780,
  350.     and on "Channel 1" BBS, (617) 354-8873.
  351.     "76546,1321" on Compuserve.
  352.  
  353.   You'll probably get some kind of a response (maybe sooner, maybe
  354.   later)
  355.  
  356. ----------------------------------------------------------------------
  357. The Rules:
  358.  
  359.   Feel free to re-upload this program to other bulletin board
  360.   systems in its *original, unmodified* form.  You may not
  361.   repackage it with other software.  You may not repackage it with
  362.   your own tutorial.  I feel like an idiot having to make these
  363.   demands, but people have been doing these things.
  364.     Do not include this on a disk along with any magazine,
  365.   book, hardware product, or other software product without my
  366.   permission.
  367.  
  368. ----------------------------------------------------------------------
  369. Money matters:
  370.  
  371.   DMorf is a shareware program.  If you think this program is worth
  372.   it, send some money or some computer hardware or something to:
  373.  
  374.     David K. Mason
  375.     P.O. Box 181015
  376.     Boston, MA 02118
  377.  
  378.   I think $35 is an appropriate amount, but feel free to send more
  379.   or less.
  380.