FaceGen 3 SDKs Reference
Loading...
Searching...
No Matches
Fg3Controls.hpp
1//
2// Copyright (c) Singular Inversions Inc. 2012
3//
4// Authors: Andrew Beatty
5// Created: Feb 17, 2012
6//
7
8#ifndef FG3CONTROLS_HPP
9#define FG3CONTROLS_HPP
10
11#include "FanControls.hpp"
12
13namespace Fg {
14
23{
30 uint basisSize[FANTYPE_SIZE][FANSYMM_SIZE];
31
32 explicit Sam3Controls(String8 const & ctlFile);
33
35 float getAge(Sam3Coord const & coord) const;
36
37 void setAge_(
39 Sam3Coord & coord,
41 float age) const;
42
44 Sam3Coord setAge(Sam3Coord const & coord,float age) const
45 {
46 Sam3Coord ret = coord;
47 setAge_(ret,age);
48 return ret;
49 }
50
52 float getAge(
54 Sam3Coord const & coord,
56 FanTypeE type) const;
57
58 void setAge_(
60 Sam3Coord & coord,
62 FanTypeE type,
64 float age) const;
65
69 Sam3Coord const & coord) const;
70
73 Sam3Coord & coord,
75 float asymmetry) const;
76
80 Sam3Coord const & coord,
82 FanRaceE race,
84 FanTypeE type) const;
85
88 Sam3Coord & coord,
90 FanRaceE race,
92 FanTypeE type,
94 float val) const;
95
97 Sam3Coord setCaricature(Sam3Coord const & coord,FanRaceE race,FanTypeE type,float val) const
98 {
99 Sam3Coord ret = coord;
100 setCaricature_(ret,race,type,val);
101 return ret;
102 }
103
107 Sam3Coord const & coord) const;
108
111 Sam3Coord & coord,
113 float val) const;
114
116 Sam3Coord setGender(Sam3Coord const & coord,float val)
117 {
118 Sam3Coord ret = coord;
119 setGender_(ret,val);
120 return ret;
121 }
122
126 Sam3Coord const & coord,
128 FanTypeE type) const;
129
132 Sam3Coord & coord,
134 FanTypeE type,
136 float val) const;
137
139 Svec<std::string> getRaceLabels() const;
140
144 float getRace(
146 Sam3Coord const & coord,
148 FanRaceE from,
150 FanRaceE to,
152 FanTypeE type=FANTYPE_SIZE) const
153 {return genCtrls.getRace(from,to,coord,type); }
154
157 Sam3Coord & coord,
159 FanRaceE from,
161 FanRaceE to,
163 float tween,
165 FanTypeE type=FANTYPE_SIZE) const
166 {genCtrls.setRace_(from,to,tween,coord,type); }
167
169 Sam3Coord setRace(Sam3Coord const & coord,FanRaceE from,FanRaceE to,float tween)
170 {
171 Sam3Coord ret = coord;
172 setRace_(ret,from,to,tween);
173 return ret;
174 }
175
178 Sam3Coord & coord,
180 FanRaceE race,
182 FanGender gender=FANGENDER_SIZE,
184 bool ageLock=false,
186 bool caricatureLock=false,
188 bool asymmetryLock=false) const;
189
193 FanTypeE type,
195 FanSymmE symm) const;
196
198 std::string getSliderName(
200 FanTypeE type,
202 FanSymmE symm,
204 size_t id) const;
205
209 Sam3Coord const & coord,
211 FanTypeE type,
213 FanSymmE symm,
215 size_t id) const;
216
219 Sam3Coord & coord,
221 FanTypeE type,
223 FanSymmE symm,
225 size_t id,
227 float val) const;
228
231 Sam3Coord & coord,
233 FanRaceE race,
235 FanGender gender) const;
236};
237
238}
239
240#endif
FanTypeE
Enumerate the statistical model types.
Definition Fg3Face.hpp:25
FanSymmE
Enumerate symmetry types.
Definition Fg3Face.hpp:37
float getAsymmetry(Sam3Coord const &coord) const
float getCaricature(Sam3Coord const &coord, FanRaceE race, FanTypeE type) const
void setSliderVal_(Sam3Coord &coord, FanTypeE type, FanSymmE symm, size_t id, float val) const
size_t getSliderNum(FanTypeE type, FanSymmE symm) const
Sam3Coord setRace(Sam3Coord const &coord, FanRaceE from, FanRaceE to, float tween)
Functional version:
float getRace(Sam3Coord const &coord, FanRaceE from, FanRaceE to, FanTypeE type=FANTYPE_SIZE) const
float getGender(Sam3Coord const &coord) const
void setGender_(Sam3Coord &coord, FanTypeE type, float val) const
void setRace_(Sam3Coord &coord, FanRaceE from, FanRaceE to, float tween, FanTypeE type=FANTYPE_SIZE) const
float getGender(Sam3Coord const &coord, FanTypeE type) const
void setToAverage_(Sam3Coord &coord, FanRaceE race, FanGender gender) const
Sam3Coord setCaricature(Sam3Coord const &coord, FanRaceE race, FanTypeE type, float val) const
Functional version.
std::string getSliderName(FanTypeE type, FanSymmE symm, size_t id) const
void setAge_(Sam3Coord &coord, float age) const
Sam3LinCtrls linCtrls
Svec< std::string > getRaceLabels() const
Sam3Coord setGender(Sam3Coord const &coord, float val)
Functional version.
Sam3Coord setAge(Sam3Coord const &coord, float age) const
Functional version.
void setRandom_(Sam3Coord &coord, FanRaceE race, FanGender gender=FANGENDER_SIZE, bool ageLock=false, bool caricatureLock=false, bool asymmetryLock=false) const
Sam3NLCtrls genCtrls
Non-linear controls include demographics, caricature and asymmetry:
float getAge(Sam3Coord const &coord, FanTypeE type) const
uint basisSize[FANTYPE_SIZE][FANSYMM_SIZE]
Number of modes of each type. Almost always [[50 30] [50 0]].
void setAsymmetry_(Sam3Coord &coord, float asymmetry) const
void setCaricature_(Sam3Coord &coord, FanRaceE race, FanTypeE type, float val) const
float getSliderVal(Sam3Coord const &coord, FanTypeE type, FanSymmE symm, size_t id) const
void setAge_(Sam3Coord &coord, FanTypeE type, float age) const
void setGender_(Sam3Coord &coord, float val) const
float getAge(Sam3Coord const &coord) const
FaceGen face space coordinate.
Definition Fg3Face.hpp:49
Non-linear controls include demographics, caricature and asymmetry: