RsdAnim (C)1998, by Craig Graham --- Change list --- [12/5/98] o Loading a 16bit TIM now doesn't cause a crash (it still doesn't load the texture though, it load's a dummy texture instead). o Added a startup dialog to allow you to disable Direct3D hardware accelleration (as it only seems to work with S3 Virge cards). Software mode is slower but should work on most PC's (as long as they have Direct3D v5). NOTE: Now works on NT if you select NO in the startup dialog :) [Actually, no it doesn't......bum] o Lots of changes to the texture mapper dialog. - You can now map just to selected faces instead of the whole model. - FlipX/Y to flip the texture as it is mapped - Tiling / Repeats now works (although it's only good on fairly high poly models) - Sphere mapping works - Added X/Y/Z planer mapping with optional 'exact' mode. - Mapping extents are now correctly calculated, and if the 'selected faces only' option is selected the extents only include selected faces... o Fixed a bug with which view pane a click was processed in. [13/5/98] o Return of the XYZ Axes display in 3D views. o Vertices now displayed in textured view o RSD file is now saved, so models with new textures should load correctly. o RSDTOOL doesn't support the full RSD format (combination coloured + textured faces don't work), so I've added a "Make Model RSDTOOL compatible" function - only use it if you really want to load the model into RSDTOOL.....but you'll lose any colour tinting information from tetured faces... o Resize tool added (the button's been there for ages - it's got code for it now). [14/5/98] o Added Grid display (wire frame view only). o View popup now has TOP/SIDE/FRONT options to go straight to a view. [17/5/98] o Added support for loading 3DS / 3DS Max ASCII Object files (.ASC) ==================================================== [18/5/98]: PUBLIC RELEASE 1.0 ==================================================== [19/5/98] + Bug report from Steve Dunn recieved o Added "delete keyframe" function (as requested by Steve Dunn) o Fixed the New Movement menu option to actually do something (the button already did). o Fixed a small memory leak (there are still some more though). o Fixed crash when double clicking on the Baseframe if no other frames existed (actually, the cause of this would be corrupting files anyway). o Fixed the "Keyframe Info" bug reported by Steve Dunn. o Added a check for duplicate keyframe names (you cann't have them now). [20/5/98] o Fixed bug in MIMe generation code for large frame to frame Vertex delta distance's. Number of render frames is now correctly increased to cope and you don't get the MIME ERROR messages in the C output. Thanks to Steve Dunn for the Sample animation that demonstrated the problem. o Added explaination text and Keyframe name to the MIMe Generation Error dialog. [22/5/98] o Textures now appear in the tree view. You cann't do anything with them yet though... o Added drag'n'drop KeyFrame re-ordering. Drag the frames to the order you want them... (occasional crash problem here - save frequently). [26/5/97] o Support for 3DS Max ASCII Scene Export (.ASE) file loading added. Note that as ASE is a modular format, I've not implemented all blocks. I'll add extra features to the ASE loader as time goes by... - Vertex & Face loading - Included object group loading support in the ASE loader (NODE blocks). - Key frame loading supported (linear moves only). - Started adding code for Texture Map loading (not working yet). o Optional Auto Deselect when using tree view double click to select groups. o Large ASE objects can now be loaded (>30K polygons). Runs dog slow at that number of polys, but you wouldn't want them in a game anyway as PSX couldn't handle it. Load it & optimise it.... [27/5/97] o New function 'Invert Selection' - selects everything not already selected, and deselects what used to be selected. o Model Info dialog now has two new fields, showing number of selected polygons and number of selected vertices. [28/5/07] o Bugfixed the ASE animation import function (still no rotation, but position is ok now). o Fixed problem with rotation centre being in the wrong place. o Fixed problem with click drag selection response. ==================================================== [28/5/98]: PUBLIC RELEASE 1.2 ==================================================== [4/6/98] o 3DS Max ASE import now handles texture information. Why? Isn't RsdAnim's texture mapper pretty good? Yeah, it is compared to RsdTool, but 3DS Max rules for this sort of thing, RsdAnim is just for final edit and animation. NOTE: You MUST convert your textures to TIM's before you try to load the ASE. I recommend you setup all your textures in one directory first, before mapping them in 3DS Max. RsdAnim expects to find a TIM file in the same directory as the texture file you used from Max. [10/6/98] o Added swap X/Y option to the texture wrap dialog. [13/6/98] o Re-wrote the ASE importer to handle stuff more generically. o Added a replace keyframe button. [14/6/98] o Fixed rendering of 4 sided polys in the texture view. o Added new options to the view popup menu to make selected poly's: - transparent - coloured -+ - textured -+--these last two are to allow you to clear the texture of a polygon and to turn it back on again.... o Textured view now displays transparency - note that this only works on a 3D accellerator device which supports it (Direct3D's software rasterizer doesn't do it). Also (at least on my S3 Virge card), only solid coloured polys display as transparent - that's probably just my 3D card though... o Added new toolbar buttons for a couple of the new functions. [20/6/98] o A basic miscomprehension on my part about what the Yaroze manuals meant... p:(1,19,12) actually means 1 sign bit, 19 whole bits, 12 fractional bits. So, I've re-done the MIMe export code to allow a much broader range of values for the p coefficient (before, I was only allowing the values 1,19 and 12!!!). This gives a much larger and more accurate MIMe representation of an animation than you were getting before.... ==================================================== [22/6/98]: v1.2 Internal Beta Release (to John & Mark Only) NOTES: 1) TMD saving is work in progress - don't try to use it, bad things will happen. 2) Max2 ASE import: Don't enable "Extract Camera Paths" in the import dialog. This is gonna get finished once I work out KB-Splines properly.... 3) Max2 ASE import: Pay attention to my note dated [4/6/98]. This is important. ==================================================== [23/6/98] o Added a view lighting configuration dialog. You can now setup how the texture views flat lights are coloured. There are 3 lights, one on each axis, and you can toggle the RGB components of each light. Each view has it's lighting set individually, so you can have different illuminations in each view pane if you like... NOTE: This is a feature requested by John Li, and as he's my main graphics man, it goes in before anything else... [25/6/98] o Started the TMD saving function. Only works with FP3N's and GP3N's at the moment. [26/6/98] o Added more prim types to the TMD saver: FP3 GP3 FTP3 GTP3 FTP3N GTP3N [28/8/98] o Toolbar positioning and window size is now remembered from previous sessions. NOTE: As requested by John Li, 24/6/98. o All toolbars can now be turned on and off (this is also remembered). o Toolbar names now set properly when used as floating. o Added new toolbar "Polygon Edit" to make a more sensible grouping of poly related functions. o New function "ZOOM" in the view toolbar - select and hold left button in view pane, move right&left to zoom in and out. NOTE: As requested by John Li, 24/6/98. o Lighting setup is now saved to the file "c:\Windows\RsdAnim.config". I'll be putting other configuration stuff in there later. o Added manual texture UV edit view (accessible via the view popup). Usage: 1) Double left click in view to get popup. 2) Select "View Texture UV" 3) Double click on a texture in the project window. - The texture should appear in the view. Any vertices that use the texture will be shown, 4) Select your vertices to edit. 5) Use the Move Tool to move the texture coords around in the Texture UV View. Whenever you release the mouse button, the changes will be shown in all the other view. o Added click & drag select to the Texture UV edit window, so it feels similar to the other views... [29/6/98] o Started adding the timeline / velocity view. Currently it just shows a timeline with the keyframes of the selected movement positioned correctly along the time axis. o Currently active edit pane now has a highlight border round the edge to show you which it is. o Edit ops don't swap from one pane to another as you move the mouse now. o Added scale to the bottom of the Movement Timeline view - measured in frames. ==================================================== [29/6/98]: v1.3 Internal Beta Release (to John Only) NOTES: 1) TMD saving is now pretty stable for use with Max generated models 'coz they only use triangles anyway. 2) I'm working on the velocity view, at least it shows the frames in respect to time at the moment. ==================================================== [30/6/98] o Added average and maximum velocity traces to the Movement timeline. The grey shaded area indicates average velocity (averaged over the number of vertices in the object). The red line shows the maximum velocity that the fastest travelling vertex is moving at (NOTE: these are not to the same scale, even though they are on the same axis) [2/7/98] o Changed the texture wrap dialog. Added a ComboBox with all current textures in it so you can select which texture to map. Also added a browse button for choosing a new texture to add to the model (instead of always bringing up the file selector as I was before). o Added a 'paint texture' button. If you have a texture selected in the project tree and you select a face (or several faces) clicking on paint texture will paint the faces using the texture. You'll want to move the texture UV's about by hand in the UV edit pane if you apply textures this way.... ==================================================== [2/7/98]: PUBLIC RELEASE 1.3 ==================================================== [2/7/98] o Fixed the wireframe view (thanks to Ian Thompson for the bug report). o Added optional backface removal mode to the wireframe view (toggle is in the 'View' menu). o Uploaded the RsdAnim_lib animation library to my WWW page. [6/7/98] o Generate MIMe & Add Keyframe now work from the menu as well as the buttons. o Disabled the File->New as it has no meaning for RsdAnim (and wasn't used anyway). o Changed the way UV edit works. Only vertices that are selected in a wireframe or texture view and are part of a face with the texture on it will show up in the UV editor. This makes things less cluttered and allows easier fine tuning of textures. Also, improved the way UV editing works... [10/7/98] o Fine tuned the click/point vertex selection (when you click on a single vertex to select it). Changes to the selection algorithm to make it less frustrating trying to get the vertex you really want. 1) The distance selection algorithm used to just drop out when it found a vertex close to the cursor. Now it selects the vertex CLOSEST to the cursor. 2) You now always get the vertex closest to you (in Z) if several vertices are on top of one another. At least it's consistent now..... [20/7/98] o Recoded the "Bones" creation stuff (which has never been enabled in a release build anyway, so you'll not realise how big a job this was). [22/7/98] o Got bone editting working. When a bone rotates around a joint, all child bones follow it :) Nice editting aproach, where rotation axis is always into the screen, whatever viewpoint you are looking at. o Disabled the baseframe checkbox in the Add Keyframe dialog. Use Replace Keyframe to change the baseframe instead. o Attatch to Bone now works (sort of, the selected vertices are attatched to the last bone you added). o When rotating a joint, the vertices attatched to any bones that move are also rotated. Hey, that's working bones animation!!! o Skeletons now attatched to keyframes, and changes are preserved when you swap from one keyframe to another. [23/7/98] o XYZ axis in wireframe made to match the one in the textured view. o New switch in view menu "Show Bones" to turn on/off display of the bones. o Move Joint function added to allow individual bones & joints to be positioned exactly independant of the model without the rotation restrictions placed on normal bone rotations. o Grid display now available in textured view. o New switch in view menu "Show Model" allows you to turn off the display of the model altogether in a view. eg. You can now show just the bones skeleton in a view. Or just the vertices, with no polygons linking them up. o Skeletons now saved in a ".bone" file. Only the Baseframe skeleton is saved at the moment o ".bone" files are now loaded back in again :) - I'll be able to release some sample boned models RSN. [24/7/98] o The pick-select tool now also allows you to select a bone as well (click on the bone end control point). You can only select a single bone in this way, which will be shown in red. o "Add Selected To Bone" now adds the selected vertices to the bone you selected with the pick-tool. o New function "Remove Selected From Bone", will dettatch any selected vertices which are attatched to the currently selected bone. o To differentiate between bone start's and ends, the start joint of a bone is drawn as an X, the end control point is drawn as a square. o Added a splash screen. o Plugged one of the many memory leaks in the program. There's more in there, it's only one less... o Started doing a windows help file. o Added a menu option to bring up the help. [27/7/98] o New function "Delete Bone". Delete currently selected bone (if any). ==================================================== [27/7/98]: PUBLIC RELEASE 1.4 ==================================================== [28/7/98] o Started adding code to use the Datel Action Replay to provide a fast previewer actually on the Playstation itself (taken from my ARS server/client code). o New toolbar added "Action Replay Control". o AR port setup available in options dialog. o AR comms class integrated into program (based on the stuff I wrote for ARS). [29/7/98] o AR texture download works. Bloody quick it is as well. o Fixed bug in vertex selection (couldn't click to select a single vertex if you had Show Vertices enabled without having Show Model enabled as well). o Added the "View Track" check box to the Action Replay Control toolbar. o Added Action Replay Comms Error dialog in case comms ops timeout. Provides Retry or Cancel options. o New CRC checked block transfer method for AR comms. I should go back and put this into ARS :) o Added AR model download code (save a temporary TMD as "c:\temp\temp_tmd.tmd", then downloads that). [30/7/98] o Added AR zoom & rotation control. o Coded Playstation side previewer. o AR preview mode works fine now....excellent!!! [2/8/98] o Improved speed of AR download approx. 300% by changing the process priority for the duration of the download, and removng timeout detection once a download is in progress (you may occasionally get an error using this, but it's worth it for the 99% of the time it works fine and is loads faster). o Added AR forced EXE download to put the previewer onto the playstation real quick. I probably cann't actually do a release with this code in, but it's quite useful. o Added playstation graphics resolution selection to the AR previewer and RsdANIM. o Added remote reset button to the AR Control toolbar. [3/8/98] o Added poly4 support to the TMD saving routine. New primitives: FP4 GP4 FP4N GP4N FTP4 GTP4 FTP4N GTP4N This is used both by the direct TMD saving code (Save As->TMD) and the Action Replay previewer, (which saves out a temporary TMD to download to the Playstation). o Inlined the playstation side AR previewer EXE into the RsdANIM executable. This will probably not make it into a general release version (see note on forced exe download on 2/8/98). =============================================================================== [4/8/98]: Limited distribution source release 1.5 (prerelease) Released to a small number of people who offered to help with debugging some issues with the Direct3D code. Thanks to Steve Spiller & Mario Wynands for their help. =============================================================================== [5/8/98] o Added CPU & GPU load profiler to PSX side previewer. o Added switches to turn these on and off from RsdANIM's TOOLS menu. o Fixed bug in RSD saving, bones skeleton now correctly saves baseframe skeleton instead of current edit frame skeleton. [6/8/98] o Bones skeleton now saved for all keyframes, previously only the baseframe skeleton was saved. Older bones files will still load, but will save out in the new extended format. o Plugged the memory leak (at long last) that's been giving me grief since v1.0 :) o When we arrive at the final frame of an animation, correctly set the bones and stuff (the 2nd to last frame's bones skeleton was being set instead). [7/8/98] o Added new binary MIMe save code. o Extended the PSX side RsdANIM library with two new functions: LinkMIMe() : links a binary MIMe file so you can then use InitMIMe() on it. ReleaseMIMe(): releases a MIME_HANDLE and free's the memory allocated to it. o Added support for animation previewing on the playstation. - New button in AR Control bar "AR Send MIMe" - Support in the PSX side previewer for downloading binary MIMe files. (animation plays continously once started). [10/8/98] o Re-arranged the TOOLS menu a bit. o Added new function "Delete Movement" (Tools->Movement->Delete). o Added new function "Remove Texture" (Tools->Texture->Remove). Removes all refferances to the selected texture from the model. All faces painted with it are made coloured, all other texture ID's are renumbered and the texture is removed from the RSD altogether. o Slight fix to the set as coloured face option. o Added new function "Rename Movement" (Tools->Movement->Rename) o Added new function "Rename Keyframe" (Tools->Keyframe->Rename) o Added new function "Rename Poly Group" (Tools->Group->Rename) o Added new generic rename function (Edit->Rename), will rename Movements,Groups or Keyframes. [11/8/98] o Added new function "Ungroup Polygons" (Tools->Group->Ungroup). o Fixed tools menu Tools->Keyframe->Delete to actually work. o Added new generic delete funtion (Edit->Delete), will delete Movements & Keyframes and ungroup Poly Groups (really, it deletes the grouping information, hence it being on the delete option). o Following Mario's suggestions on Backbuffer/Z-Buffer creation in the Direct3D code, I've added some retry code that attempts to ensure that the display is actually created correctly. A bit techie, but what it does is shrink the window and keep trying to create a Direct3D display using repeatedly smaller windows until it finds a size that your 3D card can handle. Note that this doesn't apply if you're using the software renderer. o Added a new pane in the Options dialog. This allows you to set the maximum view pane size. So, you can setup a huge max size so that you can have a single view full screen? Well, perhaps. Depends how much memory you've got on your 3D card. If you're using the software renderer (NO from the startup dialog) then you're in luck, as the DirectX 6 software renderer will happily display 1280*1024*16bit Z-Buffered 3D images. Of course, the bigger the display pane, the slower it updates...... [12/8/98] o Added new recentering function to the Model info panel, to allow all frames of an animation to be re-centred. o Re-scale & re-centre now correctly effect the bones skeleton. o Holding down shift when selecting bones with the pick tool will now select bones when you click on their start joint. o Holding down shift when using the Rotate Bone tool will now rotate about the joint end instead. o New function "locked rotate joint". Not sure how to describe what it does - try it on a model to see. [13/8/98] o Recoded the Direct3D textured display driver to get a bit better performance. o Fixed the problem with using shift as the joint/bone modifier. [14/8/98] o Improved the drag & drop operation of the Project Manger Tree slightly. o Right click on an item in the Project Manager Tree now gets you a popup menu with common operations in it. Exactly which depends on what type of item you click on (eg. right-clicking on a Keyframe get you a menu with Edit Info,Rename,Replace & Delete in it). [15/8/98] o Model Info dialog now shows centre point of object as well. o Rotate joint & locked rotate joint now show the angle (in degrees & radians) in the view pane. o "Save As Rsd" now actually works and saves as the RSD filename you select. [17/8/98] o Added "Measure Angle" function. o More performance optimisations in the texture view display code. o Optimised the RecalculateVertexNormals() code (improves display speed). o Play Preview (on PC) - right button click & drag to change viewing angle now works whilst a preview is playing... =============================================================================== [17/8/98]: Public Release 1.5 NOTES: The AR control stuff isn't disabled is this release, but I've not released the Playstation side client yet, as I've yet to put together a Yaroze libps built version (current version uses pro-dev librarys). =============================================================================== [18/8/98] o Re-enabled the Direct3D MMX driver support. o Lighting Config now works on Wireframe view as well as textured. o Improved render speed of wireframe view. [19/8/98] o Added display as environment mapped option. This will environment (well, chrome map really) all textured poly's in an object using the texture they have assigned to them. So, for a simple chrome object, get a chrome texture, wrap it round the object and display it with the 'Show as Env Mapped" option checked. Rotate it to see the effect. This is a visualisation tool only - if you want to have env mapping on a PSX, you'll have to code up some stuff to do it. o Added new option in Texture Wrapper dialog "Apply To All Frames" - does what it say's, check it to have the wrap applyed to every frame of every movement. [20/8/98] o Re-coded the texture mapper pretty much from scratch. =============================================================================== [21/8/98]: Virus Disaster - I'd got a virus on my PC, and RsdANIM 1.5 suffered from it. bugger. Cleaned up now.... =============================================================================== [24/8/98] o Texture Wrapper: two different spherical texture mapping algorithms are now available. - Vertex Normal Projection : projects the average vertex normals (as used for gourard shading) onto the texture. - Centre-Vertex Projection : only good on convex shapes, projects a vector from the objects geometric centre point through each vertex onto a sphere and uses the X & Y axis angles to generate the texturing. =============================================================================== [24/8/98]: Public Release 1.51 Really just a non-virus infected release of 1.5, but with the one or two other bits I've done since 1.5 in there as well. =============================================================================== [15/10/98] o Triangle to Quad optimisation. I know DXF2RSD does this, but this is better... - Can work on a subset of model (option to select bits to convert). - Uniformity (how similar normals must be) - Texture preservation (doesn't really work very well at the moment) o As the AR preview sometimes hangs, hitting escape will abort the AR link. Hit reset on the AR control panel and resend the viewer to continue... [16/10/98] o RSDANIMLIB v3 - support for new Type 2 MIMe files, giving smaller animation data files and faster animation. o New setting in Options dialog to select between Type1 (old style) and Type2 (new style) MIMe files (no actual code to generate type 2 yet). [19/10/98] o Creation of Type2 (RSDANIMLIBv3) MIMe files now supported. o Added new parameter to options dialog to allow setting of a minimum distance that a vertex must travel before it is actually output as animated in the MIMe data. This allow you to stop vertices that only move minutely (like, you cann't see the movement it's that small) from generating MIMe. This leads to larger 'zero' blocks (no gteMIMe done for these blocks) - hence smaller animation files and better performance. o Debugged the Type2 support in RSDANIMLIBv3. o Added vertex re-ordering function. Can be useful in reducing the number of Type2 MIMe blocks that are generated by grouping together the least moved vertices in one block, which can then be skipped by the MIMe data generator. o New build of AR previewer PSX executable using RSDANIMLIB v3, with support for previewing both Type1 and Type2 animations. [21/10/98] o Added 4 new polygon types o Moved to a new naming scheme for TMD polygons: * New naming convention: * POLY_F3NT * ^^^ * |||| * |||+-- Texturing: optional, indicates that a texture is present * ||| * ||+--- Colouring mode: N=none (no rgb modifier entry in poly) * || U=Uniform (1 rgb modifier entry for entire poly) * || G=Gradation (1 rgb modifier for each vertex) * || * |+---- Number of vertices: 3 or 4 * | * +----- Lighting mode: S=static (light off, no normals) * F=flat (light on, 1 normal for whole poly) * G=Gourard (light on, 1 normal for each vertex) * * List of supported primitives: * POLY_F3U * POLY_G3U * POLY_F3G <- New in this version * POLY_G3G <- New in this version * POLY_F3NT * POLY_G3NT * POLY_S3U * POLY_S3G * POLY_S3UT * POLY_S3GT * POLY_F4U * POLY_G4U * POLY_F4G <- New in this version * POLY_G4G <- New in this version * POLY_F4NT * POLY_G4NT * POLY_S4U * POLY_S4G * POLY_S4UT * POLY_S4GT o New polygon properties dialog allows you to setup the polygon type information explicitly, including: - individual vertex colours - transparency modes - lighting mode (none, flat, gourard) - colouring mode (none, uniform, gradation) - texture enable (texture selection to be added) The poly prop dialog won't allow you to setup illegal combinations (eg. it won't let you setup a textured poly with both gradation colouring and lightsourcing, as the TMD format doesn't support that). [25/10/98] o Fixed some stuff in the RSD file saving (didn't handle all the poly types I'd added to the TMD saver [21/10/98] - now it does). o Added new Point Lighting function (Tools->Point Lighting). Usage: Select ONE vertex. This is where the light will be focused. Open the Point Lighting dialog from the tools menu. Set the colour of the point lightsource, and it's size. This will static light a model (embedding the lighting information into the TMD file). There is almost no overhead for doing this, so have as many lights as you want (use it for static scenery lighting such as street lights or wall torches). [6/11/98] o Fixed a bug in the "Delete Polygon" function that was causing it to delete polys that weren't actually selected.... o Bugfixed the solid/textured display of Poly4's. [16/11/98] o The axis locks now affect the resize tool. o New 'stretch' tool added. To use, select some bits of the model then select one of the axis locks (X, Y or Z only). Now select the stretch tool and you can 'stretch' the selected polys along the axis you locked. [2/12/98] o Re-worked the Project manager dialog. The buttons that were in it now get their own dialog/toolbar (so you can turn them off if you want - many people didn't use them anyway). o New 'magnet' tool added. Let's you sort of pull an object in a direction. Pretty cool, not sure what I'll use it for yet, but hey.....never mind that eh? o The project manager now uses a tabbed dialog. The first tab is the familiar tree view. The 2nd tab is a text edit pane, which you can type JavaScript into. o Integrated my JavaScript interpreter engine into RsdANIM. Ok, it's missing a bit of the JavaScript language - no worries, I'm working on the interpreter for a comercial project so the RsdANIM version will track the development of that pretty closely. There's no actual interface classes done yet anyway....so you cann't achieve much with it. Look for big things RSN though....we'll call it R-Script in future, so folks don't expect to be able to do WWW access and browser style stuff from it. [3/12/98] o Added new pane to the project window. All R-Script functions appear as buttons in this window when you load them (or type them direct into the edit pane), and are run when you click on the button. [4/12/98] o Started coding some interface classes for the R-Script interpreter. - RSvertex : A floating point vertex/vector class This has pretty much the whole functionality of RsdANIM's own internal C++ Vector class. - RSrsdanim : A core class to control the user interface with. At the moment it's only got a method to open the About dialog, but it proves the point.... - RSmodel : Class that's going to represent a whole RSD model. Doesn't do a lot at the moment though... - ActionReplay : Communications class, allows you to send stuff to the Playstation via a Datel Action Replay. [7/12/98] o New 'Array' class (from JavaScript): - Construction (element list) - expression handler support to array elements (all operators) - indexing - multi-dimensional array suppory (any number of dimensions). - read & write access [8/12/98] o Array's as object attributes now work. o Fixed memory leak for objects created in the top level. o Phew!! You don't realise how many strange gotcha's there are in an expression parser until you really start to use it a bit. Fixed several problems with the ordering of operators in the expression tree and resolution of variables. - Use of arrays anywhere in an expression seems to work ok now. - Arrays of objects works as well. - Assignment to elements of an array works - tried a few quite complex ones eg. model.vertices[10].x=model.vertices[10]/2.0f; o Added support for the Array class 'length' attribute. o Added support for auto-extending arrays. o RSmodel class now has two attributes: - n_vert : number of vertices in the model - vert[] : array of RSvertex objects (one for each vertex in the model) These are loaded from the current edit frame if the model is constructed with a parameter of 1. eg. var my_model=new RSmodel(1); o RSmodel class get's a few methods: - GetEditFrame() : load's the current edit frame from the main RsdANIM program into the RSmodel object - PutEditFrame() : put's the RSmodel object's model representation into the main RsdANIM edit window (an easy way of changing a model this is). o RSrsdanim class get's an extra function: - Redraw() : forces the edit window to redraw (call it after RSmodel::PutEditFrame() to see results). [9/12/98] o Changed the object model quite significantly, as things weren't working in the way JavaScript should: - Old way of handling an object assignment was to copy the object (VariableCopy() did this). So, if you did: var a=new RSrsdanim(); var b=a; You would end up with two seperate (but identical) objects. - New way (which it should have been in the first place) is simply point the second variable at the first object and have two variables refer to the same object. Problems occur in cleaning up and deleting objects through this, so in order to avoid this the JS_OBJECT structure now contains a referance counter which keeps track of how many variables are refering to an object at a given time. So, when you do: var a=new RSrsdanim(); var b=a; 'a' & 'b' both refer to the same object, and changing 'a' will also change 'b'. o Added support for the Array::concat() method (this relied on the previous change being done). [10/12/98] o More additions to the R-Script interpreter: - RSrsdanim::writeln() now accepts variable parameter lists, - array creation using JavaScript var a=["one","two","three"]; syntax now supported. o Bugfixed the Tools->Bone->Delete function. o The R-Script file 'default.rs' is now auto-loaded on startup. Don't mess with it. === NOTE: - Changes to the R-Script interpretter not directly related to RsdANIM (ie. standard JavaScript features and classes) will from now on be listed in a seperate change log (saves me keeping two copies of the changes I make to the JavaScript core interpretter for my day job). === [12/12/98] o The 'Create Polygon' widget is now almost useful. You can add a new polygon to your model by selecting anywhere between 0 and 3 vertices. Clicking Create Polygon will add a new Poly3 to the model. If you select less than 3 vertices, any extra vertices are added automatically. o You can start with an empty model now, and begin adding polygons on a clean slate (this is to allow for what I'm planning to do, which is turn RsdANIM into a full blown modeller). o The texture popup of the polygon properties dialog now works. o Added a texture preview display to the texture wrap & polygon properties dialog (shows the current texture selected in the drop down list box). [14/12/98] o New function "Add Pyramid" - click it and it add's a 4 sided pyramid to the current model. o New function "Add Cube" - click it and it add's a cube to the current model. o Bugfixed some stuff in the texture wrapper. [19/12/98] o New function "Add Cylinder "- click it and it add's a cylinder to the current model. At the moment it's a 12 sided cylinder - as the actual generator routine is algorithmic, I'll add a dialog to let you change the number of sides at some point. [20/12/98] o Removed the "Add Pyramid/Cube/Cylinder" buttons from the toolbars and added a new modeless floating dialog "Object Creator" that lets you add objects to a model. This allows the setting of object creation parameters (eg. the number of sides a cylinder has) and the object name (names will be automatically assigned by default, but you can edit them in the dialog). Just click "Add" to add a new object of the currently selected type. o The "Object Creator" dialog can now be turned on & off from the View->Show Toolbars menu. o Fixed a bug with newly created designs. o The Attatch Group To Bone function now works (and has been added to the popup menu in the project manager and the Edit menu). I cann't remember who was asking about this on the Yaroze news server the other day, but anyway - it's done now. o Added a new object type "Sphere" to the Object Creator. This is like the GeoSphere in 3DS Max, and I'd advise caution in using it as it uses the subdivision algorithm to generate the polys so the number of polygons goes up geometrically as you increase the subdivisions. 0 subdivs gives a figure a bit like two tetrahedron's back to back (the starting object, 6 polygons). 1 subdiv gives an object with 18 polygons (each original triangle was subdivided into 3). 2 subdivs give an object with 54 polygons. 3 subdivs give an object with 162 polygons. 4 subdivs give an object with 486 polygons. As you can see, the number of polygons in the sphere accelerates quite alarmingly - so avoid using numbers bigger than 4 (RsdANIM will do a Deep Thought and go away to think long and hard about it if you use bigger numbers, and you'll end uup with a model the PSX couldn't display anyway). [21/12/98] o Improved display of models when ZOOM'ed up a lot (used to clip with the view plane when a model became to large, now models display correctly and don't end up clipping). o Finally got round to adding a "Pan View" function to allow you to actually work at large magnifications. o Added a "Zoom Area" function (drag box round the area you want to zoom). o Zoom Extents / Scale To Fit function now correctly scales none-centred objects and auto pans to centre object in view. o Added a new object type 'Mesh' - a simple grid mesh. o Added new tool "Bend" - works a lot like the (none-bones) rotate function, except that the rotation is proportional to the distance from the rotation centre. The furthest away point rotates by the largest amount, the closer the point is to the rotation centre the less it rotates by (giving an impression of bending). [23/12/98] o New R-Script functionality: - Can now create models as well as modify existing ones. See "cube.rs" sample for an example that just add's a cube to the model being editted. - The RSrsdanim.Redraw() method now invokes the current view's OnPaint method directly, so you get immediate response. ==================================================== [25/12/98]: PUBLIC RELEASE 1.6 ====================================================