*****************************************************************************
*                                                                           *
* File README.TXT: List of new features and bug correction for Key Factory  *
*                                                                           *
*  This File and all informations contained in this file  are (C) 1995 By   *
*  SERGE GOLUCH and can't be used without the written permission from the   *
*  Author.                                                                  *
*                                                                           *
*****************************************************************************

-----------------------------------------------------------------------------

Current version Level for all Key Factory KXP IPAS programs:

 - Version 1.67 for KFBNC   (KFBNC_I.KXP, main program)

 - Version 1.37 for KFDUP   (KFDUP_I.KXP, Keyframer General Purpose utility,
                             move, span, delete, etc... a range of keys for
                             'scroll box' selected objects) 
 - Version 1.07 for KFPICK  (KFPICK_I.KXP, change object(s) parameters by 
                             picking them)

-----------------------------------------------------------------------------

Introduction:
-------------

This file summarize the work done from version 1.20 of KFBNC to actual
version number of this IPAS (and other components of The Key Factory).
README.TXT have been completely re-worked to provide as much accurate 
and useful information as possible. 

Short installation procedure:
-----------------------------

If you have not *.HLP, *.TUT or *.PRD in this ZIP archive, you just
find the last ZIP archive (KFxxx.ZIP) containing the missing files.

Copy *.KXP in your process path (C:\3DS3\PROCESS usually) 

Copy *.HLP, *.TUT and *.PRD in the 3DS main directory (C:\3DS3 usually)

Copy *.3DS in your mesh directory (C:\3DS3\MESHES usually).

KFBNC can work without *.HLP, *.TUT and *.PRD files, you will just have
some errors messages when trying to use Help, Tutorial and Factory
buttons inside KFBNC.

Minimum configuration needed:
-----------------------------

- 3D Studio version 4.0 

- 486 DX2 66 MHz processor or equivalent.

- 16 MB of main memory.

- All files takes less than 2 MB on hard disk.

- A Super VGA board (either on a VESA local-bus or PCI) with at least
  a 800x600 / 256 colors mode configured for 3DS main screen.

Configuration recommended:
--------------------------

- PENTIUM (TM of INTEL) processor.

- 32 MB of main memory.

- A Super VGA board using VRAM (video RAM) instead of DRAM (either on a VESA 
  local-bus or PCI) with at least a 800x600 / 256 colors mode configured for 
  3DS main screen.

Changes for KFBNC version 1.21:
-------------------------------

  - One nasty 'selector' bug corrected. Now everything should work in
    KFBNC.

  - The help system is now finished and stable, here are the main features:
  
    - 3 files: *.HLP for help, *.TUT for tutorial and GOLUCH.PRD for
      product info (theses are text file with commands inside).
  
    - You can now reproduce the 'button' look and you can use all icons
      defined in the dialog box.

    - Full set of commands (search, goto marker, goto next chapter, etc...)

    - Now there is a small tutorial file with KFBNC (click on 'File' green 
      icon in the dialog box).

  - The KFDUP companion utility for KFBNC is now included in the package
    (with same help system). This utility allow you to create easily 'loop' 
    and 'inverse loop' animations. There are also a bunch of useful commands
    (Set pivot to 0, delete, etc...)

  - The 'Brownian' motion type is included in KFBNC. You can really do nice
    animations with all this stuff !

Changes for KFBNC version 1.30:
-------------------------------

  - This project has now grown to an umbelievable size. Remember, I am the
    only guy to write this code !:
  
    - more than 20.000 lines of source code (> 500KB)
  
    - 34 different dialog boxes !!!
  
  - complete re-design of the dialogs boxes. Even with > 200 parameters,
    Key Factory has the nicest and most user-friendly 'look and feel' ever 
    seen in this market. Here are ALL the news features found in other
    products (IPAS 3 style, Icons, fast change numerics buttons, etc...)
    plus more: integrated help system, complete selection read and write,
    sub-dialog boxes, etc... Even a small C.D. game is included !
    
  - Read and Write of Set parameter to all objects. This should work
    with other products using APPDATA hooks and YOST's 'law' for using
    them.

  - New dialog box 'scroller' for object selection (you can pick, choose 
    in a list, sort the list, find strings, etc...)

  - Introduction of fast change numerics buttons for most parameters.

  - Each 'motion' parameter is found on a separate dialog box, much
    more self-explanatory.

  - New 'Helix' motion type.

  - All effects (C.D., gravity, wind, start frame, etc...) can be easily
    activated and de-activated in the set dialog box.

  - New iconic selection of separate dialog boxes for gravity, wind,
    select and box (main screen is ready for a future render window).

  - Each set have now is elasticity, start C.D. frame and end C.D. frame
    parameters. Start Collision Detection for bounding box was removed.

  - Funny small Collision Detection 2D demo on main screen (moving balls)
 
  - As this is a major release, there should be plenty of little bugs
    added (type error, mainly). This can be quickly updated with the help of
    beta-testers. Sorry !

  - HLP file is mostly out-of-date. Need to be re-worked.

Changes for KFBNC version 1.31:
-------------------------------

  - new look of help dialog box. now the 'close' button is at the same
    place in dialog box than for the others dialog boxes.
  
  - two new icons in help dialog box.
  
  - strange '\\' string in help path removed.

  - Reworked the help file. 
  
  - fast change numeric buttons added in each of the motion type dialog
    boxes.

  - Axis selection now added in Helix motion type.

  - Added Read / Write buttons in main screen.

  - Added warning dialog boxes to all R/W operations.

  - Added a reset button in main screen. This reset all parameters and
    set selection.

  - Now all default values should be usable (no more 0 prob values for
    brownian motion type and 0 scale values for explode motion type).

  - Somme bugs corrected in handling pivot and/or vector values in motion
    operations.

  - Gravity and Wind values can be negative with button change.

Changes for KFDUP version 1.30:
--------------------------------

  - new help system now integrated.

  - new look for main dialog box. Same design as for KFBNC.
  
