Release Notes for Build 129 and Release Notes for Build 130: Difference between pages

From C4 Engine Wiki
(Difference between pages)
Jump to navigation Jump to search
(Created page with "__NOTOC__ '''Release date:''' November 3, 2006 * Designed and implemented an animation blending system. The <code>Entity</code> class can now own a tree of Animator objects that calculate transforms for the node hierarchy rooted at the entity node. Each animator has its own target root node so that it can be assigned to a subtree of the whole entity. Animators can calculate transforms in any way they wish, and the final transforms output by the root animator are ultimat...")
 
(Created page with "__NOTOC__ '''Release date:''' November 10, 2006 * Finished the animation blending system based on a new design. There are three built-in animator subclasses that provide general functionality, and applications can define custom animators for more specific purposes (see next note). Each animator in the tree assigned to an entity targets a range of nodes rooted at a given target node (which is often the entity itself). * The <code>FrameAnimator</code> class is used to pl...")
 
Line 1: Line 1:
__NOTOC__
__NOTOC__
'''Release date:''' November 3, 2006
'''Release date:''' November 10, 2006


* Designed and implemented an animation blending system. The <code>Entity</code> class can now own a tree of Animator objects that calculate transforms for the node hierarchy rooted at the entity node. Each animator has its own target root node so that it can be assigned to a subtree of the whole entity. Animators can calculate transforms in any way they wish, and the final transforms output by the root animator are ultimately applied by the <code>Entity</code> class.
* Finished the animation blending system based on a new design. There are three built-in animator subclasses that provide general functionality, and applications can define custom animators for more specific purposes (see next note). Each animator in the tree assigned to an entity targets a range of nodes rooted at a given target node (which is often the entity itself).


* '''NOTE:''' Some parts of the animation blending system have been intentionally removed from this release because they are being redesigned. The complete system will be included with the next release.
* The <code>FrameAnimator</code> class is used to play an animation stored in an animation resource. This replaces the functionality that was previously part of the <code>Entity</code> class. The frame animator is based on time instead of frame number, and its rate can be changed arbitrarily. Control over the playback is accessed through the <code>Interpolator</code> object returned by the <code>FrameAnimator::GetFrameInterpolator()</code> function.


* Implemented horizon maps. It is now possible, while importing a normal map, to generate two auxiliary textures that contain data about how bumps cast shadows onto themselves. When the "Generate horizon maps" check box is selected in the Texture Importer dialog, two additional textures with suffixes <code>-h1</code> and <code>-h2</code> are created along with the normal map. Once these exist, horizon mapping can be enabled for a material by selecting the "Apply horizon maps" check box in the General pane of the Material Manager. Horizon maps can only be applied when a single normal map is present in a material, and they use the same texture coordinates as the normal map.
* The <code>MergeAnimator</code> class can be used to combine the outputs of multiple animators. It takes the outputs of all of its subnodes and combines them into a single output. Later subnodes can override the outputs of earlier nodes.


* There is a new setting in the Graphics Options dialog that enables or disables horizon mapping globally.
* The <code>BlendAnimator</code> class blends the outputs of at most two sub-animators. The weight of each animator is controlled through another <code>Interpolator</code> object that can be retrieved with the <code>Animator::GetWeightInterpolator()</code> function. Weights are always renormalized by the blend animator, so they don't need to sum to one.


* Removed the two-sided and alpha test flags from the <code>GeometryObject</code> class. These rendering flags can now only be set in a material.
* Removed the bone modifier mechanism that was being used to twist the spine of the player as he looked around. This is now handled by a custom animator called <code>SpineTwistAnimator</code> in the game code.


* Added a new type of particle that can be used for ribbon/trail effects. When the <code>kParticlePolyboard</code> constant is specified as a particle's style, then the <code>PolyParticle</code> structure must be the base structure used in the particle pool. It contains a tangent direction, a texture coordinate, and a flag indicating whether the particle is the last in a single polyboard. If it is not the last, then the polyboard continues to the next particle in the system. If it is the last, then the next particle begins a new polyboard. The radius of a particle controls the width of the polyboard.
* Fixed a bug that could cause a crash on exit when using microfacet shading together with fog.


