Kanzi  3.9.8
Kanzi Engine C++ API
kanzi::MorphRuntime Class Reference

Contains morph weights for a morph. More...

#include <kanzi/core.ui/graphics3d/morph_runtime.hpp>

Public Member Functions

size_t getAppliedMorphArraySize () const
 Gets the size of the morph weight array that Kanzi sent to the GPU. More...
 
const int * getSelectedIndexData () const
 Gets an integer data array of morph indices. More...
 
unsigned int getSelectedMorph (unsigned int selectedMorphIndex) const
 Gets the selected morph at a given index. More...
 
float getSelectedWeight (unsigned int selectedMorphIndex) const
 Gets the selected morph weight at a given index. More...
 
const float * getSelectedWeightData () const
 Gets a float data array of morph weights. More...
 
size_t getTargetCount () const
 Gets the size of the morph runtime. More...
 
float getWeight (unsigned int index) const
 Gets morph weight at given index. More...
 
void initialize (const Morph &morph)
 Initializes the morph runtime from a morph. More...
 
bool isDirty () const
 Indicates whether the morph weight selection is dirty. More...
 
void resize (size_t channelCount)
 Resizes the data array for morph weights. More...
 
void setWeight (unsigned int index, float weight)
 Sets morph weight at given index. More...
 
void updateSelectedMorphs (size_t maxMorphsFromShader)
 Updates the selected weights with the most weighted morph targets. More...
 

Static Public Member Functions

static MorphRuntimePtr create ()
 Creates a morph runtime. More...
 
static MorphRuntimePtr create (const Morph &morph)
 Creates a morph runtime. More...
 

Protected Member Functions

bool insertSelectedWeight (size_t index, size_t numMorphs, size_t maxMorphs, float currentWeight, size_t currentMorph)
 Insert a weight coupled with morph index into a correct location in selected weights and morphs arrays. More...
 
 MorphRuntime ()=default
 Constructor. More...
 
 MorphRuntime (const Morph &morph)
 Constructor. More...
 
bool tryInsertSelectedWeight (size_t numMorphs, size_t maxMorphs, float currentWeight, size_t currentMorph)
 Tries to insert a weight coupled with morph index into the selected arrays of weights and morphs. More...
 

Protected Attributes

size_t m_appliedMorphWeightArraySize
 Number of valid morph weight channels selected on last update. More...
 
bool m_dirty
 Dirty flag for selected weights arrays. More...
 
vector< int > m_selectedMorphs
 Selected indices for morph weights. More...
 
vector< float > m_selectedWeights
 Selected largest morph weights. More...
 
vector< float > m_weights
 All morph weights. More...
 

Detailed Description

Contains morph weights for a morph.

Constructor & Destructor Documentation

kanzi::MorphRuntime::MorphRuntime ( )
explicitprotecteddefault

Constructor.

kanzi::MorphRuntime::MorphRuntime ( const Morph morph)
explicitprotected

Constructor.

Parameters
morphSource morph to copy.

Member Function Documentation

static MorphRuntimePtr kanzi::MorphRuntime::create ( )
static

Creates a morph runtime.

Returns
Uninitialized morph runtime.
Since
Kanzi 3.9.6 return type changed to MorphRuntimePtr.
static MorphRuntimePtr kanzi::MorphRuntime::create ( const Morph morph)
static

Creates a morph runtime.

Parameters
morphThe morph from which to acquire information when preparing the morph runtime.
Returns
Initialized morph runtime.
Since
Kanzi 3.9.6 return type changed to MorphRuntimePtr.
void kanzi::MorphRuntime::initialize ( const Morph morph)

Initializes the morph runtime from a morph.

Parameters
morphThe morph from which to acquire information when preparing the morph runtime.
void kanzi::MorphRuntime::updateSelectedMorphs ( size_t  maxMorphsFromShader)

Updates the selected weights with the most weighted morph targets.

This reorders the selected morph array based on the heaviest morph weights. If the shader can use more morph weights than are available, Kanzi initializes the remaining channels to zero. If the weights have not been modified, this function is NOP.

Parameters
maxMorphsFromShaderMaximum number of morph targets that the shader can use.
Since
Kanzi 3.9.6
Kanzi 3.9.7 Removed the return value, changed the type of the maxMorphsFromShader parameter to size_t.
size_t kanzi::MorphRuntime::getTargetCount ( ) const
inline

Gets the size of the morph runtime.

Returns
Number of possible morph targets.
Since
Kanzi 3.9.6
Kanzi 3.9.7 renamed to getTargetCount and changed the type of the return value to size_t.
const float* kanzi::MorphRuntime::getSelectedWeightData ( ) const
inline

Gets a float data array of morph weights.

Call updateSelectedMorphs() before you access the weight data.

Returns
Floating-point array of morph weights.
Since
Kanzi 3.9.6
const int* kanzi::MorphRuntime::getSelectedIndexData ( ) const
inline

Gets an integer data array of morph indices.

Call updateSelectedMorphs() before you access the index data.

Returns
Integer array of morph indices.
Since
Kanzi 3.9.7
bool kanzi::MorphRuntime::isDirty ( ) const
inline

Indicates whether the morph weight selection is dirty.

Returns
If the morph weights are dirty, true, otherwise false.
Since
Kanzi 3.9.6
size_t kanzi::MorphRuntime::getAppliedMorphArraySize ( ) const
inline

Gets the size of the morph weight array that Kanzi sent to the GPU.

The size cannot be larger than the number of morph targets that the shader can use. Call updateSelectedMorphs() before you use this value.

Returns
Size of applied morph weight array.
Since
Kanzi 3.9.7
float kanzi::MorphRuntime::getSelectedWeight ( unsigned int  selectedMorphIndex) const
inline

Gets the selected morph weight at a given index.

Call updateSelectedMorphs() before you access the selected morphs.

Parameters
selectedMorphIndexIndex to fetch.
Returns
Weight at given selection index.
Since
Kanzi 3.9.6
unsigned int kanzi::MorphRuntime::getSelectedMorph ( unsigned int  selectedMorphIndex) const
inline

Gets the selected morph at a given index.

Call updateSelectedMorphs() before you access the selected morphs.

Parameters
selectedMorphIndexThe index of the morph that you want get.
Returns
Index to the morph referred to at a given selection index.
Since
Kanzi 3.9.6
float kanzi::MorphRuntime::getWeight ( unsigned int  index) const
inline

Gets morph weight at given index.

Parameters
indexIndex of the weight.
Returns
Weight at index.
Since
Kanzi 3.9.6
void kanzi::MorphRuntime::setWeight ( unsigned int  index,
float  weight 
)
inline

Sets morph weight at given index.

Parameters
indexIndex to set.
weightWeight to set.
Since
Kanzi 3.9.6
void kanzi::MorphRuntime::resize ( size_t  channelCount)
inline

Resizes the data array for morph weights.

Parameters
channelCountThe new number of weights.
bool kanzi::MorphRuntime::tryInsertSelectedWeight ( size_t  numMorphs,
size_t  maxMorphs,
float  currentWeight,
size_t  currentMorph 
)
protected

Tries to insert a weight coupled with morph index into the selected arrays of weights and morphs.

Parameters
numMorphsCurrent number of morphs.
maxMorphsMaximum number of morphs.
currentWeightWeight to check.
currentMorphMorph index associated with the weight.
Returns
If inserting the weight succeeds and the number of weights increases, true, otherwise false.
Since
Kanzi 3.9.6
Kanzi 3.9.7 changed the type of the numMorphs, maxMorps and currentMorph parameters to size_t.
bool kanzi::MorphRuntime::insertSelectedWeight ( size_t  index,
size_t  numMorphs,
size_t  maxMorphs,
float  currentWeight,
size_t  currentMorph 
)
protected

Insert a weight coupled with morph index into a correct location in selected weights and morphs arrays.

Called by tryInsertSelectedWeight() for an insertion location.

Parameters
indexIndex at which to insert the weight.
numMorphsCurrent number of morphs.
maxMorphsMaximum number of morphs.
currentWeightWeight to insert.
currentMorphMorph index associated with the weight.
Returns
If the number of weights increases, true, otherwise false.
Since
Kanzi 3.9.6
Kanzi 3.9.7 changed the type of the index, numMorphs, maxMorps and currentMorph parameters to size_t.

Member Data Documentation

vector<float> kanzi::MorphRuntime::m_weights
protected

All morph weights.

vector<float> kanzi::MorphRuntime::m_selectedWeights
protected

Selected largest morph weights.

vector<int> kanzi::MorphRuntime::m_selectedMorphs
protected

Selected indices for morph weights.

Since
Kanzi 3.9.7 changed to vector<int>
size_t kanzi::MorphRuntime::m_appliedMorphWeightArraySize
protected

Number of valid morph weight channels selected on last update.

Since
Kanzi 3.9.7
bool kanzi::MorphRuntime::m_dirty
protected

Dirty flag for selected weights arrays.


The documentation for this class was generated from the following file: