var searchIndex = {}; searchIndex["skeletal_animation"] = {"doc":"A library for data-driven skeletal animation.","items":[[3,"QVTransform","skeletal_animation","Transformation represented by separate scaling, translation, and rotation factors.",null,null],[12,"translation","","Translation",0,null],[12,"scale","","Uniform scale factor.",0,null],[12,"rotation","","Rotation",0,null],[0,"animation","","",null,null],[3,"AnimationSample","skeletal_animation::animation","A single skeletal pose",null,null],[12,"local_poses","","Local pose transforms for each joint in the targeted skeleton\n(relative to parent joint)",1,null],[3,"AnimationClip","","A sequence of skeletal pose samples at some sample rate",null,null],[12,"samples","","The sequence of skeletal poses",2,null],[12,"samples_per_second","","Sample rate for the clip. Assumes a constant sample rate.",2,null],[3,"AnimationClipDef","","",null,null],[12,"name","","",3,null],[12,"source","","",3,null],[12,"duration","","",3,null],[12,"rotate_z","","",3,null],[3,"DifferenceClipDef","","",null,null],[12,"name","","",4,null],[12,"source_clip","","",4,null],[12,"reference_clip","","",4,null],[3,"ClipInstance","","An instance of an AnimationClip which tracks playback parameters",null,null],[12,"clip","","Shared clip reference",5,null],[12,"start_time","","Controller clock time at animation start",5,null],[12,"playback_rate","","Playback rate modifier, where 1.0 is original speed",5,null],[12,"time_offset","","Used to account for changes in playback rate",5,null],[11,"fmt","","",1,null],[11,"fmt","","",2,null],[11,"decode","","",3,{"inputs":[{"name":"__d"}],"output":{"name":"result"}}],[11,"fmt","","",3,null],[11,"decode","","",4,{"inputs":[{"name":"__d"}],"output":{"name":"result"}}],[11,"fmt","","",4,null],[11,"from_def","","",2,{"inputs":[{"name":"animationclipdef"}],"output":{"name":"animationclip"}}],[11,"set_duration","","Overrides the sampling rate of the clip to give the given duration (in seconds).",2,null],[11,"get_duration","","Return the duration of the clip in seconds",2,null],[11,"get_pose_at_time","","Obtains the interpolated skeletal pose at the given sampling time.",2,null],[11,"as_difference_clip","","Create a difference clip from a source and reference clip for additive blending.",2,{"inputs":[{"name":"animationclip"},{"name":"animationclip"}],"output":{"name":"animationclip"}}],[11,"from_collada","","Creates an `AnimationClip` from a collection of `collada::Animation`.",2,{"inputs":[{"name":"skeleton"},{"name":"vec"},{"name":"matrix4"}],"output":{"name":"animationclip"}}],[11,"new","","",5,{"inputs":[{"name":"rc"}],"output":{"name":"clipinstance"}}],[11,"set_playback_rate","","Adjust the playback rate of the clip without affecting the\nvalue of get_local_time for a given global time.",5,null],[11,"get_pose_at_time","","",5,null],[11,"get_duration","","",5,null],[0,"skinned_renderer","skeletal_animation","",null,null],[3,"SkinnedRenderBatch","skeletal_animation::skinned_renderer","",null,null],[3,"SkinnedRenderer","","",null,null],[3,"SkinnedShaderParams","","",null,null],[12,"u_model_view_proj","","",6,null],[12,"u_model_view","","",6,null],[12,"u_skinning_transforms","","",6,null],[12,"u_texture","","",6,null],[12,"_r","","",6,null],[3,"SkinnedVertex","","",null,null],[12,"pos","","",7,null],[12,"normal","","",7,null],[12,"uv","","",7,null],[12,"joint_indices","","",7,null],[12,"joint_weights","","",7,null],[8,"HasShaderSources","","",null,null],[10,"vertex_shader_source","","",8,{"inputs":[],"output":{"name":"shadersource"}}],[10,"fragment_shader_source","","",8,{"inputs":[],"output":{"name":"shadersource"}}],[11,"from_collada","","",9,{"inputs":[{"name":"f"},{"name":"colladadocument"},{"name":"vec"}],"output":{"name":"result"}}],[11,"render","","",9,null],[11,"calculate_skinning_transforms","","",9,null],[11,"fmt","","",6,null],[11,"clone","","",6,null],[11,"create_link","","",6,{"inputs":[{"name":"option"},{"name":"programinfo"}],"output":{"name":"result"}}],[11,"fill_params","","",6,null],[11,"fmt","","",7,null],[11,"clone","","",7,null],[11,"generate","","",7,{"inputs":[{"name":"buffer"}],"output":{"name":"vec"}}],[11,"default","","",7,{"inputs":[],"output":{"name":"skinnedvertex"}}],[0,"blend_tree","skeletal_animation","",null,null],[3,"AnimBlendTree","skeletal_animation::blend_tree","A tree of AnimNodes",null,null],[3,"LerpAnimNode","","An AnimNode where pose output is linear blend between the output of the two input AnimNodes,\nwith blend factor according the blend_param value",null,null],[3,"AdditiveAnimNode","","An AnimNode where pose output is additive blend with output of additive_input\nadded to base_input, with blend factor according to value of blend_param",null,null],[3,"ClipAnimNode","","An AnimNode where pose output is from an animation ClipInstance",null,null],[3,"IKNode","","",null,null],[4,"BlendTreeNodeDef","","Definition of a blend tree, used by AnimationController to construct an AnimBlendTree",null,null],[13,"LerpNode","","",10,null],[13,"AdditiveNode","","",10,null],[13,"IKNode","","",10,null],[13,"ClipNode","","",10,null],[4,"AnimNodeHandle","","",null,null],[13,"None","","",11,null],[13,"LerpAnimNodeHandle","","",11,null],[13,"AdditiveAnimNodeHandle","","",11,null],[13,"ClipAnimNodeHandle","","",11,null],[13,"IKAnimNodeHandle","","",11,null],[6,"ClipId","","Identifier for an AnimationClip within a BlendTreeNodeDef",null,null],[6,"ParamId","","Identifier for animation controller parameter, within a LerpNode",null,null],[8,"AnimNode","","",null,null],[10,"get_output_pose","","",12,null],[11,"clone","","",10,null],[11,"fmt","","",10,null],[11,"decode","","",10,{"inputs":[{"name":"d"}],"output":{"name":"result"}}],[11,"from_def","","Initialize a new AnimBlendTree from the root BlendTreeNodeDef and\na mapping from animation names to AnimationClip",13,{"inputs":[{"name":"blendtreenodedef"},{"name":"hashmap"},{"name":"rc"}],"output":{"name":"animblendtree"}}],[11,"get_output_pose","","Get the output skeletal pose from the blend tree for the given time and parameters",13,null],[11,"synchronize","","For each LerpNode with two animation clips, synchronize their playback rates according to the blend parameter",13,null],[11,"clone","","",11,null],[11,"get_output_pose","","",14,null],[11,"get_output_pose","","",15,null],[11,"get_output_pose","","",16,null],[11,"get_output_pose","","",17,null],[0,"controller","skeletal_animation","",null,null],[3,"AnimationState","skeletal_animation::controller","A state that an AnimationController can be in, consisting\nof a blend tree and a collection of transitions to other states",null,null],[12,"blend_tree","","The blend tree used to determine the final blended pose for this state",18,null],[12,"transitions","","Transitions from this state to other AnimationStates",18,null],[3,"AnimationTransition","","Representation of a state transition to a target state, with a condition and a duration",null,null],[12,"target_state","","The name of the target state to transition to",19,null],[12,"condition","","The condition that will be checked in order to determine\nif the controller should transition to the target state",19,null],[12,"duration","","The duration of the transition, during which a linear blend\ntransition between the current and target states should occur",19,null],[3,"TransitionCondition","","Representation of a condition to check for an AnimationTransition",null,null],[12,"parameter","","The name of the controller parameter to compare with",20,null],[12,"operator","","The comparision operator to use",20,null],[12,"value","","The constant value to compare with the controller parameter value",20,null],[3,"AnimationControllerDef","","Definition struct for an AnimationController, which can be deserialized from JSON\nand converted to an AnimationController instance at runtime",null,null],[12,"name","","Identifying name for the controller definition",21,null],[12,"parameters","","Declaration list of all parameters that are used by the AnimationController,\nincluding state transition conditions and blend tree parameters",21,null],[12,"states","","List of animation state definitions",21,null],[12,"initial_state","","The name of the state that the AnimationController should start in",21,null],[3,"AnimationStateDef","","Definition struct for an AnimationState, which can be deserialized from JSON\nand converted to an AnimationState instance at runtime",null,null],[12,"name","","The identifying name for the state",22,null],[12,"blend_tree","","The blend tree definition for this state",22,null],[12,"transitions","","The transitions to other states that can occur from this state",22,null],[3,"AnimationController","","A runtime representation of an Animation State Machine, consisting of one or more\nAnimationStates connected by AnimationTransitions, where the output animation\npose depends on the current state or any active transitions between states.",null,null],[4,"Operator","","",null,null],[13,"LessThan","","",23,null],[13,"LessThanEqual","","",23,null],[13,"GreaterThan","","",23,null],[13,"GreaterThanEqual","","",23,null],[13,"Equal","","",23,null],[13,"NotEqual","","",23,null],[11,"decode","","",19,{"inputs":[{"name":"__d"}],"output":{"name":"result"}}],[11,"clone","","",19,null],[11,"fmt","","",19,null],[11,"decode","","",20,{"inputs":[{"name":"__d"}],"output":{"name":"result"}}],[11,"clone","","",20,null],[11,"fmt","","",20,null],[11,"is_true","","Returns true if the condition is satisfied",20,null],[11,"clone","","",23,null],[11,"fmt","","",23,null],[11,"decode","","",23,{"inputs":[{"name":"d"}],"output":{"name":"result"}}],[11,"decode","","",21,{"inputs":[{"name":"__d"}],"output":{"name":"result"}}],[11,"fmt","","",21,null],[11,"clone","","",21,null],[11,"fmt","","",22,null],[11,"clone","","",22,null],[11,"decode","","",22,{"inputs":[{"name":"d"}],"output":{"name":"result"}}],[11,"new","","Create an AnimationController instance from its definition, the desired skeleton, and a\ncollection of currently loaded animation clips.",24,{"inputs":[{"name":"animationcontrollerdef"},{"name":"rc"},{"name":"hashmap"}],"output":{"name":"animationcontroller"}}],[11,"update","","Update the controller's local clock with the given time delta",24,null],[11,"set_playback_speed","","Set the playback speed for the controller",24,null],[11,"set_param_value","","Set the value for the given controller parameter",24,null],[11,"get_param_value","","Return the value for the given controller parameter",24,null],[11,"get_parameters","","Return a read-only reference to the controller parameter map",24,null],[11,"get_output_pose","","Calculate global skeletal joint poses for the given time since last update",24,null],[0,"manager","skeletal_animation","",null,null],[3,"AssetDefs","skeletal_animation::manager","A collection of asset definitions, to be loaded from a JSON definition file",null,null],[3,"AssetManager","","",null,null],[12,"animation_clips","","",25,null],[12,"controller_defs","","",25,null],[11,"decode","","",26,{"inputs":[{"name":"__d"}],"output":{"name":"result"}}],[11,"fmt","","",26,null],[11,"new","","",25,{"inputs":[],"output":{"name":"assetmanager"}}],[11,"load_assets","","",25,null],[11,"load_def_from_path","","",25,{"inputs":[{"name":"str"}],"output":{"name":"result"}}],[0,"skeleton","skeletal_animation","",null,null],[3,"Skeleton","skeletal_animation::skeleton","",null,null],[12,"joints","","",27,null],[3,"Joint","","",null,null],[12,"name","","",28,null],[12,"parent_index","","",28,null],[12,"inverse_bind_pose","","",28,null],[6,"JointIndex","","",null,null],[17,"ROOT_JOINT_PARENT_INDEX","","",null,null],[11,"clone","","",27,null],[11,"fmt","","",27,null],[11,"from_collada","","",27,{"inputs":[{"name":"skeleton"}],"output":{"name":"skeleton"}}],[11,"calculate_global_poses","","",27,null],[11,"get_joint_index","","",27,null],[11,"draw","","",27,null],[11,"clone","","",28,null],[11,"fmt","","",28,null],[11,"is_root","","",28,null],[0,"math","skeletal_animation","",null,null],[5,"quaternion_id","skeletal_animation::math","Constructs identity quaternion.",null,null],[5,"quaternion_mul","","Multiplies two quaternions.",null,null],[5,"quaternion_conj","","Takes the quaternion conjugate.",null,null],[6,"Quaternion","skeletal_animation::math::quaternion","",null,null],[5,"id","","Constructs identity quaternion.",null,null],[5,"add","","Adds two quaternions.",null,null],[5,"scale","","Scales a quaternion (element-wise) by a scalar",null,null],[5,"dot","","Dot product of two quaternions",null,null],[5,"mul","","Multiplies two quaternions.",null,null],[5,"conj","","Takes the quaternion conjugate.",null,null],[5,"square_len","","Computes the square length of a quaternion.",null,null],[5,"len","","Computes the length of a quaternion.",null,null],[5,"rotate_vector","","Rotate the given vector using the given quaternion",null,null],[5,"rotation_from_to","","Construct a quaternion representing the rotation from a to b",null,null],[5,"euler_angles","","Construct a quaternion representing the given euler angle rotations (in radians)",null,null],[5,"axis_angle","","Construct a quaternion for the given angle (in radians)\nabout the given axis.\nAxis must be a unit vector.",null,null],[6,"Quaternion","skeletal_animation::math","",null,null],[6,"DualQuaternion","skeletal_animation::math::dual_quaternion","",null,null],[5,"id","","Constructs identity dual-quaternion, representing no rotation or translation.",null,null],[5,"from_rotation_and_translation","","Construct a dual-quaternion from separate rotation and translation components",null,null],[5,"add","","Adds two dual-quaternions",null,null],[5,"mul","","Multiplies two dual-quaternions",null,null],[5,"scale","","Scales a dual-quaternion (element-wise) by a scalar",null,null],[5,"conj","","Returns the dual-quaternion conjugate",null,null],[5,"dot","","Dot product of two dual-quaternions",null,null],[5,"normalize","","Normalizes a dual-quaternion",null,null],[5,"get_rotation","","Extracts rotation component from a dual-quaternion",null,null],[5,"get_translation","","Extracts translation component from a dual-quaternion",null,null],[6,"DualQuaternion","skeletal_animation::math","",null,null],[5,"lerp_quaternion","","",null,{"inputs":[{"name":"quaternion"},{"name":"quaternion"},{"name":"f32"}],"output":{"name":"quaternion"}}],[5,"lerp_dual_quaternion","","Dual-quaternion linear blending. See http://dcgi.felk.cvut.cz/home/zara/papers/TCD-CS-2006-46.pdf",null,{"inputs":[{"name":"dualquaternion"},{"name":"dualquaternion"},{"name":"f32"}],"output":{"name":"dualquaternion"}}],[5,"mat4_rotate_z","","rotation matrix for `a` radians about z",null,{"inputs":[{"name":"f32"}],"output":{"name":"matrix4"}}],[5,"matrix_to_quaternion","","",null,{"inputs":[{"name":"matrix4"}],"output":{"name":"quaternion"}}],[5,"quaternion_to_matrix","","",null,{"inputs":[{"name":"quaternion"}],"output":{"name":"matrix4"}}],[5,"inv_sqrt","","",null,{"inputs":[{"name":"f32"}],"output":{"name":"f32"}}],[5,"solve_ik_2d","","",null,null],[11,"clone","skeletal_animation","",0,null],[11,"fmt","","",0,null],[11,"identity","","",0,{"inputs":[],"output":{"name":"qvtransform"}}],[11,"set_rotation","","",0,null],[11,"get_rotation","","",0,null],[11,"set_translation","","",0,null],[11,"get_translation","","",0,null],[11,"concat","","",0,null],[11,"inverse","","",0,null],[11,"lerp","","",0,null],[11,"transform_vector","","",0,null],[11,"to_matrix","","",0,null],[11,"from_matrix","","",0,{"inputs":[{"name":"matrix4"}],"output":{"name":"qvtransform"}}],[11,"identity","skeletal_animation::transform","",29,{"inputs":[],"output":{"name":"dualquaternion"}}],[11,"set_rotation","","",29,null],[11,"get_rotation","","",29,null],[11,"set_translation","","",29,null],[11,"get_translation","","",29,null],[11,"concat","","",29,null],[11,"inverse","","",29,null],[11,"lerp","","",29,null],[11,"transform_vector","","",29,null],[11,"to_matrix","","",29,null],[11,"from_matrix","","",29,{"inputs":[{"name":"matrix4"}],"output":{"name":"dualquaternion"}}],[11,"from_transform","","",29,{"inputs":[{"name":"dualquaternion"}],"output":{"name":"dualquaternion"}}],[8,"Transform","skeletal_animation","",null,null],[10,"identity","","",30,{"inputs":[],"output":{"name":"self"}}],[10,"concat","","",30,null],[10,"inverse","","",30,null],[10,"lerp","","",30,null],[10,"transform_vector","","",30,null],[10,"to_matrix","","",30,null],[10,"from_matrix","","",30,{"inputs":[{"name":"matrix4"}],"output":{"name":"self"}}],[10,"set_rotation","","",30,null],[10,"get_rotation","","",30,null],[10,"set_translation","","",30,null],[10,"get_translation","","",30,null],[8,"FromTransform","","",null,null],[10,"from_transform","","",31,{"inputs":[{"name":"t"}],"output":{"name":"self"}}],[11,"vertex_shader_source","skeletal_animation::math","",29,{"inputs":[],"output":{"name":"shadersource"}}],[11,"fragment_shader_source","","",29,{"inputs":[],"output":{"name":"shadersource"}}]],"paths":[[3,"QVTransform"],[3,"AnimationSample"],[3,"AnimationClip"],[3,"AnimationClipDef"],[3,"DifferenceClipDef"],[3,"ClipInstance"],[3,"SkinnedShaderParams"],[3,"SkinnedVertex"],[8,"HasShaderSources"],[3,"SkinnedRenderer"],[4,"BlendTreeNodeDef"],[4,"AnimNodeHandle"],[8,"AnimNode"],[3,"AnimBlendTree"],[3,"LerpAnimNode"],[3,"AdditiveAnimNode"],[3,"ClipAnimNode"],[3,"IKNode"],[3,"AnimationState"],[3,"AnimationTransition"],[3,"TransitionCondition"],[3,"AnimationControllerDef"],[3,"AnimationStateDef"],[4,"Operator"],[3,"AnimationController"],[3,"AssetManager"],[3,"AssetDefs"],[3,"Skeleton"],[3,"Joint"],[6,"DualQuaternion"],[8,"Transform"],[8,"FromTransform"]]}; initSearch(searchIndex);