MiniMorph v1.1d by Philippe Banwarth 1993/94 based on VMorph version 2 beta by Lee Wilkie 1992/93 (mainly for user interface) This is the freeware version of MiniMorph. You may use and distribute it as long as you don't ask more than a small copy fee. You use it at your own risk. It needs : ReqTools.library © Nico François IFF.library (v23 or more) © Christian A. Weber About this document. As my English is very poor, and as MiniMorph's user interface is inspired by VMorph's one much of this document is taken from VMorph's doc file. (indicated by [] ) What is MiniMorph ? MiniMorph is a program that will allow you to create smooth morphs/warps between two different images over a period of frames to create an animation. Actually it works only on greyscale pictures (16-256). It has been written 100% in assembler to be as fast as possible. For example morphing a 320*256*256 picture takes less than 9 seconds on a standard A1200. [ What is morphing ? Morphing is an effect whereby you take a source and destination image and over a period of time you fade/'bend' the source image into the destination. What is warping ? Warping is very similar to morphing except that the destination image is only used as a 'shape'. The source image is then warped to fit this shape. This process is twice as fast as morphing as only one image is rendered per frame as opposed to two for morphing. ] What's on the disk ? 1) MiniMorph v1.1d 2) IFF an ReqTools libraries (with a script to install them). 2) Three IFF pictures for you to experiment with. 4) This documentation. What are MiniMorph requirement ? 1) IFF and ReqTools libraries (supplied) 2) Kickstart 1.3+ 3) As much ram as possible. At least (picture height * picture width * 4) bytes of fast ram + (picture height * picture width * 1.5) bytes of chip ram + some more ram for IFFlib to work [ How does MiniMorph do it? To create a morph/warp you need two images, a source and a destination. These are loaded into the program and are overlayed with a grid. Where the lines of the grid intersect is called a point. One point on one of the grids has a 'sister' point on the other. What the user then does is position these points over specific parts of each image that are common to both. For example, if you were morphing between two faces you would position some points around the nose on the source grid to 'outline' it then you would place the same points around the nose on the destination grid. What you are left with after editing is complete is two grids that define the shape of the source and destination images. When rendering is finally started MiniMorph does the following for each frame : 1) Creates a 'frame' grid from the source and destination grids. The shape of this is a mix of the source and destination grids and depends on what frame is being rendered. Example : First frame - 100% Source/000% Dest Half way frame - 050% Source/050% Dest Last frame - 000% Source/100% Dest 2) Takes the image data from every square of the source grid and maps it into the shape of the same square from the frame grid to form image A. 3) Does the same with the destination grid to form image B 4) Mixes images A+B depending on current frame as above. Example : First frame - 100% image A/000% image B Half way frame - 050% image A/050% image B Last frame - 000% image A/100% image B ] Using MiniMorph : Keys : Space ................. Toggle between source and destination grids. Cursor keys ........... Move the picture (if bigger then screen) F1/F2/F3/F4............ Open/close one of the windows. Edit window : Slider button ......... Set strength in attract/repulse mode. Mode .................. Move/attract/repulse (it's faster for you to try than for me to explain). Show moves ............ Display for each point the move from source to destination position. Press space for normal display. The big slider ........ Move the display window on the pictures.(if the picture is bigger than the screen (use the RESET gadget to change the picture size)) AddMiddlePnt/Add prop pnt : Used when adding a new row/column : In middle mode it is created in the middle of the old points. In proportionnal mode it is created where you clicked. Picture window : Image load ............ Load a picture, it may be truncated to match the actual size. MiniMorph accept any IFF picture and translate it to grey scale if necessary. It don't take care of specials modes (EHB, HAM, HAM8) so the result may be strange. Image clear ........... Clear the picture. Grid load ............. Load a grid, it's scaled to the picture size. Grid save ............. Save the grid. Reset ................. Reset the both grids AND images size to the value indicated. Render window : # of frames ........... The total number of frames including the first one (i.e. the source image (both modes)) and the last one (i.e. the destination image (morph mode)). So should be at least 2. From .................. The first frame to be rendered. It is senseless to 'render' frame 1 except if you want it to be saved with MiniMorph's palette. Start at one (not zero) To .................... The last frame to be rendered. GO .................... Start the rendering. Press ESC to stop. name .................. This is the save name. MiniMorph saves each frame separately. A % in the name will be replaced by the frame number (which is added to the end if none). NIL: means no saving. # of grey ............. Allow you to choose the depth of the outputed pictures. Please note that this has NO effect on the processing speed NOR on the display (Which is always 16 colours so non AGA machine users can use MiniMorph). Misc window : TaskPri ............... Set the task priority. Useful when you want the rendering to be done as a background task while you play a minigame for example (they use less than 10% of a 7MHz 68000) Using the editing grid : Moving a grid point. Click on the point with the left button to pick it up and release button to drop it. Adding/Removing flags. Up to 5 flags may be used to mark points (for example to compare their position on each grids). To do this just click on the point with the RIGHT button. Adding a row to the grid. Move the cursor to the very left edge of the SCREEN (which is not necessary left edge of the picture) between the two grid lines where you wish to add a row and click the right button. Adding a column to the grid. Move the cursor to the very top edge of the screen (same remark) between the two grid lines where you wish to add a column and click the right button. Removing a column or a row. Go to the opposite edge and click right mouse button. The removed row/column is the one that is left/up. [ Things to remember when using MiniMorph 1) When choosing two images to morph between make sure they are of similar composition i.e. if they are faces try to get two that are roughly the same size, brightness and in similar positions within the image. This will produce a better morph. Also cut out both objects being morphed and paste them onto a neutral background. 2) Avoid creating 'bad' squares when editing as these will cause incorrect results. A bad square is defined as : Any point along any of its diagonals lying outsize the area of the square itself. (confused!? - you will be!) 3) Animation frame values start at one, so for a ten frame animation set range from one to ten. 4) When producing a morph or warp animation the first frame will be identical to the source image. It is good idea to set the range start to two and use the source image as the first frame. When morphing the above is true for the last frame as this will be the same as the destination image. So decrease range end by one and use the destination image as the last frame. 5) When outlining an object try to make sure the edge of the object is just inside the lines of the grid, this produces a smoother edge during rendering. 6) The more detailed the grid the better the result. (note - this does NOT (Wow!) slow down the rendering process) ] NOTES : Grids are rescaled while images are just truncated so the examples grid/images will only work in PAL:LORES mode. If you have the registered version you may set the image size to 320*256 then click on the RESET gadget. While rendering (and only while rendering) MiniMorph uses a low to high sorted palette : system requesters may be difficult to read so I decided to suppress them ( don't be afraid it's perfectly legal : Amigados assumes that you have clicked on Cancel ). For example instead of "volume XXX is write protected" (from DOS), you will get a requester "IFF error : can't write file" (from MiniMorph). Rendering speed depend on the pictures colours !! The more dark it is the more fastest it will be rendered. A totally white picture is processed 7-8% faster than a totally black picture. Seems strange isn't it ? :-) The complete version cost US$ 3 (three) (see the address in the program). I don't expect to make money, it's mainly to incite YOU to write me. So please send me bug reports, suggestions, postcard, etc... credits: Lee Wilkie ............... Original ideas Ross Halliday ............ Digitised pictures Christian A. Weber and Nico François ........ Great libraries history: 1.0 : first release 1.1 : 256 grey scales minor bugs added :-( 1.1b : minor bugs fixes 1.1c : screen mode requester (if WB 3.0+) 1.1d : little speed optimisation in some case added the middle/prop gadget added flags