Unreal Developer Network Technical
Welcome to the Unreal Developer Network The Engine Unreal Powered Content Creation Technical Playstation2 Xbox Gamecube Licensee Log In

Technical

Technical home

Documents listed below, but not hyperlinked, are restricted to engine licensees only.

As certain texts become relevant, due to released games using that technology, new documents will be made available. Check back often!
 
Getting Started
   - WhatToReadFirst
   - WhoDoIAskAbout
   General Engine Support
   - UnProg (mailing list)
   - UnProgTraffic (summaries)
   - UnDevIRC (chat)
   - UnDevIRCTraffic (summaries)
   Codedrop-Specific Support
   - NextCodeDropStatus
   - CodeDrop2110
   - CodeDrop927
   - CodeDrop829
   - Patch777PS2
   - CodeDrop777
   - CodeDrop739
   - CodeDrop697
   HW/SW Support
   - RecommendedHardware
   - RecommendedSoftware
   - AthlonLockups
   - ImmersionForceFeedback
   - BelkinSpeedPad
   Toolchain Support
   - VTuneUsage
   - VisualSourceSafe
   - UnrealScriptHighlighting
   - VisualStudioAddIns
   - UnrealToolsAddin < br>    - UnrealToolsDotNet
   - UnrealDebugging
   - UnDox
   - AutoDiff
   - SearchUCinXP
   - EnhancedPkgCommandlet
   - UnrealScriptDebugger
   - BuildingUnrealOnLinux
   - NoStepInto

Unreal Specifics
   - NewProjectPreparation
   Basics
   - UnrealScriptReference
   - UnrealClasses
   - CollisionHash
   - UnrealStrings
   - MemAlloc
   - ConsoleCommandLineParameters
   - UccCommandlet
   - IniFilesTutorial
   - SaveConfiguration
   - GameRules
   - UmodInstaller
   Rendering Architecture
   - RenderingPipeline
   - CameraEffects
   - TypedTextCameraEffect
   Skeletal System
   - UWSkelAnim
   - UWSkelAnim2
   - ExtendingUWSkelAnim
   - SkeletalAttachments
   - SkeletalBlending
   - AdditionalSkelNatives
   - PhysicsBasedAnim
   - AnimNotifies
   - BinaryFormatSpecifications
   Physics
   - PhysicsOverview
   - RootMotionPhysics
   Particle System
   - ParticlesInfo
   - RibbonEmitter
   - ParticleExtensions
   New Particle Editor
   - ParticleSystemEditorCode
   User Interface
   - HeadsUpDisplayTutorial
   - InteractionBasics
   Materials
   - MaterialTricks
   Projected Textures
   - ProjectorTricks
   - RenderToTextureShadows
   - RenderToTextureShadows2
   UnrealScript
   - UnrealScriptDelegates
   - ScriptQuats
   - ConditionalCompilation
   - AsyncFilePackage
   UnrealEd
   - AnimatedTextureBrowser
   - ViewCorrected3DDrag
   Networking
   - NetworkingTome
   - PlayerReplicationHandout
   Terrain
   - TerrainChanges927
   Other Stuff
   - PathingImprovements
   - GameAndAIHandout
   - SubmitBugReport
   - GraphsAndMemory
   - BumpMapping
   - MakeYourOwnDemoMode
   - ExportGeometryIntoMAX
   - InGameMovies
   - CustomArchives
   - LicenseeCodePool
   - LicenseeFileExtensions

Misc
   - CodeDropSong
   - UptBenchmarks

mathengine.gif
Karma Physics
   - KarmaReference
   - VehiclesInUT2003

Contribute!
You can create a new page, and then you can edit this list to add it to the categories, as well as edit the Technical homepage to tell everyone about it!

Make Requests!
You can also stop by the UdnStaff page to see what we're working on, and edit it to add your own document requests.


