Kanzi 3.9.10
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.
 
const intgetSelectedIndexData () const
 Gets an integer data array of morph indices.
 
unsigned int getSelectedMorph (unsigned int selectedMorphIndex) const
 Gets the selected morph at a given index.
 
float getSelectedWeight (unsigned int selectedMorphIndex) const
 Gets the selected morph weight at a given index.
 
const floatgetSelectedWeightData () const
 Gets a float data array of morph weights.
 
size_t getTargetCount () const
 Gets the size of the morph runtime.
 
float getWeight (unsigned int index) const
 Gets morph weight at given index.
 
void initialize (const Morph &morph)
 Initializes the morph runtime from a morph.
 
bool isDirty () const
 Indicates whether the morph weight selection is dirty.
 
void resize (size_t channelCount)
 Resizes the data array for morph weights.
 
void setWeight (unsigned int index, float weight)
 Sets morph weight at given index.
 
void updateSelectedMorphs (size_t maxMorphsFromShader)
 Updates the selected weights with the most weighted morph targets.
 

Static Public Member Functions

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

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.
 
 MorphRuntime ()=default
 Constructor.
 
 MorphRuntime (const Morph &morph)
 Constructor.
 
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.
 

Protected Attributes

size_t m_appliedMorphWeightArraySize
 Number of valid morph weight channels selected on last update.
 
bool m_dirty
 Dirty flag for selected weights arrays.
 
vector< intm_selectedMorphs
 Selected indices for morph weights.
 
vector< floatm_selectedWeights
 Selected largest morph weights.
 
vector< floatm_weights
 All morph weights.
 

Detailed Description

Contains morph weights for a morph.

Constructor & Destructor Documentation

◆ MorphRuntime() [1/2]

kanzi::MorphRuntime::MorphRuntime ( )
explicitprotecteddefault

Constructor.

◆ MorphRuntime() [2/2]

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

Constructor.

Parameters
morphSource morph to copy.

Member Function Documentation

◆ create() [1/2]

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

Creates a morph runtime.

Returns
Uninitialized morph runtime.
Since
Kanzi 3.9.6 return type changed to MorphRuntimePtr.

◆ create() [2/2]

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.

◆ initialize()

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.

◆ updateSelectedMorphs()

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.

◆ getTargetCount()

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.

◆ getSelectedWeightData()

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

◆ getSelectedIndexData()

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

◆ isDirty()

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

◆ getAppliedMorphArraySize()

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

◆ getSelectedWeight()

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

◆ getSelectedMorph()

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

◆ getWeight()

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

◆ setWeight()

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

◆ resize()

void kanzi::MorphRuntime::resize ( size_t channelCount)
inline

Resizes the data array for morph weights.

Parameters
channelCountThe new number of weights.

◆ tryInsertSelectedWeight()

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.

◆ insertSelectedWeight()

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

◆ m_weights

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

All morph weights.

◆ m_selectedWeights

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

Selected largest morph weights.

◆ m_selectedMorphs

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

Selected indices for morph weights.

Since
Kanzi 3.9.7 changed to vector<int>

◆ m_appliedMorphWeightArraySize

size_t kanzi::MorphRuntime::m_appliedMorphWeightArraySize
protected

Number of valid morph weight channels selected on last update.

Since
Kanzi 3.9.7

◆ m_dirty

bool kanzi::MorphRuntime::m_dirty
protected

Dirty flag for selected weights arrays.


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