/------------------------------------------------------------------------------
Document about relaxation demosystem effect: "boxGrower"
Updated 2017/7/16
adapt 2017
------------------------------------------------------------------------------/
Generic description:
The effect is growing tree like structures from selected
mesh shapes (configured in Skene.qml file) with chosen
interval and pattern either on a plane or from surfaces
of any objects (this surfaces emit still TBD!).
Effect is based on seed meshes emitted into the trans VBO.
These seed meshes emit a copy of itself every emitRateMS time (in
milliseconds), and also make another branch every branchRateMS (also in
milliseconds).
The term brancLevel is defined to be 0 for the main branch, 1 for the child
branches of the main branch, 2 for the children of these and so on (increase
by one on each child branching).
-------------------------------------------------------------------------------
grow.discardEdgeLen
The whole triangle is discarded when any edge length exceeds this value.
-------------------------------------------------------------------------------
grow.maxDist
Maximum distance for the vertices from the origo, after which they are
discarded.
-------------------------------------------------------------------------------
grow.emitRateMS
How often a new box is cloned from the previously last cloned box.
-------------------------------------------------------------------------------
grow.branchRateMS
How often a new branch is generated (MS as in milliseconds) either from
the main branch or from any child branch.
grow.branchRateVar
The variation of the branch rate MS.
grow.branchRateFreq
The variation frequency of the branch rate MS.
-------------------------------------------------------------------------------
grow.maxBranch
Maximum number of branches done in the main branch. Each child branch has
each one less of the max branches as their parent (meaning in other words
that this parameter is decreased one per level).
-------------------------------------------------------------------------------
grow.maxLevel
Maximum branch level limiting the number of child recursions to this value.
-------------------------------------------------------------------------------
grow.maxAgeSec
Maximum age in seconds for each box since they are emitted.
-------------------------------------------------------------------------------
grow.maxEmitTimeSec
Maximum emit time in seconds, if this is for example 10.0 then no
emits into the whole tree are done after all boxes are older than 10s.
-------------------------------------------------------------------------------
grow.move
How much the new emitted box is moved from the previous. Together with
.grow.emitRateMS forms the growing speed.
grow.moveX, .grow.moveY, .grow.moveZ
XYZ specific scales for the base move.
-------------------------------------------------------------------------------
grow.movePerLevel
How much the base move value is modified per each child branch level.
The move value of the child branch is
moveChild = move + movePerLevel*branchLevel
-------------------------------------------------------------------------------
grow.moveOfs
How much the move goes towards Y-axis in addition to the sincos curve.
-------------------------------------------------------------------------------
grow.moveOfsPerLevel
How much the moveOfs value is modified per each child branch level.
-------------------------------------------------------------------------------
grow.moveFreq
The frequency for the sincos move curve variation.
-------------------------------------------------------------------------------
grow.moveFreqVar
How much the moveFreq is varied (with another sincos curve).
-------------------------------------------------------------------------------
grow.sca
How much each emit of a new box scales the previous emitting box. Done only
once at the emit time. Prefer to keep this close to 1.0
-------------------------------------------------------------------------------
grow.scaVar
How much the scale of the emitted box is varied. Prefer to keep this close
to 0.0
-------------------------------------------------------------------------------
grow.scaVarFreq
What is the frequency for the scale variation.
-------------------------------------------------------------------------------
grow.scaVarPhase
The phase for the scale variation. (Is this really needed??!?)
-------------------------------------------------------------------------------
grow.scalePerLevel
How much the box is scaled with each new child branch. If this is for
example 0.5, then the first child branch gets 0.5 scale boxes when compared
to the root size and the child branches of these get 0.25 = 0.5*0.5 scale.
-------------------------------------------------------------------------------
grow.rot1
How big the rotation sincos variation amplitude from the main grow dir is on
YZ plane.
-------------------------------------------------------------------------------
grow.rot2
How big the rotation sincos variation amplitude from the main grow dir is on
XZ plane.
-------------------------------------------------------------------------------
grow.rot1Level
How much the rotation variation 1 is modified per branch level.
-------------------------------------------------------------------------------
grow.rot2Level
How much the rotation variation 2 is modified per branch level.
-------------------------------------------------------------------------------
grow.branchAng
grow.branchAngVar
grow.branchAngVarFreq
The angle, variation and the variation frequency of the child branch when
compared to the parent grow dir. Value of 0.0 is 90 degrees from the parents
dir, 1.0 is into the parent dir and -1.0 completely against.
-------------------------------------------------------------------------------
grow.emitMeshScale
How big mesh is emitted as the seed of the grower.
-------------------------------------------------------------------------------
boxGrower.grow.emitTrack.freq
boxGrower.grow.emitTrack.innerFreq
boxGrower.grow.emitTrack.innerRad
boxGrower.grow.emitTrack.rad
Control the seed emit track on the XZ plane. TODO later to add surface
emitter replacing this...
-------------------------------------------------------------------------------
grow.rotAmount
How the sincos rotation vs the directional grow is balanced.
Value of 0.0 is pure directional growth, 1.0 is pure sincos direction.
-------------------------------------------------------------------------------
grow.rotAmount
How much the rotAmount changes per branch level.
-------------------------------------------------------------------------------
These params are for move XY, YZ or XZ plane palette gradient.
grow.movePalAmp
grow.movePalAge (how the age of the box effects the palette offset)
grow.movePalFreq
grow.movePalFreqLevel (how much base freq increases per branch level)
grow.movePalOfs
grow.movePalOfsLevel (how much base ofs increases per branch level)
palette gradient defining the grow "plane" (if one of the moveX, Y or Z is set to zero or near zero).
Applied with amplitude .grow.movePalAmp and the x offset in palette image is moved in time with
.grow.movePalFreq, .grow.movePalFreqLevel, .grow.movePalOfs, .grow.movePalOfsLevel,
.grow.movePalAge (how the age of the box effects the palette offset).
The effect for move X, Y and Z is achieved through swizzle of the moveX, moveY & moveZ in following way:
(all values from green channel)
if palette 0.0 >= .g < 0.333 then moveXYZ (XY plane)
if palette 0.333 >= .g < 0.667 then moveZXY (XZ plane)
if palette 0.667 >= .g <= 1.0 then moveYZX (YZ plane)
-------------------------------------------------------------------------------
grow.maxSca
How much the maximum scale can be
grow.maxScaSmooth
How smoothly the maximum scale is approached:
0.0 not smoothly at all
1.0 maximum smoothness
grow.moveScale
Move after emit together when scaling existing ones bigger
grow.maxScaMove
Maximum move when scaling existing
grow.maxScaMoveSmooth
Move smoothing when reaching the maximum scale base move:
0.0 not smooth at all
1.0 maximum smoothness
Preamble
In this license, 'Expansiva' refers to the given .zip file, which may contain one or numerous fonts. These fonts can be of any type (.ttf, .otf, ...) and together they form a 'font family' or in short a 'typeface'.
1. Copyright
Expansiva is the intellectual property of its respective author, provided it is original, and is protected by copyright laws in many parts of the world.
2. Usage
Expansiva may be downloaded and used free of charge for both personal and commercial use, as long as the usage is not racist or illegal. Personal use refers to all usage that does not generate financial income in a business manner, for instance:
- personal scrapbooking for yourself
- recreational websites and blogs for friends and family
- prints such as flyers, posters, t-shirts for churches, charities, and non-profit organizations
Commercial use refers to usage in a business environment, including:
- business cards, logos, advertising, websites, mobile apps for companies
- t-shirts, books, apparel that will be sold for money
- flyers, posters for events that charge admission
- freelance graphic design work
- anything that will generate direct or indirect income
3. Modification
Expansiva may not be modified, altered, adapted or built upon without written permission by its respective author. This pertains all files within the downloadable font zip-file.
4. Conversion
Expansiva may be converted to other formats such as WOFF, SVG or EOT webfonts, as long as the font is not modified in any other way, such as changing names or altering individual glyphs.
5. Distribution
While Expansiva may freely be copied and passed along to other individuals for private use as its original downloadable zip-file, it may not be sold or published without written permission by its respective author.
6. Embedding
Expansiva may be embedded into an application such as a web- or mobile app, independant of the number of the application users, as long as the application does not distribute Expansiva, such as offering it as a download.
7. Disclaimer
Expansiva is offered 'as is' without any warranty. 1001fonts.com and the respective author of Expansiva shall not be liable for any damage derived from using this typeface. By using Expansiva you agree to the terms of this license.
_ ___o_
:/// /
:
________ : ________ ___________
__\___ /_: _____ __\___ /_ ______\ _ _ /
/ _ /__\__ \ _ /_\_ /__/ /__\
/ / _/ / \ / _/ / // /
-- ------\_________\ / /_______\ /_____//____\-tR!------>
/__________/ /______\
.
:
: A D A P T
: -=-
: 2018-04-01
:
. X I O N
code, fx & rocketing <:-> deepr
gfx & rocketing <:-> mistral
music <:-> basscadet
Using Adapted GNU Rocket, OpenGL 4.3+, Qt 5.9, FMOD, Assimp, GLM and Rodeo.
Features a custom QML scriptable demo engine,
made with love since 2015.