* Several big changes have been made to the Message Manager. The <code>PlayerMgr</code> class has been removed from the engine and replaced with a system based on events that are passed to handler functions in the <code>Application</code> class.
* Fixed a crash that would occur if you combined dual textures, refraction, and environment mapping in a single material.
 
* Two new general classes have been defined for distributing information to client machines in a multiplayer game. The <code>StateSender</code> class is used to send initial state when a new client joins a game, and the <code>SnapshotSender</code> class is used to send state at fixed intervals during gameplay.
 
* Added a new script function to the <code>PanelController</code> that activates panel items. This runs the scripts attached to the panel items as if the player had clicked on them.
 
* Removed the <code>PositionMarker</code> class and renamed the <code>LocationMarker</code> class to <code>LocatorMarker</code>. All position markers will be converted to locator markers automatically. There was really no need to have two different marker types that essentially mean the same thing.
 
* In the Game Module, the player's weapon is now visible in the first-person view. Both the weapon and the flashlight are now hooked up to a special mount node that the attached to the character. The player's hands do not yet grasp the weapon correctly—we are planning to use IK in a future release to keep the hands in the right place. There are a couple of additional minor issues: projectiles do not yet fire directly out of the weapons, and motion blur around the border of the weapon is not acceptable when the background is in motion. These will both be addressed in a future release.
 
* The geometry building code now splits vertices along edges that are too sharp to share normals. The Collada Importer now preserves the normal vectors on all imported geometry.
 
* The Collada Importer now recognizes the custom bump map settings written by 3DS Max.
 
* The Graphics Manager will now attempt to auto-configure some rendering options. On lower-end graphics chips, some options will be turned off automatically the first time the engine is run.
 
* Fixed a problem in which some geometries in a zone may not be lit properly if the zone is visible through multiple portals simultaneously and a particular light region doesn't intersect all of the camera regions.
 
* Made some small changes to the material manager layout. The two-sided flag, alpha test flag, and texture blend mode menu have been moved to a new Options pane. New settings for enabling horizon mapping in a material are also in the Options pane.
 
* Made several updates to the Texture Importer tool. You can now specify a different output name in the import dialog. The <code>itexture</code> command can now take command line parameters to specify import settings. If any parameters are specified, then the import dialog is not displayed. This allows batch texture imports to be performed by storing a bunch of <code>itexture</code> commands in a <code>cfg</code> file and executing it (with the exec command). See the [[Texture Importer]] page for a description of the command line parameters.
 
* Added a check box to the Texture Viewer tool that lets you turn alpha blending on and off.
 
* Fixed a minor glitch that would cause the in-air propulsion to be too high for the first frame during which the player is falling. This caused a noticeable burst of acceleration on slower machines when you did something like walk off the edge of a platform.

Latest revision as of 09:40, 15 July 2023

Release date: November 10, 2006

  • Finished the animation blending system based on a new design. There are three built-in animator subclasses that provide general functionality, and applications can define custom animators for more specific purposes (see next note). Each animator in the tree assigned to an entity targets a range of nodes rooted at a given target node (which is often the entity itself).
  • The FrameAnimator class is used to play an animation stored in an animation resource. This replaces the functionality that was previously part of the Entity class. The frame animator is based on time instead of frame number, and its rate can be changed arbitrarily. Control over the playback is accessed through the Interpolator object returned by the FrameAnimator::GetFrameInterpolator() function.
  • The MergeAnimator class can be used to combine the outputs of multiple animators. It takes the outputs of all of its subnodes and combines them into a single output. Later subnodes can override the outputs of earlier nodes.
  • The BlendAnimator class blends the outputs of at most two sub-animators. The weight of each animator is controlled through another Interpolator object that can be retrieved with the Animator::GetWeightInterpolator() function. Weights are always renormalized by the blend animator, so they don't need to sum to one.
  • Removed the bone modifier mechanism that was being used to twist the spine of the player as he looked around. This is now handled by a custom animator called SpineTwistAnimator in the game code.
  • Fixed a bug that could cause a crash on exit when using microfacet shading together with fog.
  • Fixed a crash that would occur if you combined dual textures, refraction, and environment mapping in a single material.