Release 2.49b ------------ NOTE: the libraries included with v.2.49 are not compatible with v.2.47. List of changes and bug fixes from v.2.47: ------------------------------------------ 1. Material preview system has been added to the material editor. Previewing is started from the material window menu Preview. Preview system is closed when the material window is closed or the preview menu is selected again. Real 3D updates the preview window whenever the APPLY button is pressed. The window which renders the preview image is a normal view window. Therefore, you may freely define its render settings, size, output target (e.g. an external screen) and other properties. This makes the previewing system very flexible. Also the object and mapping type used in previewing can be defined by the user as presented below. The preview system may be customized in the following way: Create a view window. Use View/Window Size to change the size to be the preview size. Use Project/Windows/Window Name to change the name of the view window as 'Preview' (without quotes). Move the window to a suitable place, for example the top left corner of the Real 3D screen. Define suitable render settings for the view. Create an object to be used in the preview and apply a mapping to it. The name of the mapped material isn't important. You may use e.g. a parallel mapping from the front. Select the root object and add SPRV tag to it. You can use Modify/ Properties/Tags to add the tag. The value of the tag is not important, only its existence. This tag is needed because the 'Preview' view window renders only the first object it finds having this tag. Close other Real 3D windows leaving only the 'Preview' view window open. Choose Project/Project/Save sections. Check Windows and Objects only. Choose OK. Save as PREVIEW.PRJ in the PROJECTS directory under the Real 3D installation directory. 2. Relative bitmap-size indipendent texture coordinates have been implemented. They can be accessed from RPL and formula handlers using variables 'relx', 'rely' and 'relz'. Relative coordinates have the following ranges: Parallel mapping: Horizontal mapping edge corresponds interval [0,1] in relx. Vertical mapping edge corresponds interval [0,1] in rely. Mapping plane normal whose length is the average of mapping edges corresponds interval [0,1] in relz. Cylinder mapping: Circumference of cylinder corresponds interval [0,2¶] in relx. Axis corresponds interval [0,1] in rely. Radial distance from axis to circumference corresponds interval [0,1] in relz. Sphere mapping: Circumference of sphere corresponds interval [0,2¶] in relx. The arc between the poles corresponds interval [0,¶] in rely. Radial distance from center to circumference corresponds interval [0,1] in relz. Disk mapping: Circumference of disk corresponds interval [0,2¶] in relx. Radial distance from the center to the circumference corresponds interval [0,1] in rely. Mapping plane normal whose length is the radius of the disk corresponds interval [0,1] in relz. Default mapping: relx, rely, and relz are the absolute space coordinates. Spline mapping: relx and rely are the 'natural' surface parameters: the edges of the mesh correspond interval [0,1] in relx and rely. relz is always zero. 3. Built-in fractal noise based handlers use now relative mapping coordinates and their densities are therefore easier to control. For example, a parallel mapped Marble handler texture does not stretch in 'z' (mapping normal) direction when the mapping rectangle is resized. 4. A new scope handler called 'Depth' added. It limits the material scope in 'z' (depth) direction to the interval specified by 'a' and 'b' scope handler parameters. For example, if a=0 and b=0.1, a parallel mapping maps the material 0.1 abs. space meters deep into the target objects from the mapping rectangle level to the direction specified by the small peak. This handler can be used for example to map a texture to one side of a cube only. Another new scope handler is 'Angle'. It defines the scope of the material as a function of the viewing angle to the surface. The angle is described using a value from -1 to 1. -1 and 1 correspond directions perpendicular to the viewed surface, and 0 corresponds viewing along the surface. The parameters 'a' and 'b' specify the range, inside which the scope is unchanged. Outside the interval, scope is set to zero. Typically, this handler can be used to create 'one-sided' textures. For example, a texture map on a rectangle can be set to paint only one side of the rectangle by selecting Angle handler with a=0, b=1.1 (the extra 0.1 is for eliminating accuracy problems). If a=-1.1, b=0, the opposite side will become textured. 5. Project/Windows/Window Name function added. 6. Create/Freeform/Triset From Mesh put back. Useful only for data export purposes. 7. View/Render/Export DXF added. Exports polygonal objects and freeforms, quadric primitives are exported as curve data corresponding the wireframe. 8. Shading errors (small holes) of dense meshes fixed. 9. Links sometimes moved their target objects when the scene was rendered. This error is now removed. 10. Invalid material editor Index handler parameters are now checked and reset. 11. Object->IPlane with an attribute primitive handled now properly. 12. Inversed kinematics modifies skeletons primarily in the plane in which the skeleton was created. This makes the modification behave more consistently. 13. Inversed kinematics with closed lines sometimes chrashed the system. This is fixed now. 14. Tangent force creation now handles Orbit gadget. Tangent force edit does not ghost RPL/formula fields improperly any longer. 15. If the first point for a modification was defined using dragging and snap to grid was selected as a previous function, the first defined point was not snapped to grid in depth direction. This sometimes deformed objects e.g. in rotations. 16. Double buffered screens use now font definitions from system preferences just like other screens. 17. Finite objects inside levels with Infinite attribute render now correctly. 18. Modify/Properties/Color with shift pressed opens a modal color dialog. Previously too high register color indexes were not handled properly, but now they are converted to the visible range of the current screen. 19. Scope-weighted materials got random reflective and refractive colors when the total sum of material scopes was less than 100 (i.e. blending to default material occurred). Diffuse shading was OK. Fixed now. 20. In key editor, a left mouse button click picks only one knot at a time. This makes it possible to separate knots which overlap, e.g. after inserting new keys in which case the last knot overlaps with inserted knots. 21. Very small, slightly elliptic spheres sometimes rendered improperly. The result was a box-like, distorted shape. Fixed. 22. Busy requester sometimes left a temporary screen open. Fixed now. 23. External screen saving header text is now correct. 24. RT_INVISIBLE light sources do not affect autoexposure any more. 25. Macro execute no longer crashes with skeletons. 26. Morphing method now morphs also the color of objects. 27. Modify/Freeform/Exchange swaps the open&close attributes automatically. 28. Animate/Create/Morphing now creates new level object for the created morphing hierarchy when necessary. 29. Random value for 'rnd' variable is now generated once per each animation frame/sample. earlier it was updated only if there was SFOR or SRPL tag associated with the method. Note that the value of this variable remains the same during one frame. 30. The system how groups and links find their targets has been improved. It is still based on the tag SIDE but now the value of the SIDE tag can freely be modified. Duplicate identifiers no longer cause problems because the object hierachy determines how the references are resolved. For example, the RightLeg could be created by duplicating the LeftLeg: Legs LeftLeg mesh SIDE=leg group SIDE=leg RightLeg mesh SIDE=leg group SIDE=leg and the system works just fine. 31. Bugs related to material handlers and variables rnd, I, t, Frm, Smp and Res fixed. 32. The function Animate/Edit can now be used for specifying 'Periodic/Non-periodic' and 'Interpolative/Extrapolative' information for all animation methods where these attributes make sense. 33. Animate/Edit updates now Undo buffer. 34. ICNT tag added for CREATION method. The tag can be used for specifying maximum number of objects that can be created. This provides the user with easy way to make sure that the creation method won't eat all the memory. 35. The material Index handler procedures/formulas can now use all general animation system related variables, such as Frm, T, Res etc. 36. RPL words .S and VLIST corrected. 37. RPL word SPRINTF takes the parameters in a more natural order. e.g. 40 STRING temp 1 2 3 "one %d, two %d, three %d" temp SPRINTF temp PUTS now prints one 1, two 2, three 3 not one 3, two 2, three 1 as before. 38. RPL word PUTS can now have a format string, e.g. "Hi there!" PUTS prints Hi there! and 2 3 + "high %d" PUTS prints high 5 39. Cross-platform binary compatibility fully implemented. Binary files can be exchanged between Amiga and Windows versions (starting from Real 3D for Windows v.2.47). 40. RPL words ! and @ and corresponding words for other data types have been changed to STORE and FETCH for readability reasons. The original words are defined in the new rpl-startup and vectors.rpl files. If you encounter problems in executing old RPL scripts, replace ! by FETCH and @ by STORE or include the appropriate word definitions. 41. Cut pyramid primitives with collapsed bounding planes (e.g. prism shapes) define now sensible volumes, and consiquently do not produce rendering errors. 42. Real 3D now recognizes DONGLE=PARALLEL tool type definition in the program icon. This instruct Real 3D to look the parallel port first when examining the dongle protection (2nd mouse port is checked first by default). This prevents unnecessary interference with mouse port devices when parallel dongle is used. 43. Rendering boxes sometimes rendered empty or objects were missing. This bug is now fixed. 44. One bone skeletons can be created again. Temporary beta version bug. 45. A double buffered window inherits the properties of the parent screens more accurately. 46. Measuring window created enforcer hits. This temporary beta version bug is now fixed. 47. A built-in key binding for showing selected objects by flashing their wireframe implemented. The hot-key is '0'. 48. Autofocus from a view control window did not read the modified view settings back to the control window, and therefore the new modification from the control window was based on old values. This works now properly. 49. When Extras/Vectors/Push selected function was selected from other than a view window to push a skeleton primitive to the stack, the program sometimes crashed. The bug is now fixed. 50. The last 1 to 15 pixels of a rendering box or an image sometimes rendered in background color. This happened when the size of a bitplane in bytes rounded to a word boundary was not divisible by four, i.e. the height of the image was an odd number and (width+15)/16 was an odd number as well. 51. DXFtoRPL converter has been improved. It converts DXF version 12 files. 52. 'Modify/Properties/Skeleton Attributes' dialog contains new control called 'Fidelity'. It can be used for controlling the orientation of skeleton targets with respect to the direction of the skeleton. The value of 0 causes the orientation of target object match exactly the orientation of the corresponding bone of the skeleton. The higher the value the more the orientation is determined also by the next and previous bones of the skeleton. This can be, for example, used for simulating skin behaviour when using skeletons for character animations. Note: the fidelity value for the last joint does not have any effect, because there is no bone starting from that joint. 53. A new tag 'FSKF' is used by the SKELETON method. FSKF defines the same 'fidelity' property as the value in the skeleton attributes requester, but the tag defines it for each target separately, thus allowing more accurate control. The value range of the tag is from 0 to 1, 0 corres- ponding a situation where the orientation of the target follows the bone totally. For example, a spline-modelled arm, subdivided into cross-sections which are controlled by a SKELETON method, can be made bend smoothly at elbow by adding the tag 'FSKF=0.5' to the cross-sections at both sides of the elbow joint. 54. V.2.48 saved skeleton primitives and objects with rethinked Boolean wireframes improperly. This bug is fixed in v.2.49. If the new version cannot load scenes containing these objects, try reading the scenes to v.2.48, export them in RPL, and execute the PRL file as named macro from v.2.49. V.2.49b changes: 55. Shadow computation accuracy improved. In earlier versions, very distant light sources produced disconnected shadows. 56. texture antialiasing feature added to the material window. This function improves rendering quality for example when rendering infinite, chequered planes so that the texture gets dense in horizon and bad aliasing problems arise. 57. Dongle protection removed.