Package animation



    View Source
    const (
    	STEP        = InterpolationType("STEP")        // The animated values remain constant to the output of the first keyframe, until the next keyframe.
    	LINEAR      = InterpolationType("LINEAR")      // The animated values are linearly interpolated between keyframes. Spherical linear interpolation (slerp) is used to interpolate quaternions.
    	CUBICSPLINE = InterpolationType("CUBICSPLINE") // TODO

      The various interpolation types.


      This section is empty.


      This section is empty.


      type Animation

      type Animation struct {
      	// contains filtered or unexported fields

        Animation is a keyframe animation, containing channels. Each channel animates a specific property of an object. Animations can span multiple objects and properties.

        func NewAnimation

        func NewAnimation() *Animation

          NewAnimation creates and returns a pointer to a new Animation object.

          func (*Animation) AddChannel

          func (anim *Animation) AddChannel(ch IChannel)

            AddChannel adds a channel to the animation.

            func (*Animation) Loop

            func (anim *Animation) Loop() bool

              Loop returns whether the animation is looping.

              func (*Animation) Name

              func (anim *Animation) Name() string

                Name returns the animation name.

                func (*Animation) Paused

                func (anim *Animation) Paused() bool

                  Paused returns whether the animation is paused.

                  func (*Animation) Reset

                  func (anim *Animation) Reset()

                    Reset resets the animation to the beginning.

                    func (*Animation) SetLoop

                    func (anim *Animation) SetLoop(state bool)

                      SetLoop sets whether the animation is looping.

                      func (*Animation) SetName

                      func (anim *Animation) SetName(name string)

                        SetName sets the animation name.

                        func (*Animation) SetPaused

                        func (anim *Animation) SetPaused(state bool)

                          SetPaused sets whether the animation is paused.

                          func (*Animation) SetSpeed

                          func (anim *Animation) SetSpeed(speed float32)

                            SetSpeed sets the animation speed.

                            func (*Animation) SetStart

                            func (anim *Animation) SetStart(v float32)

                              SetStart sets the initial time offset value.

                              func (*Animation) Speed

                              func (anim *Animation) Speed() float32

                                Speed returns the animation speed.

                                func (*Animation) Update

                                func (anim *Animation) Update(delta float32)

                                  Update interpolates and updates the target values for each channel. If the animation is paused, returns false. If the animation is not paused, returns true if the input value is inside the key frames ranges or false otherwise.

                                  type Channel

                                  type Channel struct {
                                  	// contains filtered or unexported fields

                                    A Channel associates an animation parameter channel to an interpolation sampler

                                    func (*Channel) InterpolationTangents

                                    func (c *Channel) InterpolationTangents() (inTangent, outTangent math32.ArrayF32)

                                      InterpolationTangents sets the interpolation tangents

                                      func (*Channel) InterpolationType

                                      func (c *Channel) InterpolationType() InterpolationType

                                        InterpolationType returns the current interpolation type.

                                        func (*Channel) Keyframes

                                        func (c *Channel) Keyframes() math32.ArrayF32

                                          Keyframes returns the keyframe buffer.

                                          func (*Channel) SetBuffers

                                          func (c *Channel) SetBuffers(keyframes, values math32.ArrayF32)

                                            SetBuffers sets the keyframe and value buffers.

                                            func (*Channel) SetInterpolationTangents

                                            func (c *Channel) SetInterpolationTangents(inTangent, outTangent math32.ArrayF32)

                                              SetInterpolationTangents sets the interpolation tangents.

                                              func (*Channel) SetInterpolationType

                                              func (c *Channel) SetInterpolationType(it InterpolationType)

                                                SetInterpolationType sets the interpolation type for this channel.

                                                func (*Channel) Update

                                                func (c *Channel) Update(time float32)

                                                  Update finds the keyframe preceding the specified time. Then, calls a stored function to interpolate the relevant values and update the target.

                                                  func (*Channel) Values

                                                  func (c *Channel) Values() math32.ArrayF32

                                                    Values returns the value buffer.

                                                    type IChannel

                                                    type IChannel interface {
                                                    	Update(time float32)
                                                    	SetBuffers(keyframes, values math32.ArrayF32)
                                                    	Keyframes() math32.ArrayF32
                                                    	Values() math32.ArrayF32
                                                    	SetInterpolationType(it InterpolationType)

                                                      IChannel is the interface for all channel types.

                                                      type InterpolationType

                                                      type InterpolationType string

                                                        InterpolationType specifies the interpolation type.

                                                        type MorphChannel

                                                        type MorphChannel struct {
                                                        	// contains filtered or unexported fields

                                                          MorphChannel is the IChannel for morph geometries.

                                                          func NewMorphChannel

                                                          func NewMorphChannel(mg *geometry.MorphGeometry) *MorphChannel

                                                          type NodeChannel

                                                          type NodeChannel struct {
                                                          	// contains filtered or unexported fields

                                                            NodeChannel is the IChannel for all node transforms.

                                                            type PositionChannel

                                                            type PositionChannel NodeChannel

                                                              PositionChannel is the animation channel for a node's position.

                                                              func NewPositionChannel

                                                              func NewPositionChannel(node core.INode) *PositionChannel

                                                              type RotationChannel

                                                              type RotationChannel NodeChannel

                                                                RotationChannel is the animation channel for a node's rotation.

                                                                func NewRotationChannel

                                                                func NewRotationChannel(node core.INode) *RotationChannel

                                                                type ScaleChannel

                                                                type ScaleChannel NodeChannel

                                                                  ScaleChannel is the animation channel for a node's scale.

                                                                  func NewScaleChannel

                                                                  func NewScaleChannel(node core.INode) *ScaleChannel