Skip to main content
Version: Skinetic SDK 1.6.0

ski_effect_properties_t

Haptic Structure to describe how effect instances reproduce a pattern with variations. More...

#include <EffectProperties.h>

Public Functions

Name
ski_effect_properties_t()

Public Attributes

Name
intpriority
floatvolume
floatspeed
intrepeatCount
floatrepeatDelay
floatplayAtTime
floatmaxDuration
inteffectBoost
booloverridePatternBoost
floatheight
floatheading
floattilting
boolfrontBackInversion
boolupDownInversion
boolrightLeftInversion
boolfrontBackAddition
boolupDownAddition
boolrightLeftAddition

Detailed Description

struct ski_effect_properties_t;

Haptic Structure to describe how effect instances reproduce a pattern with variations.

The spatialization properties (height, heading and tilting) allows to apply the pattern on the haptic device at a different location by translating/rotating it or performing some inversion/addition. Notice that combining additions greatly increase the processing time of the transformation. If the pattern possesses too many shapes and keys, a perceptible delay might be induced.

The three transformations are applied in this order: tilting, vertical rotation, vertical translation. The default position of a pattern is the one obtained when these three parameters are set to zero. The actual use of these 3 parameters depends on the default position of the pattern and the targeted interaction: e.g.; for a piercing shot, a heading between [-180; 180]° can be combined with a tilting between [-90; 90] when using a shape-based pattern centered in the middle of the torso; for a environmental effect, a heading between [-90; 90]° (or [-180; 180]°) can be combined with a tilting between [-180; 180]° (resp. [-180; 0]°) when using a pattern with shapes centered on the top, etc. There are no actual bounds to the angles as not to restrict the usage. Notice that actuator-based patterns cannot be transformed in this version.

The global boost intensity is applied to every effects being rendered as to increase them evenly. However, some effects are by design stronger than others. Hence, they all have a default boost value in the .spn that is added to the global boost intensity, and which can be set to compensate the discrepancy of intensity across a set of patterns. Weaker effects can have a high default boost value while, already strong effects can have a negative default boost value as to prevent the global boost intensity set by the user to increase the perceived intensity too much. Note that the resulting boost value is clamp between 0 and 100. When an instance of an effect is being rendered, the default boost value of the pattern, the one set in the design process, is used. If the boolean overridePatternBoost is set to true, the passed value effectBoost is used instead of the default one.

Since all effects cannot be rendered simultaneously, the least priority ones are muted until the more priority ones are stopped of finished rendering. Muted effects are still running, but not rendered.

The priority order is obtain using the priority level: priority increase from 10 to 1. In case of equality, the number of required simultaneous samples is used to determine which effect has the highest priority: effects using less simultaneous samples have a higher priority. Again, if the number of required simultaneous samples is the same, the most recent effect has a higher priority.

Public Functions Documentation

function ski_effect_properties_t

inline ski_effect_properties_t()

Constructor: Initialized using default audio settings.

Public Attributes Documentation

variable priority

int priority;

Level of priority [1; 10] (default - 5). In case too many effects are playing simultaneously, the effect with lowest priority (10) will be muted.

variable volume

float volume;

Percentage of the base volume between [0; 250]% (default - 100): [0;100[% the pattern attenuated, 100% the pattern's base volume is preserved, ]100; 250]% the pattern is amplified. Too much amplification may lead to the clipping of the haptic effects, distorting them and producing audible artifacts.

variable speed

float speed;

Time scale between [0.01; 100] (default - 1): [0.01; 1[ the pattern is slowed down, 1 the pattern timing is preserved, ]1; 100] the pattern is accelerated. The resulting speed between the haptic effect's and the samples' speed within the pattern cannot exceed these bounds. Slowing down or accelerating a sample too much may result in an haptically poor effect.

variable repeatCount

int repeatCount;

Number of repetition of the pattern (default - 1) if the maxDuration is not reached. If set to 0, the pattern is repeat indefinitely until it is either stopped with stopEffect() or reach the maxDuration value.

variable repeatDelay

float repeatDelay;

Pause in second between to repetition of the pattern (default - 0). This value is not affected by the speed parameter.

variable playAtTime

float playAtTime;

Time in the pattern at which the effect start to play (default - 0). This value need to be lower than the maxDuration. It also takes into account the repeatCount and the repeatDelay of the pattern.

variable maxDuration

float maxDuration;

Maximum duration of the effect (default - 0), it is automatically stopped if the duration is reached without any regards for the actual state of the repeatCount. A maxDuration of 0 remove the duration limit, making the effect ables to play indefinitely.

variable effectBoost

int effectBoost;

Boost intensity level percent [-100; 100] (default - 0) of the effect to use instead of the default pattern value if overridePatternBoost is set to true. By using a negative value, can decrease or even nullify the global intensity boost set by the user.

variable overridePatternBoost

bool overridePatternBoost;

By setting this boolean to true (default - false), the effect will use the effectBoost value instead of the default pattern value.

variable height

float height;

Normalized height [-1; 1] to translate the pattern by (default - 0). A positive value translate the pattern upwards. Not applicable to actuator-based patterns.

variable heading

float heading;

Heading angle (in degree) to rotate the pattern by in the horizontal plan (default - 0). A positive value rotates the pattern to the left of the vest. Not applicable to actuator-based patterns.

variable tilting

float tilting;

Tilting angle (in degree) to rotate the pattern by in the sagittal plan (default - 0). A positive value rotates the pattern upwards from front to back. Not applicable to actuator-based patterns.

variable frontBackInversion

bool frontBackInversion;

Invert the direction of the pattern on the front-back axis (default - false). Can be combine with other inversion or addition. Not applicable to actuator-based patterns.

variable upDownInversion

bool upDownInversion;

Invert the direction of the pattern on the up-down axis (default - false). Can be combine with other inversion or addition. Not applicable to actuator-based patterns.

variable rightLeftInversion

bool rightLeftInversion;

Invert the direction of the pattern on the right-left axis (default - false). Can be combine with other inversion or addition. Not applicable to actuator-based patterns.

variable frontBackAddition

bool frontBackAddition;

Perform a front-back addition of the pattern on the front-back axis (default - false). Overrides the frontBackInversion. Can be combine with other inversion or addition. Not applicable to actuator-based patterns.

variable upDownAddition

bool upDownAddition;

Perform a up-down addition of the pattern on the front-back axis (default - false). Overrides the upDownInversion. Can be combine with other inversion or addition. Not applicable to actuator-based patterns.

variable rightLeftAddition

bool rightLeftAddition;

Perform a right-left addition of the pattern on the front-back axis (default - false). Overrides the rightLeftInversion. Can be combine with other inversion or addition. Not applicable to actuator-based patterns.


Updated on 2024-07-11 at 09:47:11 +0000