Changes for KFBNC version 1.32:
--------------------------------

  - Some help system enhancements and bugs corrections.

  - Adding Fetch & Hold and Hold buttons in main screen. This is working 
    only with 3DS 4.0. 
    
    With Fetch & Hold:
      
      before any Key modification, we load the previously Fetched Scene 
      and re-save it, allowing a fast 'test and try' cycle.
    
    With Hold: 
      
      before any key modification, the current scene is put on 'hold'. You
      can recall it from 'Fetch' in Keyframer.

  - Now you can 'Set Mass' in set A/B/C/D dialog boxes. Collision Detection
    engine updated to support this feature.

  - Now the mesh kiss factor is 2 times the kiss factor found in main
    screen (coherent with sphere and box kiss factor). As this is not
    really a bug, this should help to have less 'bad hit' with default
    kiss factor. But nobody's perfect ! A little tuning from the user
    is best than any 'brute force' accuracy increase.

  - Some errors messages enhanced.

  - Path routines modified, with release 3.00 and upper the help system
    use the GFX_HOME_PATH value as stated in IPAS35 source files. Before
    it was using MLI path backward one step to found the main 3DS directory.

  - Added an 'auto' button in set parameters windows (main screen) default
    is: ON ! This allow you to read automatically any set parameters before
    entering the IPAS (clever, isn't it ?). At this time the set parameters
    are for each object:

      - Set A B C D or none
       
      - Mass
       
      - some empty space for future update.

  - Cleaned the code in selection dialog box. 

  - X Z Y changed to X Y Z in all dialog boxes. Vector, buttons, all...
    I hope I have no added type errors... We'll see !

  - Added a Zero button in linear motion type setup (to set speed and
    accel to 0 in a mouse click)

  - Enhanced the demo-TV screen (main dialog box). The demo start
    conditions should change from time to time. Enjoy !

  - Cleaned some confirmation dialog boxes. YES and NO should be always
    to the same place.

  - Enhanced the Gravity and Wind dialog boxes: now RIGHT, LEFT, UP, DOWN,
    etc... replace the old X Z Y buttons and you can't have a negative
    value ! Just choose the correct direction !

  - Now the demo screen is enhanced: 3D effects with balls, multiple
    collisions patterns, etc... This is now an accurate demonstration of
    what KFBNC can do ! Nice !

  - 'Status' and 'Demo' buttons added on main dialog box.

  - You have an indication of the speed of your screen in the upper right
    corner of main screen:
      
      Fast Screen: 3DS 4.0 with Vibrant VLM 1.01 and up
      
      Slow Screen: all the others... please upgrade !

  - Now all global C.D. settings are in a separate dialog box.
    (kiss factor, accuracy, etc...)

  - Added a VERY IMPORTANT FEATURE in Collide dialog box: Embrace
    settings. This should help to avoid the Embrace or Oscillating collisions
    that can be found in some cases. This use memory mostly than speed.
    Untested at this time but should work.

  - As a result of all theses changements, the help file once again is 
    out of date...

Changes for KFDUP version 1.31:
-------------------------------

  - Only recompiled to include the same help system than for KFBNC 1.32.

Changes for KFBNC version 1.33:
-------------------------------

  - Small init bug corrected in Orbit motion setup.

  - One big improvement in Linear and Brownian motion setup dialog boxes:
    now I.V.S. (Interactive Vector Setting) implemented. You have 3
    views (Top, Front, Left). You can change the vector values by typing
    a number (don't forget to hit 'R' button to see the 3 views updated
    after this) or click in any view to change visually the vector
    direction (use TAB key as in a move operation in 3DS, hor., vert. and
    omni.) This is far more easy now to see the vector direction !

  - The selection process is now much simpler than before: you must now
    select all objects in select dialog box (the 'pick' feature was removed,
    see KFPICK IPAS if you want to use it).

  - 'Other' parameters changed in select dialog box: now, AFTER you have 
    choosed a bounding box in bounds dialog box, you MUST click on REFRESH 
    to obtain that all un-selected objects EXACTLY inside the bounding box 
    get selected to current set.

  - The status screen in main dialog box now display the number of selected
    objects in each set (click on STATUS to refresh values).

New IPAS! KFPICK version 1.00:
------------------------------

  - This small IPAS allow you to quickly change set, mass and elasticity of
    any object by picking it in the Keyframer views. Don't forget to save
    your file after doing any change !

Changes for KFBNC version 1.34:
-------------------------------

  - No more READ / WRITE / AUTO buttons ! The following operations are
    always performed:

      - Read all set parameters from 3DS file when starting the IPAS.

      - Write of all set parameters to all objects when you click on
        OK of select dialog box, set gravity dialog box and set
        elasticity dialog box

    This is much simpler to use. But you still need to save your file
    from Keyframer menu to save the set parameters changes. If you
    want to use KFBNC only to change parameters, don't click on proceed
    and... Save your file !

  - Set elasticity dialog box added. You can set elasticity for each
    object now. Of course this is saved with set/mass parameters now !

  - The init of demo screen (moving balls) is now much faster

  - Some dialog box bugs corrected

  - The select dialog box is now much simpler: there is only one selector
    string that will set all matching names to the current set when you
    hit refresh.

  - Now the IPAS should use far less memory for most tasks (the status
    screen 'memory' display is accurate) :
  
     - Now all the 'selected' objects tables are exactly the size of
       the number of selected objects. If you have 10 selected objects in
       a 100 object scene, most of the tables will have 10 items instead
       of 100.  This will save plenty of memory.

     - The embrace table used to check embrace conditions is now 8 times
       smaller. The formula you can use to estimate memory needs for this
       feature is: (total select. obj. * total select. obj.) / 8

     - The hide table is now splitted from main table: if you don't use
       hide effects, you will save memory (5 bytes per selected object)

  - View object render window now implemented. More to come, but it works
    and it's nice to see.

Changes for KFBNC version 1.35 
------------------------------

  - Render window is now much more useful, you can do the following
    functions:

      - view any object
      
      - view a complete set of objects
      
      - zoom, pan and rotate the view
      
      - change render mode (flat/wire/gouraud)
      
      - when in view set mode, you can click in render window to
        refresh it (useful if you made changes in select, this is
        not automatic as it can take a long time do refresh if you have
        a lot of faces and a slow computer)

    beware of this: with a huge number of vertices/faces and a slow
    computer, interactive zoom, pan and rotate becomes rapidly boring.
    Must be enhanced in future KFBNC releases.

  - Now the start frame value can be change for each object.
    There is a separate 'scroll' dialog box for this. The set
    dialog box was modified (simplified) accordingly.
    This is really a key feature for doing dynamic/particle
    system animations. Here is the list of all objects parameters,
    unique for each object, saved when you save the 3DS file after
    KFBNCing it (or by using KFPICK):

       - Set A B C D or none
       - Mass         (float   useful range 0.0001 - 9999999.9)
       - Elasticity   (float   useful range 0.0 - 1.0)
       - Start frame  (integer useful range 1-9999)

  - Filtering input files in help system (32 >= allowed > 127).

  - New rotation axis vector input in set dialog boxes. Concerning
    use of this new feature and 'ROLL' type of rotation. To make
    an accurate simulation of Billiard, use spheres, Dynamic versus
    Dynamic hits and ROLL type of rotation. Choose the good rotation
    axis (the 3-views axis will define the plane where the rotation axis 
    perpendicular to the linear move vector will be found). Need more
    explanation and some testing but should work.

    The AROLL type of rotation is the same than ROLL excepted that the
    axis of rotation is fixed by 3-views values. This can be useful, for
    example, if you make a train and want all wheels to roll with the
    same axis or if you make a ball gearing and want all balls to roll
    with the same axis.

  - When you hit a key during calculation process, the process
    is interrupted by a 'continue YES/NO' dialog box. No undo possible
    excepted the automatic 'fetch and hold' or 'hold' features.

  - Some button text changes in bound dialog box. More easy to
    understand.

  - No more first BETA alert message. Only one alert message left in
    KFBNC. I'll never delete this last alert message, so don't ask
    for it !

  - Some code cleaning in calling the 4 set dialog boxes. I have
    done this after seeing a strange 'hang' bug (dialog boxes IPAS
    routines seems to be very sensitive). Nobody's perfect.

  - Changes in C.D. routines for Dynamic versus Static hits: now
    instead of inverting the dynamic object vector (Math joke:
    I was angry against dot vector products) you have a nice reflected 
    vector that allow you to do any Tennis / Billiard / etc...
    simulations.

  - Changes in C.D. routines for Dynamic versus Dynamic hits: closer than
    before of reality. No more simple 'vector swap', complete calculation
    of composed vectors and kinetic energy. This is really a tremendous
    improvement.

  - Changes in Linear move dialog box: you can change the frame 0 position
    of all objects of the set: origin for (0,0,0), object for picked
    object position or no change. If you choose object and don't pick or
    type an object, you will have an error message at proceed time. One
    interesting example can be this: a machine gun with all bullets at
    EXACTLY the same position at frame 0, a different start frame for
    each bullet and a linear move in direction of target (gravity added ?)
    Beware: this change 3D editor object position as this is frame 0
    modification. This will be implemented in other move type as needed
    in future release.

  - Feature still to be done in C.D. engine: tumble around of pivot when
    hitted by another object... In next release ? This feature, at this
    time, can be mimicked with HIT rotation and angle / end angle values.

  - Now the code size have reached 200 KB. As this is done with WATCOM and
    without any fake internal data tables or too much text strings, KFBNC 
    is the biggest IPAS ever made in the world !

Changes for KFPICK version 1.01
-------------------------------

  - Start frame value implemented in dialog box.
  
  - filtering input files in help system (32 >= allowed > 127).

  - no more first alert message.

Changes for KFDUP version 1.32
------------------------------

  - Filtering input files in help system (32 >= allowed > 127).
  
  - No more first alert message.

Changes for KFBNC version 1.36
------------------------------

  - By popular demand, now the wind axis setting is a full 3-view complete
    setting. Wind value can be negative or positive.

  - Frame 0 position settings added in explode move type. See explanation
    done in 1.35 for linear move type.

  - Negative acceleration checked. Now, in linear move type you can have
    a negative acceleration that will slow down the speed of the objects.
    Can't be used in previous move type, sorry !

  - First try to implement the tumble feature. The tumble on/off button is
    in each set screen, C.D. box. Tumble is on by default. Now when the
    object is hitted by another object, it should tumble around its pivot
    with the appropriate rotation axis and value. This override (AFTER hit)
    any rotation setting. Speed and rotation values are approximated
    at this time. 

  - In main screen, now Rot is splitted in head/pitch/bank 3-View for
    render window. Much nicer !

  - Now, if you have choosed status, when you quit and go again in KFBNC
    you will still have status screen.

  - Motion type now in main status screen.

  - Once again Collision Detection routines were improved. Very close to 
    final now ! Now Box / Sphere should be 100 % accurate, Mesh is 
    approximated to a good level for convex objects.

  - Check bad collision routine simplified. Similar to Check embrace
    now (OK or Stop Check only in dialog box).

  - Some corrections made to KFBNC.HLP. Not enough...

  - Demo version made for SCOT. Uploaded as a separate file.

  - Relative kiss factor feature removed.

  - End angle feature removed.

Changes for KFBNC version 1.37
------------------------------

  - Now there is a 'other objects inside box' feature in select menu.
    You can select all objects inside a defined box.

  - No more bounds menu settings. You can do it exactly the same
    with 6 flats boxes moved to form a cube ! Of course you are not
    limited to a cube...

  - Reset parameter button enhanced. You have choice now between ALL,
    SET, OBJECT and CANCEL.
      
    - ALL will reset everything.
      
    - SET will reset all parameters not saved along with each object.
      
    - OBJECT will reset mass, elas, start frame for all objects.
      Beware ! If you save the file, all reset parameters will be
      also saved.
  
  - Many changes in main dialog box and set A/B/C/D dialog boxes: all 
    icons gone from main to set A/B/C/D in 'globals' sub-window. Factory 
    info gone in bottom of main and set A/B/C/D. Render tools are 
    re-organized in main menu. Now all screen buttons are larger and in 
    top of each screen. Hope this will help all users to understand more 
    quickly how to make outstanding animations !

Changes for KFDUP version 1.33
------------------------------

  - Now you have a complete scroll selection for nodes (similar to select
    dialog box inside KFBNC).

Changes for KFBNC version 1.38
------------------------------

  - Removed a nasty bug: now you can have an object with bad X Y Z position 
    keys (NAN instead of a valid float when you use track/key in keyframer)
    KFBNC will print an error message without any crash. If you have a
    bad position in an object, you must erase all positions keys of this
    object to get this cleared. This should clear Domain errors on SQRT
    and ACOS math functions (seen only on CIRRUS VGA's, WESTERN
    DIGITAL VGA's and related).

  - Removed a bug in tumble feature (bad zero rotation key generation).

Changes for KFBNC version 1.39
------------------------------

  - Little bug removed from Sphere C.D. routines.

  - When, unfortunately, there is an error in FP calculations, now you
    should have a complete error window indicating the type of error,
    the function and arguments used. This will help for debugging.

  - Render view features enhanced: at proceed time you can have an
    animated view of the objects. Here are the commands in main screen:

    show when proceed NOTHING: you will have a blank screen (only
    numbers will be updated) hit ESC to stop. As fast as possible.
    No use of anything in view.

    show when proceed OBJECT: choose an object. You will see only the
    object

    show when proceed ALL: you will see set A to D objects.

    Trigger for show HIT: for OBJECT, render done at each C.D. hit of this 
    object, for ALL render done at each C.D. hit of any objects in ABCD

    Trigger for show FRAME: one render for each frame.

    While in view screen:

      - you can choose render mode, rotation, etc...
      
      - NEXT: (CR can be used) goto to next render (see trigger)
      
      - AUTO: no more use of NEXT, can't change anything in view.
      
      - NO VIEW: no more render. you can set AUTO if you want.
      
      - CANCEL: stop this ! bail out to 3DS. In any AUTO mode
        you can use ESC key to do this.

    Beware: with a lot of faces/vertex this render view can take a long
    time... and use a lot of memory... Use show NOTHING !


  - Some design changes in main and set screen.

  - All 3 views vector settings where corrected to follow exactly 3DS
    Top/Front/Left views.

  - Now when you do reset parameters, last type of screen is preserved.

Changes for KFBNC version 1.40
------------------------------

  - bug corrected in numbering the objects in each set. Total number
    of object in each set if OK now.

  - In linear move type, estimated path length added. Click on number
    to update after changing speed, accel, etc... This is a rough
    estimation of path length at max frame with speed and accel params.
    Just to see how you can obtain crazy values with big accel values.

  - small bug in main DB: now each time you click on Object, you can choose
    an object !

  - FP error window enhanced: now you have much more parameters displayed
    allowing a more precise debugging.

  - 3DS functions calls changes. This should improve detection of bad
    objects / parameters instead of FP error window.

  - Verification of all object parameters while loading scene.

  - Hidden objects: now you will have a little 'H' for Hidden in front of 
    each object name in set / global selection scrolling window. If there
    is a 'E' instead, your object have some problems: delete it !

  - More parameters for render view in main screen. You can choose sets
    when ALL is used and you can choose to show or not show hidden objects.

  - One status string implemented in render view:

      - Working: KFBNC is calculating position, rotation, etc...
      - Rendering: 
      - Waiting: for a key (next). You can use dialog box buttons.

Changes for KFBNC version 1.41
------------------------------

  - Added a 'speed limit' feature in set A/B/C/D dialog boxes:

    - toggled on/off with 'Speed Lim' effect button
    
    - start effect when frame >= Frame param
    
    - will multiply current speed (linear/angular) with mul param for
      each frame. If param is 0.99 you will slow speed by 1 per cent, 
      for example
    
    - the speed will always be within min and max param
    
    - doesn't work with previous move type

  - Added some fancy to render / proceed view: 3 little 3D icons instead
    of buttons for choosing rendering mode ! Working / Rendering / Waiting 
    messages are now made with 3D text ! Enjoy !

  - One bug corrected (strange things when there is a 0 0 0 vector, the
    previous move type with objects that don't move wasn't working
    properly).

  - Another bug corrected in mesh object type C.D. routines.

  - Enhanced mesh C.D. routines: better direction vector when hit.

Changes for KFPICK version 1.02
-------------------------------

    - Recompiled to remove beta message.

Changes for KFBNC version 1.42
------------------------------

  *** MOST IMPORTANT RELEASE SINCE 1.20 ***

  - Lot of code cleaning in C.D. section.

  - Now all position keys are created with cont = 0
  
  - New C.D. object type: FACE. This than deal with ANY object of any
    shape including CONCAVE. Far most calculations to do than any other
    type but great fun !
  
  - C.D. accel button added: this work with MESH and FACE objects. Instead
    of calc MESH/FACE type for each pos you can calc first with SPHERE/BOX
    and if hit check with MESH/FACE to go deeper with enhanced accuracy.
    This saves A LOT OF TIME !

  - You can save set parameters to 3DS file (main screen)
  
  - Now, with 3DS 4.0 you will be warmed if you want to quit while not 
    saving changes made in APPDATA (set and object).
  
  - Quick how-to animate beans in a closed bottle:

      - use FACE for bottle, STATIC with LINEAR move type speed 0
      
      - put all beans inside the bottle (no interpenetration of any
        objects, please !). The beans are far smaller than bottle.
      
      - use appropriate speed for beans (not too fast).
      
      - use FACE for beans.
      
      - use C.D. accel set to NONE for all objects. 
      
      - be VERY careful using global C.D. settings:
          - FACE needs a higher kiss than any other type. 
          - SEE HIT is very hard to use.
      
      - proceed !
      
      - If something wrong (bad hit, embrace, etc...) re-do while
        changing global C.D. settings (bigger kiss ?)

I Can't stress this enough: is something is wrong (embrace, bad vector
after hit, objects stucks, etc...) YOU HAVE TO CHANGE GLOBAL COLLISION
DETECTION PARAMETERS ! There are some rules and most 'how-to' experience 
to have.

  - Don't start with objects ALREADY hitting.

  - Increase kiss value ('Collide' globals in set A/B/C/D dialog boxes).
  
  - Lower speed.
  
  - Avoid 'See contact when hit' ('Collide' globals in set A/B/C/D dialog 
    boxes).
  
  - Change mass.
  
  - Use 'Avoid Embrace' ('Collide' globals in set A/B/C/D dialog boxes).
  
  - Change accuracy ('Collide' globals in set A/B/C/D dialog boxes).
  
  - Increase separation speed while using 'Avoid Embrace' ('Collide' globals 
    in set A/B/C/D dialog boxes).  

  - Don't expect miracles from real world !

Changes for KFBNC version 1.43
------------------------------

  - Render window bug removed (ZOOM, PAN, etc... crashed in prev version)
  
  - Slightly improved speed in MESH / FACE C.D.
  
  - Debug message removed (when used with 3DS 3.0)
  
  - Now when you use Select in a set screen, you will have pick set equal
    to the current set
  
  - In render window, you have now the frame.step printed instead of
    only the frame.
  
  - In Set A/B/C/C dialog boxes, Objects window, 'Elasticity' dialog box:

     - now you can set to 1.0 or 0.0 all objects. 
     
     - you have 5 buttons to quickly define an elasicty value with an
       associated name (plumb, rubber, etc...). More easy to understand !
  
  - 'Face' object Collision Detection routine fully debugged now. Now you 
    can put any object INSIDE another object with proper settings.
    In this case you should set Acceleration button to 'None'.
  
  - General re-design of all dialog boxes, some settings not useful
    were removed (mainly for move type settings).
  
  - The error 'no object selected' now will keep you inside KFBNC
    instead of just kicking you out.
  
  - Cleaning code in the parameters settings area.
  
  - Now kiss factor can be set only for MESH and FACE. This is on the
    way to simplifly this stuff as this is not always easy to learn.
    SPHERE and BOX are 100% accurate without any kiss factor.
  
  - Default parameters are changed for Collision Detection globals: now 
    'See contact when hit' is off, 'Avoid embrace' is on, kiss value is 
    equal to 5.0. This should allow more 'off the shelf' MESH and FACE 
    Collision Detection scenes to be calculated without any change in 
    theses parameters.
  
  - Important Dialog Box bug removed: before, when you typed a number
    greater than 10 caracters in size, you had problems...
  
  - Somme buttons added in mass setting dialog box.
  
  - Maximum and minimum value checking for mass, elasicity and start frame.

Changes for KFDUP version 1.35
------------------------------

  - Dialog Box string length bug removed.

Changes for KFPICK version 1.03
-------------------------------

  - Dialog box string length bug removed.

  - Now elasicity value can't be greater than 2.0.

Changes for KFBNC version 1.44
------------------------------

  - Re-worked render window and view dialog box routines.

  - In the render window of the view dialog box, one bug removed: when you 
    changed render mode, the objects came with ugly colors.

  - much more interesting info in view screen: 
      - If SHOW, work + render time is displayed for each frame
      - all type of tests stats displayed
  
  - In main dialog box (green area) you have plenty of new stuff about
    view dialog box (seen after hittind 'Proceed' and confirmation dialog
    box):
      
      - Hit 'SHOW WHEN PROCEED' to have render window. 
      
      - You have the number of objects and total number of vertices
        to be rendered.
      
      - Hit 'Select' to have a full scroll select dialog box to choose 
        the objects you want to render.
      
      - Most of Object viewing buttons are self-explanatory, similar
        to select set window.
      
      - You can choose between MESH and BOUND viewing. BOUND will show
        the bounding box of the object (to save vertices and rendering
        time).
      
      - All Object viewing NO/MESH/BOUND informations are saved in object 
        APPDATA. You must save the 3DS file to obtain this, as usual.
  
  - WAITING 3D message removed, now user is informed that he have to
    type RETURN to continue.
  
  - Rendering is now slightly faster (view dialog box).
  
  - 'Mesh' object type removed from set A/B/C/D dialog boxes.
  
  - 'Convex' acceleration method added in set A/B/C/D dialog boxes. If the 
    object(s) if of convex  shape, this can (greatly) accelerate collision 
    detection tests.
  
  - 'Tumble' feature enhanced (not 100% satisfactory at this time, but a big 
    step ahead).
  
  - Accuracy ('Collide' button, global window in set A/B/C/D dialog boxes)  
    now limited and checked (1 to 1000 integer values only).
  
  - One bug removed in 'Previous' motion type: bad previous motion 
    interpolation.

Changes for KFBNC version 1.45
------------------------------

  - more buttons added in view dialog box:
     - Fit: will center view in window
     - Z+ / Z-: will zoom plus/minus
     - 8 arrows icons: will move in the direction of the arrow
    
    Theses buttons can replace interactive zoom / pan to avoid waiting
    for redraw when you have a huge number of vertices to render. In fact
    they are more accurate and useful than zoom / pan when rendering
    speed is ugly.

  - In view dialog box, with current frame number you have the total 
    number of frames to be calculated.

  - Now the color of 'Next' (view dialog box) and 'Proceed' (main and
    set A/B/C/D dialog boxes) buttons is changed to blue, just to let the 
    user know what he have to use to go forward.

  - As rendering speed is VERY slow with 3DS 3.0 and old VLM, I have added
    a 'No fancy' button (in main and view dialog boxes) that will avoid any 
    unecessary render at proceed time. This button is automatically set on 
    if 3DS is not 4.0.

  - Added face count in main dialog box.

  - corrected some possible bugs while hitting buttons of view dialog box.

  - Introducing 'Full View' and 'Half View' concept in view dialog box and
    main dialog box: now, with 'Half View' and 'No fancy', you can obtain 
    near real-time rendering with a 486DX2 66 computer and not too much 
    vertices.

  - Added more info in status window (view dialog box).

********************************************************************
*                                                                  *
* Changes for KFDEMO                                               *
* ------------------                                               *
* Now KFDEMO will be recompiled (almost) with each new version.    *
* Instead of just bail out at proceed time, now the demo version   *
* is able to let the user play with the render window. No change   *
* is made in the Keyframer for demo version (as previous demo).    *
*                                                                  *
********************************************************************

Changes for KFBNC version 1.46
------------------------------

  - Now you can SELECT objects to view, change HIDDEN switch, screen size, 
    trigger mode while in view dialog box. This make the render window a 
    very powerful tool for viewing and debugging animations.

  - Now you have a new 'tape deck' feature that let you do the following 
    things:
      
      - recording rendered images
      - replaying the recorded images
      - a complete set of buttons to play with !

    To use it, you MUST switch on the Record button in main dialog box
    before hitting Proceed, THEN choose the objects you want to render.
    Of course, you can't have 'record' set on with 'no view' (automatic) !

    When 'record' mode is on, after hitting 'proceed' and while in view 
    dialog box, you can't change the screen size (error message).

    When 'record' is off, when you try to use any button of the 'tape deck'
    window in view dialog box, you will have an error message. Also those
    buttons are greyed.

    This feature eat some of you free RAM memory (to have the total memory
    needed you multiply the total number of frames by the size of each
    screen, one byte used per pixel).

    To make efficient use of Pan/Zoom/Rotate features with 'record' mode
    set on, you must use Pan/Zoom/Rotate only in frame 1 and do not change
    anything after. If you change anything after frame 1, you can obtain
    a strange animation when playing it... But with some experience you
    can learn to use it correctly... 

  - When the 'Auto' button is switched on in view dialog box, you have to 
    hit 'Next' button at the last frame rendered to quit KFBNC. You can view 
    in this mode the ending statistics (number of collisions, number of 
    tests, etc...) and replay the whole animation if recorded.

  - Bug corrected in random linear motion type code (the speed was 
    always 0 !).

  - New 'Dump' button in main dialog box: this will let you (after choosing 
    a file name) print all set and globals parameters information in
    a text file.

Changes for KFBNC version 1.47
------------------------------

  - some changes in view dialog box. 

  - enhanced 'tape deck' code.

  - now, for render, you can choose between 3 screen sizes:

     - Full (398 x 398)
     - Half (280 x 280)
     - Quar (200 x 200)

    Typically you can use Full and Half rendering screen size for
    Pentium (TM of INTEL) class computers with PCI VRAM SVGA and
    Quar rendering screen size for 486 DX2 66 MHz class computers
    with DRAM SVGA on VESA local bus.

  - new 'end' button in tape deck window (view dialog box). 

  - new 'play' and 'step' buttons in tape deck window (view dialog box).

  - you can specify a playing speed for tape deck (full, 30 FPS, 25 FPS, 
    20 FPS, 15 FPS, 5 FPS). If, when you play the sequence, speed is too 
    high for your computer, speed will be written in red. I reach FPS with 
    FULL on my P90 / MATROX, just near the limit !

  - partial re-design of set A/B/C/D dialog boxes. 
  
  - now you have a little window in set A/B/C/D dialog boxes that allow 
    you just to see the name of all objects in the current set. Handy !

  - motion type (in set A/B/C/D dialog boxes) is now a push button scroll 
    (PSB in short) with a separate setup button. Can add more text for each 
    motion type and this will allow me to put an unlimited number of
    motions types...

  - object type (collision detection effect in set A/B/C/D dialog boxes) is 
    now a PSB. Yes, I love theses PSB... They take no room in dialog boxes, 
    they are handy and easy to program !

  - 'Box' object type (collision detection effect in set A/B/C/D dialog 
    boxes) changed to 'Bounding Box'. Just to let the user know that 
    collision detection tests will done with bounding boxes (boxes made with
    min max X Y Z, see QAD.TXT for definition)... No rotation please !

  - 'no fancy' set up (main dialog box and view dialog box) is saved with 
    other parameters now. Once you have checked this 'off', it should no go 
    to 'on' without you ask for it...

Changes for KFBNC version 1.48
------------------------------

  - Changed 'Face' object type (collision detection effect in set A/B/C/D 
    dialog boxes) to 'Vertex to Face'. This seems to me easy to understand.
    See definition in QAD.TXT file.

  - Added small 'info only' dialog box for zero speed motion setup. Motion
    setup is in set A/B/C/D dialog boxes.

  - cleaned linear motion setup dialog box.

  - cleaned random linear setup dialog box. Pivot parameter removed (not
    useful in this case).

  - cleaned explode motion setup dialog box. Added 'explode - implode'
    explanations. More easy to undestand now. Added 'estimated path' also.

  - Now in linear, random linear, explode motion type setup you have PSB 
    selection for speed type.

  - 'Relative mult/div' speed types added to linear, random linear, explode 
    motion types (in their respective setup dialog boxes). If used, the 
    speed will be relative to sphere diameter (e.g. object size) of current 
    object. See QAD.TXT for Sphere definition.
    
    RELATIVE MULTIPLY:

    If diameter of object is 100 and speed is 0.5 with 'relative multiply' 
    type of speed selected, the object will move of 50 world units per frame. Each object of the set will have 
    Each object will have a different speed related to its size (bigger move 
    faster). BEWARE: SPEED VALUE IS USUALLY LOW. 
    
    RELATIVE DIVIDE:

    If diameter of object is 100 and speed is 1000 with 'relative divide' 
    type of speed selected the object will move of 10 world units per frame.
    Each object will have a different speed related to its size (smaller
    move faster). BEWARE: SPEED VALUE IS USUALLY HIGH.

  - Speed of Face collision detection method is greater: faces info are
    loaded at the start of the IPAS (need more RAM) instead of each time
    needed...
  
  - Complete re-design of global collide dialog box. Kiss changed to
    Bounding Box size... Accuracy now let the user now that this is
    Step Per Frame number...
  
  - New method for Face collision detection added: 'Edge to Face'. There is
    a hit each time an edge (3 edges per face, all 3 used even is there are
    some invisible edges) cross a face. This Method doesn't need any 'kiss'
    factor. You have now Sphere, Bounding Box, Vertex fo Face and Edge to 
    Face objects types in set A/B/C/D dialog boxes. This method is slower
    than Vertex to Face Method and the collision point calculation is 
    approximate... (see QAD.TXT for more info). Of course this method is 
    working for concave objects...
    
  - About Edge to Face: this method is not 100% tuned at this time. I Hope 
    I can find a way to obtain more speed in next release(s)...
    Oops ! Find at least a way to SPEEEEEED up ! Main problem with this
    method is that the collision point and the normal vector to collision
    point are approximate. For everything else, this seems to be very
    efficient now (20 hours of work on this piece of code).
    
  - New 'Box versus Face' collision detection behaviour: When one of the
    object is 'Bounding Box' and the other is 'Face ' (either Edge or
    Vertex to face), you will have a hit each time the object bounding
    box is crossing one of the 'face' object face bounding box. As not
    as accurate as a plain face detection, this is a speedy method for
    convex face object containing small bounding box objects (that's just 
    an example, I'm sure you can find other ways to use this goodie).

  - I prefer to let the user choose the method he want than to have
    choosen one method or to have an 'hard' automatic choice...

  - One bug corrected: when you loaded a file with some objects set
    to view Mesh or Bound, the dialog box values weren't updated.

  - Enhanced memory status in status window / main dialog box: now
    you have memory needed by static tables, objects tables, tape
    deck feature when you hit status button.

  - Some minor dialog box changes in elaticity and mass settings:
    the most used button is bigger just to let the user know where
    he have to click, a new 'plastic' elasticity setting button...

  - C.D. Accel. removed in set A/B/C/D dialog boxes, you have only
    to choose if the object is convex or not. Remember that an
    object containing others objects isn't convex even if its shape
    is convex. See QAD.TXT for examples of convex shapes. 
    
  - In global collision dialog box you have a button that will allow
    to test first the biggest object in all faces methods. This can
    be helpful to obtain quickly good collision normals. 'The ball will
    rebound on the table' instead of 'the table will hit the ball'...

  - 'avoid embrace' can be selected on a set basis now (found in
    set A/B/C/D dialog box instead of global collision settings).

  - 'oscillating' bug now removed for gravity setup. You can obtain
    strange things with 'avoid embrace' set to on, but if set to off,
    all is OK.

  - 'global wind' code changed for more accuracy. Untested.

  - 'smart buttons' changes in set A/B/C/D dialog boxes, now when
    you hit a button, some others buttons can go to gray it they
    are no more available with the new settings. For example, 'tumble'
    can be used only with 'dynamic', so when 'dynamic' is off, 'tumble'
    is greyed and will throw in your face a polite error message. This
    was done for collision and rotation windows.

  - One thing about 'previous motion type' and 'tumble', at this
    moment KFBNC can't use rotation made before in Keyframer, so all
    rotation is erased if 'tumble' is used. To obtain a rotation, use
    the rotation window in set A/B/C/D dialog boxes.

Changes for KFBNC version 1.49
------------------------------

  - One possible bug corrected in motion setup dialog boxes.

  - In scale effect dialog box, you have now 6 fast numerics buttons for
    all scale X Y Z values.

  - In all motion setup dialog box using direction vectors: now you have
    a fast numeric button with each coordinate value.

  - cleaning code in all motion setup dialog boxes, some changes in the
    design of theses dialog boxes...

  - now in gravity and wind setup, you have a fast numeric button with 
    each coordinate value.

  - one bug corrected in render dialog box: previously the 'RESET' button
    was doing exactly... nothing !

  - cleaning code in render dialog box: now all buttons that can't be used
    (text of icon buttons) will be used (new smart interface rules).
    Some bugs corrected also.

  - In main dialog box: now some buttons related to show will use
    new smart interface rules (grayed if they can't be used). The only
    exception is 'RECORD', when you hit this one, if 'no view' was
    selected, you will have automatic selection of 'full view'.

  - Now when you hit proceed with any view mode activated and nothing to
    show, you will have an error message and... back in KFBNC to let you
    change this.

  - new features for all fast numeric buttons (see QAD.TXT).

  - for gravity, wind, linear, random linear and brownian dialog boxes
    you have now a very nice new render window. In case of single vector
    you will have this vector rendered in 3D, in case of random vectors
    you will have 100 vectors sampled and rendered. For each function
    changing coordinates or mode, you have to click on 'Refresh' or on the
    rendered view by itself to obtain the updated render. Of course you
    have plenty of buttons to play with...

  - For all dialog boxes: now OK button is in white color (more easy to
    see when you have stacked dialog boxes).

  - Set dialog box: Proceed and other related buttons are grayed when you
    are in a secondary dialog box. 

  - All stars removed from dialog boxes (old fashined look ?).

  - 'Plumb' changed to 'Lead' in elasticity Dialog Box.

  - Now, when using tape deck, you can stop loop or play functions by
    hitting any key or any mouse button.

  - One bug corrected in handling all Pick / Clear objects selection.
    This affect all motion dialog box, select dialog box, everywhere
    you can pick an object.

  - Now selector and box strings are saved along with other parameters.
    (selection dialog boxes).

  - 'No fancy' button removed. 3D 'RENDER' and 'WORK' replaced by messages
    in status windows of render dialog box.

  - 'Check bad collision' button removed in global collision detection
    dialog box.

  - 'kiss' factor removed in global collision detection dialog box.

  - 'Vertex to face' C.D. method replaced by 'Fast moving vertex' method.
    This mean that one big part of the collision detection engine has
    been rewritten and need some testing. Basically, the 'Fast moving
    vertex' method is similar to 'vertex to face' excepted for a few
    features:

      - Can't detect C.D. for objects that don't move.

      - Can't miss a C.D. hit for fast moving objects (excepted for
        'cylinder hit by middle' case).
      
      - still need a step value related to the accuracy you want
        in the motion keys, but the step value isn't related to
        any C.D. sampling as for all C.D. other methods. In other terms,
        for 'Edge to Face' if the object is moving faster than one
        diameter per step, you can have 'bad C.D. miss' against a very
        thin second object. Nothing like this with 'Fast moving vertex',
        the only bad miss you can obtain is related to the 'cylinder
        hit by middle' case (no vertex crossing a face).
   
   - pre-defined values buttons in gravity, wind, linear dialog boxes.
     Only for lazy users (I'm the first of them !).

Changes for KFBNC version 1.50
------------------------------

  - Now, in main menu, appropriate buttons are grayed when using select
    dialog box.

  - In Random Linear and Brownian (random vector) motion setup dialog boxes
    you can choose the number of 'arrows' you want (default is 100).

  - Plenty of pre-defined values buttons in Random Linear and Brownian
    motion setup screens. It was not always easy to find useful values
    for a range of random vectors, now it is just kid's game with axis
    render window and such buttons !

  - Same speed types for Brownian motion than for linear or random linear
    motions.

  - Now for explode, orbit and helix motions you have an added feature:
    when you use an object as center, you can choose the range of frame you
    want to use for interpolating the object position. If set to 1, for
    example, for all frames, only the position in frame 1 of the given
    object will be calculated to obtain the center of motion. If set to 10
    and max frames is 30, for frames 11 to 30 the center of motion will
    be calculated with object position at frame 10 (frames 1 to 10 
    calculated same way than before).

  - One bug corrected in Fetch feature: previously this feature just
    do an Hold instead of a Fetch !

  - One bug corrected in collision point calculation, edge to face method.

  - Delete previous animation behaviour changed: now, no Frame 0 key
    will be deleted (all types). Please test.

  - Brownian motion revisited: now each axis can change at defined number
    of frames. Each probability will affects each axis. If X = 2 and Y = 1
    and Z = 1, axis X will change randomly two times more than Y or Z.
    Setting all proba axis to 0 must be avoided (error message), setting
    all proba axis to the same value HAS NO MEANING. On example that
    will produce the desired jerky motion: random vector, X = 2, Y = 1,
    Z = 0.5.

  - Added separation speed in each set dialog box instead of only one
    global value to all. This will help fine-tuning for C.D. effects and
    can be considered as an effect by itself. Separation speed will work
    better with convex objects because the separation speed vector is
    calculated with sphere normals. 

Changes for KFBNC version 1.51
------------------------------

  - Two new dialog boxes added: gravity and wind in set screen, effects
    window (set per set, not global !). Now, for each set, after setting
    the global gravity and wind parameters, you can choose to use gravity 
    and/or wind for all frames, for frames after start frame or for frame
    before start frame.

  - Now, in helix motion setup dialog box, you can only set a shift value
    in the same direction than the choosen axis (settings other directions
    shifts values have no meaning).

  - New motion added: random random. The dialog box is similar to random
    linear, the motion by itself is defined like this:

      - Random vector changed for each frame.

      - speed (if random) changed for each frame.

  - Now, it's more easy to interrupt calculation process (ESC key checked
    more often). In some cases, when you interrupt calculation process,
    3DS is not in a good 'state', you have to reset 3DS or to use the
    fetch feature to avoid 'FP domain errors' or 'can't load vertex' errors.

  - When working, type a key (not ESC) to obtain updated statistics before 
    end of step.

  - fast statistics now updated.

  - Now, when you hit 'cancel' of the confirmation box (after hitting 
    proceed), you will go back in KFBNC instead of being kicked of KFBNC.
    This will let you easily re-edit any parameters if you found something
    wrong in confirmation dialog box.

  - New button in set D.B.: you can choose to do not use C.D. between 
    objects in the same set.

  - See contact when hit removed from global C.D. dialog box.

Changes for KFPICK version 1.04
-------------------------------

  - Recompilation

  - Adding 'drag' and 'friction' parameters for object.

  - Now, by default, the picked object(s) will have the tag 'view as
    mesh' for KFBNC viewing purposes.

Changes for KFBNC version 1.52
------------------------------

  - 'Static' feature removed. Now you will have to set a HUGE mass to obtain
    the same result as before with 'Static' feature. This can be done on
    an object basis (no need to waste a set only for this).

  - 'Trigger' feature for viewing removed, you will have only one view per
    frame (more easy to understand).

  - For LINEAR, RANDOM LINEAR, RANDOM RANDOM, BROWNIAN motion types: if you
    use random speed, you will have the choice to go from a lower speed value
    to a maximum speed value (untested).

      RANDOM SPEED -> between SPEED and MAX SPEED values in setup dialog box.

  - Drag feature added: object by object, you can specify a drag value that
    will slow down any linear motion. A drag of 0, won't slow anything, a
    drag of 1 will stop any linear motion. For example with a linear speed
    of 100 and a drag value of 0.5, you will have (from frame to frame) the
    following speeds:

      100 50 25 12.5 6.25 ....

  - Speed limit feature changed: setup gone in a secondary dialog box to free
    some space in set D.B. Similar now to gravity / wind setup (ALL, AFTER
    START FRAME, BEFORE START FRAME). If the linear speed absolute value is
    bigger than the max value, the speed will be replaced by max value.
    You have also a 'low speed' bound that will set to 0 all linear
    speeds with absolute value below bound.

  - Bug corrected in random random motion setup: in 1.51 you can't access
    the setup D.B. !

  - One change in view D.B.: now the 3 sphere icons (wire / flat / gouraud)
    are stored as images in KF code. This is done to avoid a bad 'hang' bug 
    in render library.

  - Changes in linear motion setup: when following an object, you can
    detect the collision between any object of the set and the object to
    follow (simple bounding box collision performed). Then you can choose
    the following:

      - Follow when hit (kind of oscillation motion in many cases)

      - Stop when hit (glued with target object)

      - continue when hit (last direction vector used)

  - completely reworked the collision detection engine. Now the engine
    will check the first hit between two objects to process it.

  - One new parameter in global collision dialog box (along with steps).
    Minimum value for linear move: this is related to stability
    conditions to avoid infinite oscillations.

  - No more 'tumble' button in set screens. To obtain the same effect you
    have to use the friction value for each object:

      - friction = 0.0 -> no tumble

      - friction > 0.0 -> tumble

      - computing friction values are not implemented at this time.

  - The first dialog box (with SCHREIBER phone numbers) is removed and
    replaced by a 4 line text in main dialog box. This will allow
    faster loading and use of KFBNC...

  - Faster statistics display: only displayed when there is a change. If
    you want an update, you can hit any key to obtain this.

  - ESC key is tested more often to allow early exit within some loops.

Changes for KFPICK version 1.05
-------------------------------

  - Recompiled to generate V 2 object APPDATA.

Changes for KFBNC version 1.53
------------------------------

  - The format of APPDATA for each object has changed (increased space
    added for future features). You can see the number of bytes and the
    version number (V 2 at this time) in main status screen, along with
    set APPDATA size and version (V 153). Most of previous (V 1) object
    APPDATA created seems to be backward compatible. BUT IT IS VERY
    IMPORTANT TO RE-SAVE ALL 3DS FILES CREATED BEFORE 1.53 WITH 1.53.
    Sorry for the inconvenient.

  - Scale setup dialog box is more self-explanatory now (some text added).

  - Now, KFBNC can handle objects with pivot point different from (0,0,0).
    This is true for linear motions and rotation/tumble features.

  - The Frame 0 position setup dialog box is enhanced to incorporate
    full pivot use. You can choose to align set object(s) OR set object(s)
    pivot to (0 0 0) or center object (pivot).

  - Small text correction in Random speed (Speed to Max. speed instead of
    0 to speed).

  - One bug corrected in render window: the 'bound' mode of viewing for
    objects previously don't worked.

  - Changes made in friction dialog box: 4 buttons added
    
  - Some bugs corrected in brownian dialog box: bad speed type.

  - Mis-spelled 'mimimum' corrected in Global Collision settings.

  - Enhanced / corrected text in hide dialog box.

  - Now, in explode dialog box, you can enter only positive float numbers
    for scale X Y Z.

  - Now all rotation 'head' button will rotate around the Y axis and all
    rotation 'bank' axis will rotate around the Z axis. There are also
    axis letters in the render window to help the user to find the rotation
    axis he wants.

  - All statictics computation done now with unsigned int. You can have up
    to 4294967295 events (hit, box, sphere, etc... ).

  - lock X Y Z implemented in set screens. Primary use is to lock one axis, 
    thus limiting all motion, including collision detection, in a pure 
    plane. One other use is to lock the position of an object (in X Y Z axis)
    then to use it as a rotation 'only' object. You have one dialog
    box to set Lock X Y Z for each object (saved in object APPDATA V 2) and
    one effect Lock dialog box to set use of lock effect (similar to
    gravity, wind, etc...). Lock will lock any SPEED created by KFBNC
    in X Y Z axis. Previous motion won't be changed if locked !

  - You can define easily a bounding box (or any other bounding volume) for
    an object with many faces. For example if you have an object named 
    'complex' with 10.000 faces, you put it in another bounding object named
    'simple' with only 100 faces. Then, in the keyframer, you hide 'simple'
    and you link 'complex' as a child object to 'simple'. After loading
    KFBNC, you just use 'simple' for all C.D. calculations, thus speeding
    up the process one HUNDRED times. When the animation is calculated, 
    'complex' will be moved and rotated at the same time than 'simple'...

  - As a consequence, the 'bounding box' type of object has been removed.
    
  - In Mass dialog box, one button added (set all to huge) and two lines
    of text also added to stress the fact than an object with a huge
    mass will react as a static object instead of a dynamic object when
    hitted (no change in its motion).
   
  - In start frame dialog box, three lines of text added. An object with
    start frame on and before start frame will react as static when hitted.

  - Re-design of set dialog box to allow more space in C.D. window.

  - Added a parameter in C.D. window / set screen to fine tune the rolling
    effect. A dynamic ball will roll when it hit a static object and the
    tangential speed / radial speed ratio is equal or higher than the ratio
    in set screen. By default, the roll occurs when tangential speed is
    greater than equal to radial speed. The tangential speed used for 
    rolling is then multiplied by the friction of the dynamic object. If
    the friction is 0, you won't have any rolling... Rolling is performing
    best with a good accuracy and edge to edge C.D. method.

      ROLLING RULES:

        - a dynamic ball is rolling on a static object only

        - The ball must have pivot set to 0 0 0 in Keyframer (centered
          to object)

        - Edge to edge method is best with some accuracy

        - Set the Tg/Rd ratio to the value you want

        - Gravity can be used for better effects

        - Choose the good friction value for each rolling object
          (1.0 for no rolling speed decrease, 0.0 for no rolling at all)

  - Added a button in set screen to see if an object can be hollow or not.
    A sphere can't be hollow, edge and fast can be hollow. Just here to
    remind.

  - One 'momentum ratio' parameter added in global collide dialog box.
    More on this later (related to tumble between two dynamic objects).

  - Changed all 'frame' maximum values to 32000. 

Changes for KFBNC version 1.54
------------------------------

  - Enhanced / corrected the object / mass dialog box.

  - Enhanced / corrected the object / start frame dialog box.
  
  - Enhanced / corrected the object / drag dialog box.

  - Enhanced / corrected the object / friction dialog box.

  - Added one parameter for each object (auto saved in object APPDATA)
    object axis (X Y Z float). You have one added dialog box in object area
    in set A B C D screens.

  - You can use the object axis in rotation effect. If the 'From Object'
    button is on and if the object axis is not 0 0 0, the rotation effect
    will use the object axis. If the object axis is 0 0 0, the rotation
    will use the FIXED axis sfecified in set A B C D screens.

  - List of all APPDATA parameters auto saved along with each object:

     - Set
     - Version (of object APPDATA, V 2 here)
     - Mass
     - Elasticity
     - Start frame
     - Flags for view (NONE/BOUND/MESH) and for lock (X Y Z)
     - Drag
     - Friction
     - Axis (X Y Z)
     - Empty space for future enhancements...

  - When a V 1 object APPDATA is read (made with KF 152 and lower), all
    added V 2 parameters are set to 0. Of course, if a V 1 APPDATA is
    read, a V 2 APPDATA is always saved (upward compatible, NEVER 
    BACKWARD COMPATIBLE).

  - You can use the object axis in tumble / rolling effects. This little
    feature can really BOOST the number of 'rotations' animations you can
    do. Give it a try ! ('use object axis' button in set A/B/C/D dialog 
    boxes). By setting the pivot and rotation axis for each object, you
    can make this object rotate exactly as expected when hit. 

  - No more negative scale values for scale buttons in scale dialog boxes.

  - Some bugs corrected in Rotation effect with random axis.

  - One bug corrected in SINE scale effect.

  - Reworked the scale effect code and dialog box. Plenty of new buttons.
    Now, the scaling process is performed along with other process (not
    BEFORE all process, as in previous version).

  - One very important feature added for Start Frame. The Start Frame
    effect button only affect MOTION and ROTATION. All the other effects 
    that are linked to Start Frame (Gravity, Wind, Lock, Scale, Hide, Drag
    Speed Limit, ...) can still be performed when you don't use Start Frame
    for motion / rotation. More freedom like this.

  - Hollow button now properly grayed.

Changes for KFPICK version 1.06
-------------------------------

  - Recompiled for new -1 to 1 drag range

Changes for KFBNC version 1.55
------------------------------

  - Reworked C.D. code for tumble (dyn. versus dyn. collision with 
    friction != 0) effect. You have now some added params in set 
    A/B/C/D screens:

      - momentum ratio

        this is the parameter to compute rot. kinetic energy. If you 
        increase this param, you will need more energy to rotate the
        object and the object will give more rot. energy in collisions

      - linear / rotation energy ratio

        when there is a hit, this param control the way kinetic energy 
        will be divided in rotation and linear motion.
        a ratio of 1.0 will give 50% energy in rot. and 50% energy in
        linear. A ratio of 0.1 will give 9% energy in linear and
        91% in rotation. 
        
  - pivot handling reworked. One bug corrected (bad position in frame 1).

  - Scale effect enhanced (see TUMBLE1.3DS example file). Many 'hit'
    trigger effect added.

  - now you can use a negative drag value for acceleration.

  - Drag, gravity, wind, speed limit, lock effects enhanced.

Changes for KFBNC version 1.56
------------------------------

  - One bug corrected in render window: entering numerical angle for
    rotation.

  - Frame 1 and Frame 2 fast numeric buttons are now functioning in
    scale effect dialog box.

  - One strange thing corrected (this is not a bug): when using RANDOM
    scale effect, all the frames for object 1 will had Scale 1 applied. 
    This was a result of the random function. When you change the random
    seed, you obtain another result. Now the default random seed is 12345
    instead of 0.

  - Smaller step for fast numeric buttons of sine decay in scale effect
    dialog box. For decay, you can use either a value smaller than 1.0
    to obtain a decrease in sine amplitude or a value greater than 1.0
    to obtain an increase of sine amplitude.

Changes fot KFBNC version 1.57
------------------------------

  - Minor button label changes in Object start frame dialog box.

  - Drag preset button change in object drag dialog box (0.9 changed
    to 0.1). Speed is multiplied by (1.0 - drag), so a 0.1 value is
    better than 0.9 ! In case of negative drag (acceleration) speed is
    also multiplied by (1.0 - drag), a -0.1 drag value is equivalent
    to multiply speed by 1.1 for each frame.

  - Start frame effect change: SFrame is now SFrame + Frame 1 and
    SFrame + Frame 2. This is more useful like that !

  - Enhanced static collisions (dynamic versus static object): static 
    object can have linear and/or rotation motion now, and the dynamic
    object is moved accordingly. Don't ask for impossible motions and
    hits ! But now, you can play 3D tennis with a dynamic ball and some
    static objects ! The dynamic object will tumble or roll according to
    the parameters (tan/rad ratio and friction greater than 0).

  - Enhanced dynamic collisions (dynamic versus dynamic object) in both
    'linear' and 'tumble' areas. Please notice that you can't have a
    real rolling effect with this kind of collision (tumble only). The 
    oblique collision case is now solved.
      
  - Added one button in set A/B/C/D screens: static elasticity. This button
    will allow to choose, when there is a hit with a static object, between
    the dynamic object elasticity and the static object elasticity.
    For example with dynamic balls and static blocking objects, you can 
    have high elastic params used when two balls collide and low elastic
    params when a ball hit a blocking object.

  - new internal set paramameters revision 157 (this mean that set 
    parameters made with previous release of KF can't be read, sorry !). 
    Unfortunately, this happend each time I change/add one more set 
    parameter...

  - minor bug correction in set A/B/C/D screens: some buttons were not
    properly grayed in collision window when no collide effect.

  - This KF version 1.57 should be delivered. Approx. 35 KF version
    were made since June 1994. At this moment, there are 37 differents dialog
    boxes designed (200KB), 69 differents source files (900 KB), 10
    differents include files (100KB). There are also 101 set parameters
    (404 for all four sets), 23 global parameters and 11 objects parameters 
    to play with.

Changes for KFBNC version 1.58
------------------------------

  - Minor button label changes in Object start frame dialog box.
                         
  - Updated Keyframer state when exiting the preview dialog while hitting
    the ESC key.

  - One bug corrected: bad parameter setting (KFBNC was hanging while
    doing some stuff, using random linear motion dialog box or render
    window, for example).

  - new internal set parameters revision 158

Changes for KFBNC version 1.59
------------------------------
  
  - new internal set parameters revision 159

  - One bug corrected in linear motion / object hit buttons

  - Added 'static friction' in set A/B/C/D screens. This is similar
    to 'static elasticity'. Replace 'elasticity' by 'friction' in previous 
    text. One possible use: to stop dynamic object tumbling with friction
    = 0 and to allow theses objects to roll against a static object (friction
    > 0 and 'static friction' set on).

  - enhanced edge to edge collision method: more accuracy in computing the
    collision point and far more accuracy in computing the hit normal vectors.

  - one 'check normal' feature added inside C.D. code. This is working for
    both fast and edge collision methods. If one of the object involved in
    fast/edge is either a sphere or a convex object, the computed hit normal
    vector is compared to the radial vector, if not good for such an object,
    the normal vector is negated. This can help in minor 'bad motion after
    hit' cases. Of course if the object is not sphere and/or convex, there
    is no way to predict the direction of hit normal vector... This mean
    that the concave object case is more difficult to handle !


Changes for KFBNC version 1.60
------------------------------
  
  - new internal set parameters revision 160
  
  - bug corrected in render engine

Changes for KFBNC version 1.61
------------------------------

  - Bug corrected in zero speed motion

  - Hollow button is working now (for edge / fast only). The convex
    button is set accordingly

        Hollow = YES -> Convex = NO only

        Hollow = NO  -> Convex = YES or NO

    reminder:

    Convex = YES is an acceleration method only for edge objects
    
    Convex = YES is a hit normal vector checking for all objects
  
  - In set A/B/C/D, object scroll box:

     object = HUGE mass (static) -> inverted video

     object = any lock -> red text

Changes for KFBNC version 1.62
------------------------------

  - Bug corrected in Record View. This bug was there since 30 releases ! 
    (World and Olympic records enhanced).

  - Bug corrected in C.D. routines (hitting static).

  - Enhanced C.D. routines to allow exact 'same time' hits. This doesn't
    happend in real world, but...

  - Bug corrected in Hollow settings.

  - Changed 'Object type' to 'Collision Method' in set screens.

  - Changed 'pivot' to 'Target' in linear motion pick target dialog
    box.

Changes for KFBNC version 1.63
------------------------------

  - locked object now in cyan instead of red in set A/B/C/D screens

  - reworked explode dialog box: there is a render window that can
    help to understand how scale values are working.

Changes for KFBNC version 1.64:
-------------------------------

  - This version will work only with 3DS 4.00 and greater. No more support
    for 3DS releases under 4.00.

  - The speed for switching between MAIN and SET A/B/C/D screens is now
    greater than ever. This will save the life of any user with a slow 
    computer or a slow VGA. The speed increase can ever be seen on my P90
    with MGA IMPRESSION PLUS VGA.

  - enhanced "dump parameters to file" feature.

  - cleaned 3D axis rendering code.

  - One minor error corrected in Set Drag dialog box: you can enter now
    a negative value in the edit box.

  - One minor error corrected in Set Friction dialog box: you can enter and
    use now a value bigger than 1.0.

  - One bug corrected in creating rotations keys: before, bad rotations
    keys where created for any negative rotation angle.

  - Faster object parameters setting for a huge number of objects: now, 
    all objects parameters will be re-saved in scene only if you have 
    modified one parameter. 

  - One important change in rotation handling: you can't have a rotation
    with angle bigger than 180 degrees from frame to frame. This is 
    effective for all rotations effects including roll and tumble. The angle
    can be either positive or negative. This is done to make nicer
    animations, because if an object rotate with an angle bigger than
    180 degrees, this is seen as a reverse rotation. Here are some
    remarks about this limitation:

        - For each object, there is now a limitation in rot kin energy
          (see the equation). This can change the behavior of some
          tumble animations previously done.

        - This is YOUR responsibility to see if the roll tangent speed
          isn't too big. But mainly you will have nicer roll animations.

Changes for KFBNC version 1.65
------------------------------

  - Removed 'fast screen' in main dialog box. With 3DS 4.00 and upper the
    screen is always fast.

  - Added one parameter in Set A/B/C/D, C.D. windows: add reflect. This
    parameter will only work when 2 dynamics objects collide with some
    linear motion. In most cases, when 2 dynamics objects collide and
    one of this object speed was 0 before hit, the second object will give
    most (all with normal vector = motion vector) kin energy to the
    other object. You will obtain this animation: obj2 moving, obj1 zero 
    speed before hit, obj2 zero speed and obj1 moving after hit. This
    is accurate will physics laws and real world. In some case, you want 
    that obj2 never stops and never give all kin energy to zero speed 
    objects, so you can add a reflect speed vector with this new parameter.

    The added reflect speed vector will be computed like this:

    reflect of old speed vec * add reflect param * elasticity of object.

    This mean that for add refl = 1.0,and elas = 1.0  you will obtain a 
    'reversed' speed vector with speed equal to speed before hit.

    BEWARE OF THE FACT THAT YOU CAN OBTAIN CRAZY 'HIGH' SPEED VALUES WITH
    A IMPROPERLY ADD REFL VALUE !

    add refl = 0.0 mean add no reflect vector (back in real world !).
  
  - new internal set parameters revision 161

Changes for KFBNC version 1.66
------------------------------
  
  - new internal set parameters revision 166

  - Changed main screen: added (global) start frame parameter. KFBNC will
    work only between start frame and end frame (excepted for frame 0 
    feature, of course). This new feature can introduce news bugs (sorry !)
    because it involve a lot of changes. Beta testing IS needed.

  - Changed linear motion dialog box: pulse button (the direction vector
    will be only interpolated when the motion starts and no change after)
    You have also a 'interpolate limit' for object as for other motions.

  - helix and orbit motion changed: added low and high bounds for random
    angular speed the same way than for other motions.

  - changed dump to text file code accordingly.

  - corrected 2 bugs in helix and orbit dialog boxes: frame button can go 
    now up to 32000.


Changes for KFDUP version 1.36
------------------------------

  - nothing was working in copying keys ! One bug was corrected... 
  
Changes for KFBNC version 1.67
------------------------------
  
  - new internal set parameters revision 167

  - one bug corrected in select view dialog box: set A, etc... buttons
    weren't working...

  - one bug corrected in delete previous animation: the range of keys
    between global start frame and end frame will be deleted, instead
    of all ! Code is 1000% faster also.

  - only 2 decimals after point in status window for render and work
    time.

  - added one button in set A/B/C/D screens, C.D. section: See Hit.
    This button is on by default (same behavior than before, a key is
    created with position as near as possible of collision condition).
    With this button off, the object will continue to move INSIDE the
    frame where there is a collision, this seems to give a more smooth
    animation.

  - one bug corrected in help system, search word.

changes for KFDUP version 1.37
------------------------------
  
  - one bug corrected in help system, search word.

  - now the frame 0 rotation key will be copied with angle = 0 only, this
    is far more useful like that !

changes for KFPICK version 1.07
-------------------------------
  
  - one bug corrected in help system, search word.


*****************************************************************************
*                                                                           *
*              End of this file, have fun with Key Factory !                *
*                                                                           *
*                        (C) 1995 By SERGE GOLUCH                           *
*                                                                           *
*****************************************************************************