Please take note! For mod developers working with Unreal Tournament 2003, this documentation is meant to be a starting point for your own explorations into UT2003, not a definitive guide. There will be differences between the documentation here and the product in your hands, and you may have to figure out quite a bit for yourself. Check out the Unreal Tournament 2003 page in the Unreal Powered area for links to community sites if you're having problems. UDN is a licensee support site, and cannot provide technical support or game-specific assistance to end users.

SkeletalBlending

Licensees can log in.

Interested in the Unreal engine? Check out the licensing page.

Questions about UDN itself? Contact the UDN Staff.

Crude Skeletal Blending Notes

Last updated by Erik de Neve (EpicGames). Original author was Erik de Neve (EpicGames).

  • Crude Skeletal Blending Notes
    • Caveat
    • Some notes on UW's skeletal blending
    • Animation script commands
      • Channel-based animation blending
      • AnimEnd- and other notifications:
    • Console commands for special rendering modes

Caveat

This doc is woefully lacking. More is coming.

Some notes on UW's skeletal blending

Multiple animation channels/stages are used to blend into the animation track. Each channel can have its own UMeshAnimation (formerly UAnimation) object linked to it at runtime.

Limitation: for networking purposes, the base channel still works as usual. Additional blended channels are not automatically replicated.

Blending works fine for client-side animations, any special network requirements for blended animation are meant to be implemented at a higher level (e.g. through replicated function calls.)

Animation script commands

Channel-based animation blending

Play/Loop/Tweenanim calls have optional channel parameters (default to 0)

LinkSkelAnim works the same as it was, but now takes a channel to link to. The UMeshAnimation (formerly UAnimation) linked to a mesh instance is no longer saved with the actor, but set explicitly at runtime - if not, it is retrieved from the mesh's defaultanimation as usual.

LinkSkelAnim( MeshAnimation Anim, int Channel );

AnimBlendParams() is called before a PlayAnim to control blending as follows:

AnimBlendParams( int Channel, float BlendAlpha, float InTime, float OutTime, optional name BoneName );

  • BlendAlpha: how much to blend into the base animation ( 0-1 ) ( Higher channels blend in after lower channels, so order is important.)
  • InTime: ease-in time to ramp up to full BlendAlpha ( 0-1, a fraction of total animation sequence time)
  • OutTime: reserved (not currently implemented)
  • BoneName: name of the start bone from which the blending is to take effect, down the hierarchy.

GetAnimParams is used to retrieve the animFrame and AnimRate from a channel as it is active:

GetAnimParams( int Channel, out name OutSegName, out float OutAnimFrame, out float OutAnimRate );

AnimEnd- and other notifications:

AnimEnd event calls can be traced to the guilty channel because they now contain the channel as a parameter:

event AnimEnd( int Channel )
{
   // some action
}

Also note that blending channels are not symmetrical - the end effect is order-dependent, applied from low to higher numbers.

When notification functions have been called ( the ones linked to animations using the "#exec anim notify " commands in script ), you can obtain the guilty channel with:

int GetNotifyChannel();

Notifications can be switched off (0) for the currently active AnimStage with:

EnableChannelNotify ( int Switch );

Minor feature:

#exec anim notify lines now should accept FRAME=xx parameters as optional alternative to TIME=xx.

Console commands for special rendering modes

rend blend
This toggles the rendering of normals on meshes, for skeletal meshes, they are colored with the number of influences (green =1, red=2, pink=3, light blue=4, white for 5+ )

rend bone
Toggles the rendering of bones (prevents rendering the regular mesh), where each bone's origin shows the local coordinate system with a small axis system, X,Y,Z = red,green,blue. Also, a purple 'root' line is drawn from the mesh's local space origin to the the 0th/root bone.


SkeletalBlending - r1.7 - 06 Mar 2003 - 16:23 GMT - Copyright © 2001-2003 Epic Games
Unreal Developer Network Content by those crazy Perilith guysSite design and art by 2 design