ThreeJS Property Binding and Mixer
PropertyBinding
Internally, this holds a reference to real property in the scene graph.
Constructor
PropertyBinding( rootNode : Object3D, path, parsedPath )
-- rootNode: -- path -- parsedPath (optional)
Properties
The properties are as follows:
- .path : Number
- .parsedPath : Number
- .node : Number
- .rootNode : Number
- .BindingType : Object
- .Versioning : Object
- .GetterByBindingType : Array
- .SetterByBindingTypeAndVersioning : Array
Methods
.getValue ( targetArray : Array, offset : Number ) : undefined
.setValue ( sourceArray : Array, offset : Number ) : undefined
.bind ( ): undefined
Create getter / setter pair for a property in the scene graph. Used internally by getValue and setValue.
.unbind ( ): undefined
Unbind getter / setter pair for a property in the scene graph.
.Composite ( targetGroup, path, optionalParsedPath ) : Constructor
Create a new Composite PropertyBinding.
.create ( root, path, parsedPath ) : Constructor
Create a new Composite PropertyBinding (if root is an AnimationObjectGroup) or PropertyBinding.
.parseTrackName ( trackName ) : Constructor
Matches strings in the following forms:
-- nodeName.property
-- nodeName.property[accessor]
-- nodeName.material.property[accessor]
-- uuid.property[accessor]
-- uuid.objectName[objectIndex].propertyName[propertyIndex]
-- parentName/nodeName.property
-- parentName/parentName/nodeName.property[index]
-- .bone[Armature.DEF_cog].position
-- scene:helium_balloon_model:helium_balloon_model.position
.findNode ( root, nodeName ) : Constructor
Find a node in a node tree or Skeleton.
PropertyMixer
Internally used buffered scene graph attribute that enables for weighted accumulation.
Constructor
PropertyMixer( binding : PropertyBinding, typeName : String, valueSize : Number )
-- binding
-- typeName
-- valueSize
Properties
The properties of the package are as follows:
.binding : PropertyBinding
.buffer : TypedArray
Buffer with size valueSize * 4.
This has the layout: [ incoming | accu0 | accu1 | orig ]
The data is then sent to 'incoming' by interpolators who use.buffer as their.result. For the cumulative result, 'accu0' and 'accu1' are utilised frame-interleaved and compared to find changes. 'orig' saves the property's initial state.
.cumulativeWeight : Number
Default is 0.
.valueSize : Number
.referenceCount : Number
Default is 0.
.useCount : Number
Default is 0.
Methods
.accumulate ( accuIndex : Number, weight : Number ) : undefined
Accumulate data in buffer[accuIndex] 'incoming' region into 'accu[i]'.
If weight is 0 this does nothing.
.apply ( accuIndex : Number ) : undefined
Apply the state of buffer 'accu[i]' to the binding when accus differ.
.saveOriginalState ( ) : undefined
Remember the state of the bound property and copy it to both accus.
.restoreOriginalState ( ) : undefined
Apply the state previously taken via 'saveOriginalState' to the binding.