This commit is contained in:
core 2023-11-20 11:39:21 -05:00
commit 103b1aa99a
Signed by: core
GPG Key ID: FDBF740DADDCEECF
395 changed files with 523625 additions and 0 deletions

8
.idea/.gitignore vendored Normal file
View File

@ -0,0 +1,8 @@
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml

11
.idea/expressed.iml Normal file
View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="EMPTY_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
<excludeFolder url="file://$MODULE_DIR$/target" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

6
.idea/misc.xml Normal file
View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="MarkdownSettingsMigration">
<option name="stateVersion" value="1" />
</component>
</project>

8
.idea/modules.xml Normal file
View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/expressed.iml" filepath="$PROJECT_DIR$/.idea/expressed.iml" />
</modules>
</component>
</project>

6
.idea/vcs.xml Normal file
View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
</component>
</project>

1
bootstrap.min.css vendored Normal file

File diff suppressed because one or more lines are too long

63
ep_visage/learn.html Normal file
View File

@ -0,0 +1,63 @@
<!doctype html>
<html lang="en" data-bs-theme="dark">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title id="title">ExpressED | Loading Practice</title>
<link rel="stylesheet" href="/bootstrap.min.css" />
</head>
<body>
<div class="h-100 d-flex align-items-center justify-content-center text-center">
<div>
<div class="container">
<div class="row">
<div class="col">
<h1 id="title2">ExpressED: Loading Practice</h1>
<p id="bdata">Please wait, while we load this emotion</p>
</div>
</div>
<div class="row">
<div class="col">
<a href="/learn.html" class="btn btn-secondary p-5 w-100">Go Back</a>
</div>
<div class="col">
<a id="link" href="/v_dl/sdk/www/Samples/ShowcaseDemo/ShowcaseDemo.html?v=1" class="btn btn-success p-5 w-100">Practice!</a>
</div>
</div>
</div>
</div>
</div>
<script>
const params = new URLSearchParams(window.location.search);
if (!params.has("v")) {
window.location.href = "/";
}
let emotions = ["Anger", "Disgust", "Fear", "Happiness", "Sadness", "Surprise", "Neutral"];
let emotion_descriptions = [
"Anger description",
"Disgust description",
"Fear description",
"<b>Smile</b><br>" +
"The person's lips curve upward, forming a friendly and joyful smile.<br>" +
"<b>Bright Eyes</b><br>" +
" Happy eyes often appear bright and lively. The muscles around the eyes may crinkle, forming crow's feet or laugh lines at the corners, indicating genuine happiness. The eyes may also be slightly narrowed, emphasizing the warmth and sincerity of the smile.<br>" +
"<b>Relaxed Brow</b><br>" +
"The forehead is usually smooth and free from tension or furrowing when a person is happy. There are no signs of stress or worry, and the eyebrows may be slightly raised.",
"Sadness description",
"Surprise description",
"Neutral description"
];
document.getElementById("title2").innerText = "ExpressED: Learning " + emotions[Number(params.get("v"))];
document.getElementById("title").innerText = "ExpressED | Learning " + emotions[Number(params.get("v"))];
document.getElementById("bdata").innerHTML = emotion_descriptions[Number(params.get("v"))];
document.getElementById("link").href = "/v_dl/sdk/www/Samples/ShowcaseDemo/ShowcaseDemo.html?v=" + params.get("v");
</script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL" crossorigin="anonymous"></script>
</body>
</html>

33
index.html Normal file
View File

@ -0,0 +1,33 @@
<!DOCTYPE html>
<html lang="en" data-bs-theme="dark">
<head>
<meta charset="UTF-8">
<title>ExpressED - Unlocking Expressions For The Visually Impaired</title>
<link rel="stylesheet" href="/bootstrap.min.css" />
</head>
<body >
<div class="h-100 d-flex align-items-center justify-content-center">
<div>
<h1>ExpressED - Unlocking Expressions For The Visually Impaired</h1>
<div class="container">
<div class="row">
<div class="col">
<a href="/learn.html" class="btn btn-primary p-5 w-100">Learn!</a>
</div>
<div class="col">
<a href="/practice.html" class="btn btn-primary p-5 w-100">Practice!</a>
</div>
<div class="col">
<a href="/master.html" class="btn btn-primary p-5 w-100">Master!</a>
</div>
</div>
</div>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"
integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL"
crossorigin="anonymous"></script>
</body>
</html>

51
learn.html Normal file
View File

@ -0,0 +1,51 @@
<!doctype html>
<html data-bs-theme="dark">
<head>
<meta charset="utf-8" />
<title>ExpressED</title>
<link rel="stylesheet" href="/bootstrap.min.css" />
</head>
<body>
<div class="h-100 d-flex align-items-center justify-content-center">
<div>
<h1>Welcome to ExpressED!</h1>
<h2>What emotion would you like to learn about today?</h2>
<div class="container">
<div class="row">
<div class="col">
<a href="/ep_visage/learn.html?v=0" class="btn btn-primary p-5 w-100">Anger</a>
</div>
<div class="col">
<a href="/ep_visage/learn.html?v=1" class="btn btn-primary p-5 w-100">Disgust</a>
</div>
<div class="col">
<a href="/ep_visage/learn.html?v=2" class="btn btn-primary p-5 w-100">Fear</a>
</div>
</div>
<div class="row mt-3">
<div class="col">
<a href="/ep_visage/learn.html?v=3" class="btn btn-primary p-5 w-100">Happiness</a>
</div>
<div class="col">
<a href="/ep_visage/learn.html?v=4" class="btn btn-primary p-5 w-100">Sadness</a>
</div>
<div class="col">
<a href="/ep_visage/learn.html?v=5" class="btn btn-primary p-5 w-100">Surprise</a>
</div>
</div>
<div class="row mt-3">
<div class="col">
<a href="/" class="btn btn-secondary p-5 w-100">Go Back</a>
</div>
<div class="col">
<a href="/ep_visage/learn.html?v=6" class="btn btn-primary p-5 w-100">Neutral</a>
</div>
</div>
</div>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL" crossorigin="anonymous"></script>
</body>
</html>

50
practice.html Normal file
View File

@ -0,0 +1,50 @@
<!doctype html>
<html data-bs-theme="dark">
<head>
<meta charset="utf-8" />
<title>ExpressED</title>
<link rel="stylesheet" href="/bootstrap.min.css" />
</head>
<body>
<div class="h-100 d-flex align-items-center justify-content-center">
<div>
<h1>Welcome to ExpressED!</h1>
<h2>What emotion would you like to practice today?</h2>
<div class="container">
<div class="row">
<div class="col">
<a href="/v_dl/sdk/www/Samples/ShowcaseDemo/ShowcaseDemo.html?v=0" class="btn btn-primary p-5 w-100">Anger</a>
</div>
<div class="col">
<a href="/v_dl/sdk/www/Samples/ShowcaseDemo/ShowcaseDemo.html?v=1" class="btn btn-primary p-5 w-100">Disgust</a>
</div>
<div class="col">
<a href="/v_dl/sdk/www/Samples/ShowcaseDemo/ShowcaseDemo.html?v=2" class="btn btn-primary p-5 w-100">Fear</a>
</div>
</div>
<div class="row mt-3">
<div class="col">
<a href="/v_dl/sdk/www/Samples/ShowcaseDemo/ShowcaseDemo.html?v=3" class="btn btn-primary p-5 w-100">Happiness</a>
</div>
<div class="col">
<a href="/v_dl/sdk/www/Samples/ShowcaseDemo/ShowcaseDemo.html?v=4" class="btn btn-primary p-5 w-100">Sadness</a>
</div>
<div class="col">
<a href="/v_dl/sdk/www/Samples/ShowcaseDemo/ShowcaseDemo.html?v=5" class="btn btn-primary p-5 w-100">Surprise</a>
</div>
</div>
<div class="row mt-3">
<div class="col">
<a href="/" class="btn btn-secondary p-5 w-100">Go Back</a>
</div>
<div class="col">
<a href="/v_dl/sdk/www/Samples/ShowcaseDemo/ShowcaseDemo.html?v=6" class="btn btn-primary p-5 w-100">Neutral</a>
</div>
</div>
</div>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL" crossorigin="anonymous"></script>
</body>
</html>

View File

@ -0,0 +1,42 @@
# Visage Technologies AB
#
# License Key File
#
# This license key file is issued by Visage Technologies AB, Linkoping, Sweden
# under the terms of Visage Technologies Licensing Agreement. It is strictly
# prohibited to modify this file in any way.
#
# This license key file can be used only by the Licensee named below
# to distribute the Licensed Application named below. It is strictly
# prohibited to use this license key file for any other purpose,
# and specifically for distributing any application other
# than the Licensed Application named below.
# Furthermore, it is strictly prohibited for any party other
# than the Licensee named below to distribute this license key file.
#
#
#
# Licensed application name: Evaluation - no commercial use permitted
#
# Licensee: Cannon Middle School - 5801 Poplar Tent Road, Concord, NC 28027
#
# This License Key is issued for: visage|SDK FULL V9.1
# Operating system(s): HTML5
# License Type: Evaluation
# Application ID(*): *
# Number of installations/licenses: 10
# Number of concurrent users: -
# Licensed URL (for web license): y2spv2.coredoes.dev
# Date of issuing: 14.11.2023.
# Expiry date of the License Key: 14.12.2023.
# Automatic license registration: Always if online
# License Key: 063-172-163-996-391-498-880-879-796-980-878
#
#
#
#
#(*) Application ID means:
# App's bundle identifier on iOS.
# Application's package name on Android.
# Application's bundle identifier on Mac OS X.
# On Windows, Application ID is freely assigned by the application developer.

View File

@ -0,0 +1,42 @@
# Visage Technologies AB
#
# License Key File
#
# This license key file is issued by Visage Technologies AB, Linkoping, Sweden
# under the terms of Visage Technologies Licensing Agreement. It is strictly
# prohibited to modify this file in any way.
#
# This license key file can be used only by the Licensee named below
# to distribute the Licensed Application named below. It is strictly
# prohibited to use this license key file for any other purpose,
# and specifically for distributing any application other
# than the Licensed Application named below.
# Furthermore, it is strictly prohibited for any party other
# than the Licensee named below to distribute this license key file.
#
#
#
# Licensed application name: Evaluation - no commercial use permitted
#
# Licensee: Cannon Middle School - 5801 Poplar Tent Road, Concord, NC 28027
#
# This License Key is issued for: visage|SDK FULL V9.1
# Operating system(s): HTML5
# License Type: Evaluation
# Application ID(*): *
# Number of installations/licenses: 10
# Number of concurrent users: -
# Licensed URL (for web license): localhost
# Date of issuing: 14.11.2023.
# Expiry date of the License Key: 14.12.2023.
# Automatic license registration: Always if online
# License Key: 289-098-022-858-883-076-746-061-783-146-760
#
#
#
#
#(*) Application ID means:
# App's bundle identifier on iOS.
# Application's package name on Android.
# Application's bundle identifier on Mac OS X.
# On Windows, Application ID is freely assigned by the application developer.

View File

@ -0,0 +1,42 @@
# Visage Technologies AB
#
# License Key File
#
# This license key file is issued by Visage Technologies AB, Linkoping, Sweden
# under the terms of Visage Technologies Licensing Agreement. It is strictly
# prohibited to modify this file in any way.
#
# This license key file can be used only by the Licensee named below
# to distribute the Licensed Application named below. It is strictly
# prohibited to use this license key file for any other purpose,
# and specifically for distributing any application other
# than the Licensed Application named below.
# Furthermore, it is strictly prohibited for any party other
# than the Licensee named below to distribute this license key file.
#
#
#
# Licensed application name: Evaluation - no commercial use permitted
#
# Licensee: Cannon Middle School - 5801 Poplar Tent Road, Concord, NC 28027
#
# This License Key is issued for: visage|SDK FULL V9.1
# Operating system(s): HTML5
# License Type: Evaluation
# Application ID(*): *
# Number of installations/licenses: 10
# Number of concurrent users: -
# Licensed URL (for web license): cdn.coredoes.dev
# Date of issuing: 14.11.2023.
# Expiry date of the License Key: 14.12.2023.
# Automatic license registration: Always if online
# License Key: 383-192-941-979-373-458-660-171-653-160-671
#
#
#
#
#(*) Application ID means:
# App's bundle identifier on iOS.
# Application's package name on Android.
# Application's bundle identifier on Mac OS X.
# On Windows, Application ID is freely assigned by the application developer.

View File

@ -0,0 +1,42 @@
# Visage Technologies AB
#
# License Key File
#
# This license key file is issued by Visage Technologies AB, Linkoping, Sweden
# under the terms of Visage Technologies Licensing Agreement. It is strictly
# prohibited to modify this file in any way.
#
# This license key file can be used only by the Licensee named below
# to distribute the Licensed Application named below. It is strictly
# prohibited to use this license key file for any other purpose,
# and specifically for distributing any application other
# than the Licensed Application named below.
# Furthermore, it is strictly prohibited for any party other
# than the Licensee named below to distribute this license key file.
#
#
#
# Licensed application name: Evaluation - no commercial use permitted
#
# Licensee: Cannon Middle School - 5801 Poplar Tent Road, Concord, NC 28027
#
# This License Key is issued for: visage|SDK FULL V9.1
# Operating system(s): HTML5
# License Type: Evaluation
# Application ID(*): *
# Number of installations/licenses: 10
# Number of concurrent users: -
# Licensed URL (for web license): cdn.e3t.cc
# Date of issuing: 14.11.2023.
# Expiry date of the License Key: 14.12.2023.
# Automatic license registration: Always if online
# License Key: 695-404-032-262-884-678-752-402-455-252-704
#
#
#
#
#(*) Application ID means:
# App's bundle identifier on iOS.
# Application's package name on Android.
# Application's bundle identifier on Mac OS X.
# On Windows, Application ID is freely assigned by the application developer.

View File

@ -0,0 +1,24 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>visage|SDK documentation</title>
</head>
<body onload="redirect()">
<noscript>
visage|SDK has detected that Javascript is disabled in your browser.
Menu functionality will not work correctly if JavaScript is disabled.
It is strongly recommended to enable JavaScript.
In Internet Explorer, you can choose Tools > Internet Options > Advanced, then check
"Allow active contents to run in files on My Computer" in the Security section.
<br><br>To proceed to the documentation main page now, please
go to your visage|SDK installation folder and open the Documentation.html file in the root folder of your visage|SDK HTML5 package.
</noscript>
<script type="text/javascript">
function redirect()
{
window.location = "doc/doc.html";
}
</script>
</body>
</html>

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,643 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>JSDoc: Class: AnalysisData</title>
<script src="scripts/prettify/prettify.js"> </script>
<script src="scripts/prettify/lang-css.js"> </script>
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
<link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
</head>
<body>
<div id="main">
<h1 class="page-title">Class: AnalysisData</h1>
<section>
<header>
<h2>
AnalysisData
</h2>
</header>
<article>
<div class="container-overview">
<dt>
<h4 class="name" id="AnalysisData"><span class="type-signature"></span>new AnalysisData<span class="signature">()</span><span class="type-signature"></span></h4>
</dt>
<dd>
<div class="description">
AnalysisData structure, used as a container for all face analysis results.
This structure is passed as a parameter to the <a href="VisageFaceAnalyser.html#analyseImage">VisageFaceAnalyser.analyseImage()</a> or <a href="VisageFaceAnalyser.html#analyseStream">VisageFaceAnalyser.analyseStream()</a> method. Both methods store analysis results into the structure.
<br/><br/>
If an operation was not performed (turned off via options) or failed, the respective validity boolean will return false and estimations will contain the default value.
<br/><br/>
</div>
<dl class="details">
</dl>
</dd>
</div>
<h3 class="subsection-title">Methods</h3>
<dl>
<dt>
<h4 class="name" id="getAge"><span class="type-signature"></span>getAge<span class="signature">()</span><span class="type-signature"> &rarr; {number}</span></h4>
</dt>
<dd>
<div class="description">
get the age value from AnalysisData
</div>
<dl class="details">
</dl>
<h5>Returns:</h5>
<div class="param-desc">
result of age estimation
</div>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type">number</span>
</dd>
</dl>
</dd>
<dt>
<h4 class="name" id="getAgeValid"><span class="type-signature"></span>getAgeValid<span class="signature">()</span><span class="type-signature"> &rarr; {number}</span></h4>
</dt>
<dd>
<div class="description">
check if age value is valid
</div>
<dl class="details">
</dl>
<h5>Returns:</h5>
<div class="param-desc">
boolean flag returning whether age estimation has been successful or not
</div>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type">number</span>
</dd>
</dl>
</dd>
<dt>
<h4 class="name" id="getGender"><span class="type-signature"></span>getGender<span class="signature">()</span><span class="type-signature"> &rarr; {number}</span></h4>
</dt>
<dd>
<div class="description">
get the gender value from AnalysisData
</div>
<dl class="details">
</dl>
<h5>Returns:</h5>
<div class="param-desc">
1 for MALE gender <br> 0 for FEMALE gender
</div>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type">number</span>
</dd>
</dl>
</dd>
<dt>
<h4 class="name" id="getGenderValid"><span class="type-signature"></span>getGenderValid<span class="signature">()</span><span class="type-signature"> &rarr; {number}</span></h4>
</dt>
<dd>
<div class="description">
check if gender value is valid
</div>
<dl class="details">
</dl>
<h5>Returns:</h5>
<div class="param-desc">
boolean flag returning whether gender estimation has been successful or not
</div>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type">number</span>
</dd>
</dl>
</dd>
<dt>
<h4 class="name" id="getEmotionProbabilities"><span class="type-signature"></span>getEmotionProbabilities<span class="signature">()</span><span class="type-signature"> &rarr; {Array}</span></h4>
</dt>
<dd>
<div class="description">
get an array representing emotions from AnalysisData
</div>
<dl class="details">
</dl>
<h5>Returns:</h5>
<div class="param-desc">
result of emotion estimation, See: <a href="global.html#VFAEmotionIndices">VFAEmotionIndices</a>
</div>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type">Array</span>
</dd>
</dl>
</dd>
<dt>
<h4 class="name" id="getEmotionsValid"><span class="type-signature"></span>getEmotionsValid<span class="signature">()</span><span class="type-signature"></span></h4>
</dt>
<dd>
<div class="description">
check if emotion value is valid (if the calculation was valid)
</div>
<dl class="details">
</dl>
<h5>Returns:</h5>
<div class="param-desc">
boolean flag returning whether emotion estimation has been successful or not
</div>
</dd>
</dl>
</article>
</section>
</div>
<nav>
<h2><a href="index.html">Index</a></h2><h3>Modules</h3><ul><li><a href="module-VisageTrackerUnityPlugin.html">VisageTrackerUnityPlugin</a></li><li><a href="module-VisageAnalyserUnityPlugin.html">VisageAnalyserUnityPlugin</a></li></ul><h3>Classes</h3><ul><li><a href="FaceData.html">FaceData</a></li><li><a href="ScreenSpaceGazeData.html">ScreenSpaceGazeData</a></li><li><a href="VectorFloat.html">VectorFloat</a></li><li><a href="VectorShort.html">VectorShort</a></li><li><a href="VectorString.html">VectorString</a></li><li><a href="VisageFaceAnalyser.html">VisageFaceAnalyser</a></li><li><a href="AnalysisData.html">AnalysisData</a></li><li><a href="FeaturePoint.html">FeaturePoint</a></li><li><a href="FDP.html">FDP</a></li><li><a href="VisageDetector.html">VisageDetector</a></li><li><a href="FaceDataVector.html">FaceDataVector</a></li><li><a href="VSRectVector.html">VSRectVector</a></li><li><a href="VSRect.html">VSRect</a></li><li><a href="VisageGazeTracker.html">VisageGazeTracker</a></li><li><a href="VisageFaceRecognition.html">VisageFaceRecognition</a></li><li><a href="VisageTracker.html">VisageTracker</a></li><li><a href="VisageConfiguration.html">VisageConfiguration</a></li><li><a href="VisageLivenessBlink.html">VisageLivenessBlink</a></li><li><a href="VisageLivenessSmile.html">VisageLivenessSmile</a></li><li><a href="VisageLivenessBrowRaise.html">VisageLivenessBrowRaise</a></li><li><a href="VisageAR.html">VisageAR</a></li></ul><h3>Global</h3><ul><li><a href="global.html#FP_START_GROUP_INDEX">FP_START_GROUP_INDEX</a></li><li><a href="global.html#FP_END_GROUP_INDEX">FP_END_GROUP_INDEX</a></li><li><a href="global.html#FP_NUMBER_OF_GROUPS">FP_NUMBER_OF_GROUPS</a></li><li><a href="global.html#initializeLicenseManager">initializeLicenseManager</a></li><li><a href="global.html#VisageTrackerStatus">VisageTrackerStatus</a></li><li><a href="global.html#VisageTrackerImageFormat">VisageTrackerImageFormat</a></li><li><a href="global.html#VisageTrackerOrigin">VisageTrackerOrigin</a></li><li><a href="global.html#getSDKVersion">getSDKVersion</a></li></ul>
</nav>
<br clear="both">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.0</a> on Sat Jul 29 2023 01:38:28 GMT-0000 (GMT)
</footer>
<script> prettyPrint(); </script>
<script src="scripts/linenumber.js"> </script>
</body>
</html>

2628
v_dl/sdk/doc/FDP.html Normal file

File diff suppressed because it is too large Load Diff

3923
v_dl/sdk/doc/FaceData.html Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,483 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>JSDoc: Class: FaceDataVector</title>
<script src="scripts/prettify/prettify.js"> </script>
<script src="scripts/prettify/lang-css.js"> </script>
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
<link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
</head>
<body>
<div id="main">
<h1 class="page-title">Class: FaceDataVector</h1>
<section>
<header>
<h2>
FaceDataVector
</h2>
</header>
<article>
<div class="container-overview">
<dt>
<h4 class="name" id="FaceDataVector"><span class="type-signature"></span>new FaceDataVector<span class="signature">()</span><span class="type-signature"></span></h4>
</dt>
<dd>
<div class="description">
Custom container class for <a href="FaceData.html">FaceData</a> objects.
<br/><br/>
Used in conjunction with <a href="VisageDetector.html#detectFeatures">VisageDetector.detectFeatures</a> function.
<br/><br/>
Sample usage:
<br/>
<pre class="prettyprint source"><code>
function onDetect()
{
//Instantiate an FaceDataVector instance where detection results will be stored
faceDataArray = new VisageModule.FaceDataVector();
//Specify the maximum number of faces that will be detected in the image
maxFaces = 10;
for (var i = 0; i < maxFaces; ++i)
{
faceData = new VisageModule.FaceData();
faceDataArray.push_back(faceData);
}
//Detect face and facial features in an image
var numberOfFaces = m_Detector.detectFeatures(frameWidth, frameHeight, ppixels, faceDataArray, maxFaces);
//Fetch and draw something on the first returned face
if (numberOfFaces > 0)
{
drawSomething(faceDataArray.get(0));
}
}
</code></pre>
<br/>
</div>
<dl class="details">
</dl>
</dd>
</div>
<h3 class="subsection-title">Methods</h3>
<dl>
<dt>
<h4 class="name" id="push_back"><span class="type-signature"></span>push_back<span class="signature">(faceData)</span><span class="type-signature"></span></h4>
</dt>
<dd>
<div class="description">
Add existing <a href="FaceData.html">FaceData</a> object.
<br/><br/>
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>faceData</code></td>
<td class="type">
<span class="param-type"><a href="FaceData.html">FaceData</a></span>
</td>
<td class="description last">FaceData object to be added.</td>
</tr>
</tbody>
</table>
<dl class="details">
</dl>
</dd>
<dt>
<h4 class="name" id="get"><span class="type-signature"></span>get<span class="signature">(index)</span><span class="type-signature"> &rarr; {<a href="FaceData.html">FaceData</a>}</span></h4>
</dt>
<dd>
<div class="description">
Get <a href="FaceData.html">FaceData</a> object from the vector specified by index parameter.
<br/><br/>
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>index</code></td>
<td class="type">
<span class="param-type">number</span>
</td>
<td class="description last">position of the FaceData object to be fetched.</td>
</tr>
</tbody>
</table>
<dl class="details">
</dl>
<h5>Returns:</h5>
<div class="param-desc">
FaceData object located on the location specified by index parameter
</div>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type"><a href="FaceData.html">FaceData</a></span>
</dd>
</dl>
</dd>
<dt>
<h4 class="name" id="delete"><span class="type-signature"></span>delete<span class="signature">()</span><span class="type-signature"></span></h4>
</dt>
<dd>
<div class="description">
Release the memory allocated to the FaceDataVector object.
<br/><br/>
</div>
<dl class="details">
</dl>
</dd>
</dl>
</article>
</section>
</div>
<nav>
<h2><a href="index.html">Index</a></h2><h3>Modules</h3><ul><li><a href="module-VisageTrackerUnityPlugin.html">VisageTrackerUnityPlugin</a></li><li><a href="module-VisageAnalyserUnityPlugin.html">VisageAnalyserUnityPlugin</a></li></ul><h3>Classes</h3><ul><li><a href="FaceData.html">FaceData</a></li><li><a href="ScreenSpaceGazeData.html">ScreenSpaceGazeData</a></li><li><a href="VectorFloat.html">VectorFloat</a></li><li><a href="VectorShort.html">VectorShort</a></li><li><a href="VectorString.html">VectorString</a></li><li><a href="VisageFaceAnalyser.html">VisageFaceAnalyser</a></li><li><a href="AnalysisData.html">AnalysisData</a></li><li><a href="FeaturePoint.html">FeaturePoint</a></li><li><a href="FDP.html">FDP</a></li><li><a href="VisageDetector.html">VisageDetector</a></li><li><a href="FaceDataVector.html">FaceDataVector</a></li><li><a href="VSRectVector.html">VSRectVector</a></li><li><a href="VSRect.html">VSRect</a></li><li><a href="VisageGazeTracker.html">VisageGazeTracker</a></li><li><a href="VisageFaceRecognition.html">VisageFaceRecognition</a></li><li><a href="VisageTracker.html">VisageTracker</a></li><li><a href="VisageConfiguration.html">VisageConfiguration</a></li><li><a href="VisageLivenessBlink.html">VisageLivenessBlink</a></li><li><a href="VisageLivenessSmile.html">VisageLivenessSmile</a></li><li><a href="VisageLivenessBrowRaise.html">VisageLivenessBrowRaise</a></li><li><a href="VisageAR.html">VisageAR</a></li></ul><h3>Global</h3><ul><li><a href="global.html#FP_START_GROUP_INDEX">FP_START_GROUP_INDEX</a></li><li><a href="global.html#FP_END_GROUP_INDEX">FP_END_GROUP_INDEX</a></li><li><a href="global.html#FP_NUMBER_OF_GROUPS">FP_NUMBER_OF_GROUPS</a></li><li><a href="global.html#initializeLicenseManager">initializeLicenseManager</a></li><li><a href="global.html#VisageTrackerStatus">VisageTrackerStatus</a></li><li><a href="global.html#VisageTrackerImageFormat">VisageTrackerImageFormat</a></li><li><a href="global.html#VisageTrackerOrigin">VisageTrackerOrigin</a></li><li><a href="global.html#getSDKVersion">getSDKVersion</a></li></ul>
</nav>
<br clear="both">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.0</a> on Sat Jul 29 2023 01:38:29 GMT-0000 (GMT)
</footer>
<script> prettyPrint(); </script>
<script src="scripts/linenumber.js"> </script>
</body>
</html>

View File

@ -0,0 +1,741 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>JSDoc: Class: FeaturePoint</title>
<script src="scripts/prettify/prettify.js"> </script>
<script src="scripts/prettify/lang-css.js"> </script>
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
<link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
</head>
<body>
<div id="main">
<h1 class="page-title">Class: FeaturePoint</h1>
<section>
<header>
<h2>
FeaturePoint
</h2>
</header>
<article>
<div class="container-overview">
<dt>
<h4 class="name" id="FeaturePoint"><span class="type-signature"></span>new FeaturePoint<span class="signature">()</span><span class="type-signature"></span></h4>
</dt>
<dd>
<div class="description">
Feature point.
<br/><br/>
This struct represents a feature point definition. If the feature points are defined on a 3D model, each feature point maps to a vertex of the model.
The following information is specified per each feature point:
- vertex position (an array of 3 floats)
- vertex identifier (mesh identifier and vertex index), if the feature point is defined on a 3D model
- normalization factors (useful for algorithms that normalize the face, such as facial motion cloning)
<br/><br/>
<b>Note</b>: After the end of use FeaturePoint object needs to be deleted to release the allocated memory. Example:
<pre class="prettyprint source"><code>
&lt;script>
FeaturePoint = new VisageModule.FeaturePoint();
...
FeaturePoint.delete();
&lt;/script>
</code></pre>
<br/><br/>
</div>
<dl class="details">
<dt class="tag-see">See:</dt>
<dd class="tag-see">
<ul>
<li><a href="FDP.html">FDP</a></li>
</ul>
</dd>
</dl>
</dd>
</div>
<h3 class="subsection-title">Members</h3>
<dl>
<dt>
<h4 class="name" id="defined"><span class="type-signature"></span>defined<span class="type-signature"> :number</span></h4>
</dt>
<dd>
<div class="description">
Set with regards to the 3D model used. More information about 3D models used in tracking can be found in <a href="VisageTracker Configuration Manual.pdf">VisageTracker Configuration Manual</a>.
<br/><br/>
Set to 1 if feature point is defined in the corresponding <i>.fdp</i> file. Otherwise, the feature point should not be used.
</div>
<h5>Type:</h5>
<ul>
<li>
<span class="param-type">number</span>
</li>
</ul>
<dl class="details">
</dl>
</dd>
<dt>
<h4 class="name" id="detected"><span class="type-signature"></span>detected<span class="type-signature"> :number</span></h4>
</dt>
<dd>
<div class="description">
Set with regards to the tracking algorithm used.
<br/><br/>
If 1, indicates that the feature point is obtained from a 2D image using the tracking algorithm. 0 indicates that the feature point is estimated from fitting a 3D model onto the detected feature points of the face.
<br/><br/>
NOTE: This information is returned exclusively within FaceData::featurePoints2D.
</div>
<h5>Type:</h5>
<ul>
<li>
<span class="param-type">number</span>
</li>
</ul>
<dl class="details">
</dl>
</dd>
<dt>
<h4 class="name" id="quality"><span class="type-signature"></span>quality<span class="type-signature"> :number</span></h4>
</dt>
<dd>
<div class="description">
Information about the accuracy of the tracking algorithm for this feature point in the current frame.
<br/><br/>
Quality is returned as a value from 0 to 1, where 0 is the worst and 1 is the best quality. If -1 is returned, quality is not estimated.
<br/><br/>
This information is returned for all feature points' groups except for group 10 (ears) for which the returned value will always be -1.
<br/><br/>
NOTE: This information is returned exclusively within FaceData::featurePoints2D.
</div>
<h5>Type:</h5>
<ul>
<li>
<span class="param-type">number</span>
</li>
</ul>
<dl class="details">
</dl>
</dd>
<dt>
<h4 class="name" id="surf"><span class="type-signature"></span>surf<span class="type-signature"> :string</span></h4>
</dt>
<dd>
<div class="description">
Identifier of the polygon mesh (surface) to which the vertex corresponding to the feature point belongs. If
the feature points are not defined on a 3D model (e.g. if they represent points in a 2D image), this is not used.
</div>
<h5>Type:</h5>
<ul>
<li>
<span class="param-type">string</span>
</li>
</ul>
<dl class="details">
</dl>
</dd>
<dt>
<h4 class="name" id="vert"><span class="type-signature"></span>vert<span class="type-signature"> :number</span></h4>
</dt>
<dd>
<div class="description">
Identifier of the vertex to which the vertex corresponding to the feature point belongs. This is the
vertex index within the polygon mesh (surface) identified by <a href="FeaturePoint.html#surf">surf</a>. If
the feature points are not defined on a 3D model (e.g. if they represent points in a 2D image), this is not used.
</div>
<h5>Type:</h5>
<ul>
<li>
<span class="param-type">number</span>
</li>
</ul>
<dl class="details">
</dl>
</dd>
</dl>
<h3 class="subsection-title">Methods</h3>
<dl>
<dt>
<h4 class="name" id="getPos"><span class="type-signature"></span>getPos<span class="signature">(position)</span><span class="type-signature"> &rarr; {number}</span></h4>
</dt>
<dd>
<div class="description">
Get one of the feature point positions (x,y,z).
<br/><br/>
x, y, z coordinates of the feature point. If the feature point is 2-dimensional (e.g. feature points in an image)
the z coordinate is ignored.
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>position</code></td>
<td class="type">
<span class="param-type">number</span>
</td>
<td class="description last">specifies desired position to get of the pos array, 0 for x, 1 fox y or 2 for z coordinate.</td>
</tr>
</tbody>
</table>
<dl class="details">
</dl>
<h5>Returns:</h5>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type">number</span>
</dd>
</dl>
</dd>
<dt>
<h4 class="name" id="setPos"><span class="type-signature"></span>setPos<span class="signature">(position, value)</span><span class="type-signature"></span></h4>
</dt>
<dd>
<div class="description">
Set one of the feature point positions (x,y,z).
<br/><br/>
x, y, z coordinates of the feature point. If the feature point is 2-dimensional (e.g. feature points in an image)
the z coordinate is ignored.
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>position</code></td>
<td class="type">
<span class="param-type">number</span>
</td>
<td class="description last">specifies desired position to set of the pos array, 0 for x, 1 fox y or 2 for z coordinate.</td>
</tr>
<tr>
<td class="name"><code>value</code></td>
<td class="type">
<span class="param-type">number</span>
</td>
<td class="description last">coordinate value.</td>
</tr>
</tbody>
</table>
<dl class="details">
</dl>
</dd>
</dl>
</article>
</section>
</div>
<nav>
<h2><a href="index.html">Index</a></h2><h3>Modules</h3><ul><li><a href="module-VisageTrackerUnityPlugin.html">VisageTrackerUnityPlugin</a></li><li><a href="module-VisageAnalyserUnityPlugin.html">VisageAnalyserUnityPlugin</a></li></ul><h3>Classes</h3><ul><li><a href="FaceData.html">FaceData</a></li><li><a href="ScreenSpaceGazeData.html">ScreenSpaceGazeData</a></li><li><a href="VectorFloat.html">VectorFloat</a></li><li><a href="VectorShort.html">VectorShort</a></li><li><a href="VectorString.html">VectorString</a></li><li><a href="VisageFaceAnalyser.html">VisageFaceAnalyser</a></li><li><a href="AnalysisData.html">AnalysisData</a></li><li><a href="FeaturePoint.html">FeaturePoint</a></li><li><a href="FDP.html">FDP</a></li><li><a href="VisageDetector.html">VisageDetector</a></li><li><a href="FaceDataVector.html">FaceDataVector</a></li><li><a href="VSRectVector.html">VSRectVector</a></li><li><a href="VSRect.html">VSRect</a></li><li><a href="VisageGazeTracker.html">VisageGazeTracker</a></li><li><a href="VisageFaceRecognition.html">VisageFaceRecognition</a></li><li><a href="VisageTracker.html">VisageTracker</a></li><li><a href="VisageConfiguration.html">VisageConfiguration</a></li><li><a href="VisageLivenessBlink.html">VisageLivenessBlink</a></li><li><a href="VisageLivenessSmile.html">VisageLivenessSmile</a></li><li><a href="VisageLivenessBrowRaise.html">VisageLivenessBrowRaise</a></li><li><a href="VisageAR.html">VisageAR</a></li></ul><h3>Global</h3><ul><li><a href="global.html#FP_START_GROUP_INDEX">FP_START_GROUP_INDEX</a></li><li><a href="global.html#FP_END_GROUP_INDEX">FP_END_GROUP_INDEX</a></li><li><a href="global.html#FP_NUMBER_OF_GROUPS">FP_NUMBER_OF_GROUPS</a></li><li><a href="global.html#initializeLicenseManager">initializeLicenseManager</a></li><li><a href="global.html#VisageTrackerStatus">VisageTrackerStatus</a></li><li><a href="global.html#VisageTrackerImageFormat">VisageTrackerImageFormat</a></li><li><a href="global.html#VisageTrackerOrigin">VisageTrackerOrigin</a></li><li><a href="global.html#getSDKVersion">getSDKVersion</a></li></ul>
</nav>
<br clear="both">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.0</a> on Sat Jul 29 2023 01:38:28 GMT-0000 (GMT)
</footer>
<script> prettyPrint(); </script>
<script src="scripts/linenumber.js"> </script>
</body>
</html>

View File

@ -0,0 +1,451 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>JSDoc: Class: ScreenSpaceGazeData</title>
<script src="scripts/prettify/prettify.js"> </script>
<script src="scripts/prettify/lang-css.js"> </script>
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
<link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
</head>
<body>
<div id="main">
<h1 class="page-title">Class: ScreenSpaceGazeData</h1>
<section>
<header>
<h2>
ScreenSpaceGazeData
</h2>
</header>
<article>
<div class="container-overview">
<dt>
<h4 class="name" id="ScreenSpaceGazeData"><span class="type-signature"></span>new ScreenSpaceGazeData<span class="signature">()</span><span class="type-signature"></span></h4>
</dt>
<dd>
<div class="description">
ScreenSpaceGazeData is a container structure used to hold the gaze point location, current state of screen space gaze tracking system and gaze tracking estimation quality parameters for the current frame.
This class is used both to store the calibration points during the calibration phase and the estimation results during the estimation phase.
</div>
<dl class="details">
</dl>
</dd>
</div>
<h3 class="subsection-title">Members</h3>
<dl>
<dt>
<h4 class="name" id="index"><span class="type-signature"></span>index<span class="type-signature"> :number</span></h4>
</dt>
<dd>
<div class="description">
Index of the video frame.
In online mode the frame index corresponds to the sum of the number of calibration frames passed to the tracker and the number of frames processed in the estimation phase.
<br/><br/>
In offline mode the index is the frame number in the processed video sequence.
</div>
<h5>Type:</h5>
<ul>
<li>
<span class="param-type">number</span>
</li>
</ul>
<dl class="details">
</dl>
</dd>
<dt>
<h4 class="name" id="x"><span class="type-signature"></span>x<span class="type-signature"> :number</span></h4>
</dt>
<dd>
<div class="description">
X coordinate of screen space gaze normalized to screen width.
<br/><br/>
0 corresponds to the left-most point and 1 to the right-most points of the screen. Defaults to 0.5.
</div>
<h5>Type:</h5>
<ul>
<li>
<span class="param-type">number</span>
</li>
</ul>
<dl class="details">
</dl>
</dd>
<dt>
<h4 class="name" id="y"><span class="type-signature"></span>y<span class="type-signature"> :number</span></h4>
</dt>
<dd>
<div class="description">
Y coordinate of screen space gaze normalized to screen height.
<br/><br/>
0 corresponds to the top-most point and 1 to the bottom-most points of the screen. Defaults to 0.5.
</div>
<h5>Type:</h5>
<ul>
<li>
<span class="param-type">number</span>
</li>
</ul>
<dl class="details">
</dl>
</dd>
<dt>
<h4 class="name" id="inState"><span class="type-signature"></span>inState<span class="type-signature"> :number</span></h4>
</dt>
<dd>
<div class="description">
Flag indicating the state of the gaze estimator for the current frame.
If inState is 0 the estimator is off and position is default.
<br/><br/>
If inState is 1 the estimator is calibrating and returns calibration data for the current frame.
<br/><br/>
If inState is 2 the estimator is estimating and returns the estimated screen space gaze coordinates.
<br/><br/>
If inState is -1 the estimator is calibrating but the tracking/screen space gaze estimation failed for the current frame (position is default)
<br/><br/>
If inState is -2 the estimator is estimating but the tracking/screen space gaze estimation failed for the current frame (position is default)
</div>
<h5>Type:</h5>
<ul>
<li>
<span class="param-type">number</span>
</li>
</ul>
<dl class="details">
</dl>
</dd>
<dt>
<h4 class="name" id="quality"><span class="type-signature"></span>quality<span class="type-signature"> :number</span></h4>
</dt>
<dd>
<div class="description">
The frame level gaze tracking quality.
<br/><br/>
Quality is returned as a value from 0 to 1, where 0 is the worst and 1 is the best quality. The quality is 0 also when the gaze tracking is off or calibrating.
</div>
<h5>Type:</h5>
<ul>
<li>
<span class="param-type">number</span>
</li>
</ul>
<dl class="details">
</dl>
</dd>
</dl>
</article>
</section>
</div>
<nav>
<h2><a href="index.html">Index</a></h2><h3>Modules</h3><ul><li><a href="module-VisageTrackerUnityPlugin.html">VisageTrackerUnityPlugin</a></li><li><a href="module-VisageAnalyserUnityPlugin.html">VisageAnalyserUnityPlugin</a></li></ul><h3>Classes</h3><ul><li><a href="FaceData.html">FaceData</a></li><li><a href="ScreenSpaceGazeData.html">ScreenSpaceGazeData</a></li><li><a href="VectorFloat.html">VectorFloat</a></li><li><a href="VectorShort.html">VectorShort</a></li><li><a href="VectorString.html">VectorString</a></li><li><a href="VisageFaceAnalyser.html">VisageFaceAnalyser</a></li><li><a href="AnalysisData.html">AnalysisData</a></li><li><a href="FeaturePoint.html">FeaturePoint</a></li><li><a href="FDP.html">FDP</a></li><li><a href="VisageDetector.html">VisageDetector</a></li><li><a href="FaceDataVector.html">FaceDataVector</a></li><li><a href="VSRectVector.html">VSRectVector</a></li><li><a href="VSRect.html">VSRect</a></li><li><a href="VisageGazeTracker.html">VisageGazeTracker</a></li><li><a href="VisageFaceRecognition.html">VisageFaceRecognition</a></li><li><a href="VisageTracker.html">VisageTracker</a></li><li><a href="VisageConfiguration.html">VisageConfiguration</a></li><li><a href="VisageLivenessBlink.html">VisageLivenessBlink</a></li><li><a href="VisageLivenessSmile.html">VisageLivenessSmile</a></li><li><a href="VisageLivenessBrowRaise.html">VisageLivenessBrowRaise</a></li><li><a href="VisageAR.html">VisageAR</a></li></ul><h3>Global</h3><ul><li><a href="global.html#FP_START_GROUP_INDEX">FP_START_GROUP_INDEX</a></li><li><a href="global.html#FP_END_GROUP_INDEX">FP_END_GROUP_INDEX</a></li><li><a href="global.html#FP_NUMBER_OF_GROUPS">FP_NUMBER_OF_GROUPS</a></li><li><a href="global.html#initializeLicenseManager">initializeLicenseManager</a></li><li><a href="global.html#VisageTrackerStatus">VisageTrackerStatus</a></li><li><a href="global.html#VisageTrackerImageFormat">VisageTrackerImageFormat</a></li><li><a href="global.html#VisageTrackerOrigin">VisageTrackerOrigin</a></li><li><a href="global.html#getSDKVersion">getSDKVersion</a></li></ul>
</nav>
<br clear="both">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.0</a> on Sat Jul 29 2023 01:38:28 GMT-0000 (GMT)
</footer>
<script> prettyPrint(); </script>
<script src="scripts/linenumber.js"> </script>
</body>
</html>

379
v_dl/sdk/doc/VSRect.html Normal file
View File

@ -0,0 +1,379 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>JSDoc: Class: VSRect</title>
<script src="scripts/prettify/prettify.js"> </script>
<script src="scripts/prettify/lang-css.js"> </script>
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
<link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
</head>
<body>
<div id="main">
<h1 class="page-title">Class: VSRect</h1>
<section>
<header>
<h2>
VSRect
</h2>
</header>
<article>
<div class="container-overview">
<dt>
<h4 class="name" id="VSRect"><span class="type-signature"></span>new VSRect<span class="signature">()</span><span class="type-signature"></span></h4>
</dt>
<dd>
<div class="description">
Custom class used for storing bounding box information.
<br/><br/>
Used in conjunction with <a href="VisageDetector.html#detectFaces">VisageDetector.detectFaces</a> function.
<br/><br/>
<br/>
</div>
<dl class="details">
</dl>
</dd>
</div>
<h3 class="subsection-title">Members</h3>
<dl>
<dt>
<h4 class="name" id="x"><span class="type-signature"></span>x<span class="type-signature"> :number</span></h4>
</dt>
<dd>
<div class="description">
X coordinate of the top left corner of the rectangle.
</div>
<h5>Type:</h5>
<ul>
<li>
<span class="param-type">number</span>
</li>
</ul>
<dl class="details">
</dl>
</dd>
<dt>
<h4 class="name" id="y"><span class="type-signature"></span>y<span class="type-signature"> :number</span></h4>
</dt>
<dd>
<div class="description">
Y coordinate of the top left corner of the rectangle.
</div>
<h5>Type:</h5>
<ul>
<li>
<span class="param-type">number</span>
</li>
</ul>
<dl class="details">
</dl>
</dd>
<dt>
<h4 class="name" id="width"><span class="type-signature"></span>width<span class="type-signature"> :number</span></h4>
</dt>
<dd>
<div class="description">
Rectangle width.
</div>
<h5>Type:</h5>
<ul>
<li>
<span class="param-type">number</span>
</li>
</ul>
<dl class="details">
</dl>
</dd>
<dt>
<h4 class="name" id="height"><span class="type-signature"></span>height<span class="type-signature"> :number</span></h4>
</dt>
<dd>
<div class="description">
Rectangle height.
</div>
<h5>Type:</h5>
<ul>
<li>
<span class="param-type">number</span>
</li>
</ul>
<dl class="details">
</dl>
</dd>
</dl>
</article>
</section>
</div>
<nav>
<h2><a href="index.html">Index</a></h2><h3>Modules</h3><ul><li><a href="module-VisageTrackerUnityPlugin.html">VisageTrackerUnityPlugin</a></li><li><a href="module-VisageAnalyserUnityPlugin.html">VisageAnalyserUnityPlugin</a></li></ul><h3>Classes</h3><ul><li><a href="FaceData.html">FaceData</a></li><li><a href="ScreenSpaceGazeData.html">ScreenSpaceGazeData</a></li><li><a href="VectorFloat.html">VectorFloat</a></li><li><a href="VectorShort.html">VectorShort</a></li><li><a href="VectorString.html">VectorString</a></li><li><a href="VisageFaceAnalyser.html">VisageFaceAnalyser</a></li><li><a href="AnalysisData.html">AnalysisData</a></li><li><a href="FeaturePoint.html">FeaturePoint</a></li><li><a href="FDP.html">FDP</a></li><li><a href="VisageDetector.html">VisageDetector</a></li><li><a href="FaceDataVector.html">FaceDataVector</a></li><li><a href="VSRectVector.html">VSRectVector</a></li><li><a href="VSRect.html">VSRect</a></li><li><a href="VisageGazeTracker.html">VisageGazeTracker</a></li><li><a href="VisageFaceRecognition.html">VisageFaceRecognition</a></li><li><a href="VisageTracker.html">VisageTracker</a></li><li><a href="VisageConfiguration.html">VisageConfiguration</a></li><li><a href="VisageLivenessBlink.html">VisageLivenessBlink</a></li><li><a href="VisageLivenessSmile.html">VisageLivenessSmile</a></li><li><a href="VisageLivenessBrowRaise.html">VisageLivenessBrowRaise</a></li><li><a href="VisageAR.html">VisageAR</a></li></ul><h3>Global</h3><ul><li><a href="global.html#FP_START_GROUP_INDEX">FP_START_GROUP_INDEX</a></li><li><a href="global.html#FP_END_GROUP_INDEX">FP_END_GROUP_INDEX</a></li><li><a href="global.html#FP_NUMBER_OF_GROUPS">FP_NUMBER_OF_GROUPS</a></li><li><a href="global.html#initializeLicenseManager">initializeLicenseManager</a></li><li><a href="global.html#VisageTrackerStatus">VisageTrackerStatus</a></li><li><a href="global.html#VisageTrackerImageFormat">VisageTrackerImageFormat</a></li><li><a href="global.html#VisageTrackerOrigin">VisageTrackerOrigin</a></li><li><a href="global.html#getSDKVersion">getSDKVersion</a></li></ul>
</nav>
<br clear="both">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.0</a> on Sat Jul 29 2023 01:38:29 GMT-0000 (GMT)
</footer>
<script> prettyPrint(); </script>
<script src="scripts/linenumber.js"> </script>
</body>
</html>

View File

@ -0,0 +1,483 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>JSDoc: Class: VSRectVector</title>
<script src="scripts/prettify/prettify.js"> </script>
<script src="scripts/prettify/lang-css.js"> </script>
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
<link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
</head>
<body>
<div id="main">
<h1 class="page-title">Class: VSRectVector</h1>
<section>
<header>
<h2>
VSRectVector
</h2>
</header>
<article>
<div class="container-overview">
<dt>
<h4 class="name" id="VSRectVector"><span class="type-signature"></span>new VSRectVector<span class="signature">()</span><span class="type-signature"></span></h4>
</dt>
<dd>
<div class="description">
Custom container class for <a href="VSRect.html">VSRect</a> objects.
<br/><br/>
Used in conjunction with <a href="VisageDetector.html#detectFaces">VisageDetector.detectFaces</a> function.
<br/><br/>
Sample usage:
<br/>
<pre class="prettyprint source"><code>
function onDetect()
{
//Instantiate an VSRectVector instance where detection results will be stored
boundingBoxArray = new VisageModule.VSRectVector();
//Specify the maximum number of faces that will be detected in the image
maxFaces = 10;
for (var i = 0; i < maxFaces; ++i)
{
boundingBox = new VisageModule.VSRect();
boundingBoxArray.push_back(boundingBox);
}
//Detect face and facial features in an image
var numberOfFaces = m_Detector.detectFaces(frameWidth, frameHeight, ppixels, boundingBoxArray, maxFaces);
//Fetch and draw bounding box on the first returned face
if (numberOfFaces > 0)
{
drawBoundingBox(boundingBoxArray.get(0));
}
}
</code></pre>
<br/>
</div>
<dl class="details">
</dl>
</dd>
</div>
<h3 class="subsection-title">Methods</h3>
<dl>
<dt>
<h4 class="name" id="push_back"><span class="type-signature"></span>push_back<span class="signature">(vsrect)</span><span class="type-signature"></span></h4>
</dt>
<dd>
<div class="description">
Add existing <a href="VSRect.html">VSRect</a> object.
<br/><br/>
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>vsrect</code></td>
<td class="type">
<span class="param-type"><a href="VSRect.html">VSRect</a></span>
</td>
<td class="description last">VSRect object to be added.</td>
</tr>
</tbody>
</table>
<dl class="details">
</dl>
</dd>
<dt>
<h4 class="name" id="get"><span class="type-signature"></span>get<span class="signature">(index)</span><span class="type-signature"> &rarr; {<a href="VSRect.html">VSRect</a>}</span></h4>
</dt>
<dd>
<div class="description">
Get <a href="VSRect.html">VSRect</a> object from the vector specified by index parameter.
<br/><br/>
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>index</code></td>
<td class="type">
<span class="param-type">number</span>
</td>
<td class="description last">position of the VSRect object to be fetched.</td>
</tr>
</tbody>
</table>
<dl class="details">
</dl>
<h5>Returns:</h5>
<div class="param-desc">
VSRect object located on the location specified by index parameter
</div>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type"><a href="VSRect.html">VSRect</a></span>
</dd>
</dl>
</dd>
<dt>
<h4 class="name" id="delete"><span class="type-signature"></span>delete<span class="signature">()</span><span class="type-signature"></span></h4>
</dt>
<dd>
<div class="description">
Release the memory allocated to the VSRectVector object.
<br/><br/>
</div>
<dl class="details">
</dl>
</dd>
</dl>
</article>
</section>
</div>
<nav>
<h2><a href="index.html">Index</a></h2><h3>Modules</h3><ul><li><a href="module-VisageTrackerUnityPlugin.html">VisageTrackerUnityPlugin</a></li><li><a href="module-VisageAnalyserUnityPlugin.html">VisageAnalyserUnityPlugin</a></li></ul><h3>Classes</h3><ul><li><a href="FaceData.html">FaceData</a></li><li><a href="ScreenSpaceGazeData.html">ScreenSpaceGazeData</a></li><li><a href="VectorFloat.html">VectorFloat</a></li><li><a href="VectorShort.html">VectorShort</a></li><li><a href="VectorString.html">VectorString</a></li><li><a href="VisageFaceAnalyser.html">VisageFaceAnalyser</a></li><li><a href="AnalysisData.html">AnalysisData</a></li><li><a href="FeaturePoint.html">FeaturePoint</a></li><li><a href="FDP.html">FDP</a></li><li><a href="VisageDetector.html">VisageDetector</a></li><li><a href="FaceDataVector.html">FaceDataVector</a></li><li><a href="VSRectVector.html">VSRectVector</a></li><li><a href="VSRect.html">VSRect</a></li><li><a href="VisageGazeTracker.html">VisageGazeTracker</a></li><li><a href="VisageFaceRecognition.html">VisageFaceRecognition</a></li><li><a href="VisageTracker.html">VisageTracker</a></li><li><a href="VisageConfiguration.html">VisageConfiguration</a></li><li><a href="VisageLivenessBlink.html">VisageLivenessBlink</a></li><li><a href="VisageLivenessSmile.html">VisageLivenessSmile</a></li><li><a href="VisageLivenessBrowRaise.html">VisageLivenessBrowRaise</a></li><li><a href="VisageAR.html">VisageAR</a></li></ul><h3>Global</h3><ul><li><a href="global.html#FP_START_GROUP_INDEX">FP_START_GROUP_INDEX</a></li><li><a href="global.html#FP_END_GROUP_INDEX">FP_END_GROUP_INDEX</a></li><li><a href="global.html#FP_NUMBER_OF_GROUPS">FP_NUMBER_OF_GROUPS</a></li><li><a href="global.html#initializeLicenseManager">initializeLicenseManager</a></li><li><a href="global.html#VisageTrackerStatus">VisageTrackerStatus</a></li><li><a href="global.html#VisageTrackerImageFormat">VisageTrackerImageFormat</a></li><li><a href="global.html#VisageTrackerOrigin">VisageTrackerOrigin</a></li><li><a href="global.html#getSDKVersion">getSDKVersion</a></li></ul>
</nav>
<br clear="both">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.0</a> on Sat Jul 29 2023 01:38:29 GMT-0000 (GMT)
</footer>
<script> prettyPrint(); </script>
<script src="scripts/linenumber.js"> </script>
</body>
</html>

View File

@ -0,0 +1,484 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>JSDoc: Class: VectorFloat</title>
<script src="scripts/prettify/prettify.js"> </script>
<script src="scripts/prettify/lang-css.js"> </script>
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
<link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
</head>
<body>
<div id="main">
<h1 class="page-title">Class: VectorFloat</h1>
<section>
<header>
<h2>
VectorFloat
</h2>
</header>
<article>
<div class="container-overview">
<dt>
<h4 class="name" id="VectorFloat"><span class="type-signature"></span>new VectorFloat<span class="signature">()</span><span class="type-signature"></span></h4>
</dt>
<dd>
<div class="description">
Custom container class for numbers.
<br/><br/>
For example, used in conjunction with VisageFaceAnalayser.estimateEmotion() function.
<br/><br/>
Sample usage:
<br/>
<pre class="prettyprint source"><code>
function onEstimateEmotion()
{
//create new empty container object
emotions = new VisageModule.VectorFloat();
//pass the empty container to be filed by the estimateEmotion function
estimatedEmotion = visageFaceAnalyser.estimateEmotion(mWidth, mHeight, ppixels, faceDataArray.get(0), emotions);
if (estimatedEmotion == 1)
{
//fetch values from the container object
var anger = emotions.get(0);
var disgust = emotions.get(1);
var fear = emotions.get(2);
var happiness = emotions.get(3);
var sadness = emotions.get(4);
var surprise = emotions.get(5);
var neutral = emotions.get(6);
}
//Clean-up
emotions.delete();
}
</code></pre>
<br/>
</div>
<dl class="details">
</dl>
</dd>
</div>
<h3 class="subsection-title">Methods</h3>
<dl>
<dt>
<h4 class="name" id="push_back"><span class="type-signature"></span>push_back<span class="signature">(number)</span><span class="type-signature"></span></h4>
</dt>
<dd>
<div class="description">
Add number to vector.
<br/><br/>
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>number</code></td>
<td class="type">
<span class="param-type">number</span>
</td>
<td class="description last">number to be added.</td>
</tr>
</tbody>
</table>
<dl class="details">
</dl>
</dd>
<dt>
<h4 class="name" id="get"><span class="type-signature"></span>get<span class="signature">(index)</span><span class="type-signature"> &rarr; {number}</span></h4>
</dt>
<dd>
<div class="description">
Get number from the vector specified by index parameter.
<br/><br/>
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>index</code></td>
<td class="type">
<span class="param-type">number</span>
</td>
<td class="description last">position of the number in the vector.</td>
</tr>
</tbody>
</table>
<dl class="details">
</dl>
<h5>Returns:</h5>
<div class="param-desc">
number located on the location specified by index parameter
</div>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type">number</span>
</dd>
</dl>
</dd>
<dt>
<h4 class="name" id="delete"><span class="type-signature"></span>delete<span class="signature">()</span><span class="type-signature"></span></h4>
</dt>
<dd>
<div class="description">
Release the memory allocated to the VectorFloat object.
<br/><br/>
</div>
<dl class="details">
</dl>
</dd>
</dl>
</article>
</section>
</div>
<nav>
<h2><a href="index.html">Index</a></h2><h3>Modules</h3><ul><li><a href="module-VisageTrackerUnityPlugin.html">VisageTrackerUnityPlugin</a></li><li><a href="module-VisageAnalyserUnityPlugin.html">VisageAnalyserUnityPlugin</a></li></ul><h3>Classes</h3><ul><li><a href="FaceData.html">FaceData</a></li><li><a href="ScreenSpaceGazeData.html">ScreenSpaceGazeData</a></li><li><a href="VectorFloat.html">VectorFloat</a></li><li><a href="VectorShort.html">VectorShort</a></li><li><a href="VectorString.html">VectorString</a></li><li><a href="VisageFaceAnalyser.html">VisageFaceAnalyser</a></li><li><a href="AnalysisData.html">AnalysisData</a></li><li><a href="FeaturePoint.html">FeaturePoint</a></li><li><a href="FDP.html">FDP</a></li><li><a href="VisageDetector.html">VisageDetector</a></li><li><a href="FaceDataVector.html">FaceDataVector</a></li><li><a href="VSRectVector.html">VSRectVector</a></li><li><a href="VSRect.html">VSRect</a></li><li><a href="VisageGazeTracker.html">VisageGazeTracker</a></li><li><a href="VisageFaceRecognition.html">VisageFaceRecognition</a></li><li><a href="VisageTracker.html">VisageTracker</a></li><li><a href="VisageConfiguration.html">VisageConfiguration</a></li><li><a href="VisageLivenessBlink.html">VisageLivenessBlink</a></li><li><a href="VisageLivenessSmile.html">VisageLivenessSmile</a></li><li><a href="VisageLivenessBrowRaise.html">VisageLivenessBrowRaise</a></li><li><a href="VisageAR.html">VisageAR</a></li></ul><h3>Global</h3><ul><li><a href="global.html#FP_START_GROUP_INDEX">FP_START_GROUP_INDEX</a></li><li><a href="global.html#FP_END_GROUP_INDEX">FP_END_GROUP_INDEX</a></li><li><a href="global.html#FP_NUMBER_OF_GROUPS">FP_NUMBER_OF_GROUPS</a></li><li><a href="global.html#initializeLicenseManager">initializeLicenseManager</a></li><li><a href="global.html#VisageTrackerStatus">VisageTrackerStatus</a></li><li><a href="global.html#VisageTrackerImageFormat">VisageTrackerImageFormat</a></li><li><a href="global.html#VisageTrackerOrigin">VisageTrackerOrigin</a></li><li><a href="global.html#getSDKVersion">getSDKVersion</a></li></ul>
</nav>
<br clear="both">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.0</a> on Sat Jul 29 2023 01:38:28 GMT-0000 (GMT)
</footer>
<script> prettyPrint(); </script>
<script src="scripts/linenumber.js"> </script>
</body>
</html>

View File

@ -0,0 +1,485 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>JSDoc: Class: VectorShort</title>
<script src="scripts/prettify/prettify.js"> </script>
<script src="scripts/prettify/lang-css.js"> </script>
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
<link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
</head>
<body>
<div id="main">
<h1 class="page-title">Class: VectorShort</h1>
<section>
<header>
<h2>
VectorShort
</h2>
</header>
<article>
<div class="container-overview">
<dt>
<h4 class="name" id="VectorShort"><span class="type-signature"></span>new VectorShort<span class="signature">()</span><span class="type-signature"></span></h4>
</dt>
<dd>
<div class="description">
Custom container class for numbers.
<br/><br/>
Sample usage:
<br/>
<pre class="prettyprint source"><code>
function onTrack()
{
//Call track on a frame
trackerReturnState = m_Tracker.track(
mWidth, mHeight, ppixels, faceDataArray,
VisageModule.VisageTrackerImageFormat.VISAGE_FRAMEGRABBER_FMT_RGBA.value,
VisageModule.VisageTrackerOrigin.VISAGE_FRAMEGRABBER_ORIGIN_TL.value);
//Test result
if (trackerReturnState.get(0)===VisageModule.VisageTrackerStatus.TRACK_STAT_OK.value)
{
// construct a VectorShort object to pass to the extractDescriptor method
var descriptor = new VisageModule.VectorShort();
//
// call extractDescriptor and pass the faceData input parameter, image data and information and a short vector to be populated
var success = m_rec.extractDescriptor(faceDataArray.get(0), mWidth, mHeight, ppixels, descriptor);
if (success)
{
var first = descriptor.get(0);
}
// when done using descriptor clear memory
descriptor.delete();
}
}
</code></pre>
<br/>
</div>
<dl class="details">
</dl>
</dd>
</div>
<h3 class="subsection-title">Methods</h3>
<dl>
<dt>
<h4 class="name" id="push_back"><span class="type-signature"></span>push_back<span class="signature">(number)</span><span class="type-signature"></span></h4>
</dt>
<dd>
<div class="description">
Add number to vector.
<br/><br/>
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>number</code></td>
<td class="type">
<span class="param-type">number</span>
</td>
<td class="description last">number to be added.</td>
</tr>
</tbody>
</table>
<dl class="details">
</dl>
</dd>
<dt>
<h4 class="name" id="get"><span class="type-signature"></span>get<span class="signature">(index)</span><span class="type-signature"> &rarr; {number}</span></h4>
</dt>
<dd>
<div class="description">
Get number from the vector specified by index parameter.
<br/><br/>
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>index</code></td>
<td class="type">
<span class="param-type">number</span>
</td>
<td class="description last">position of the number in the vector.</td>
</tr>
</tbody>
</table>
<dl class="details">
</dl>
<h5>Returns:</h5>
<div class="param-desc">
number located on the location specified by index parameter
</div>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type">number</span>
</dd>
</dl>
</dd>
<dt>
<h4 class="name" id="delete"><span class="type-signature"></span>delete<span class="signature">()</span><span class="type-signature"></span></h4>
</dt>
<dd>
<div class="description">
Release the memory allocated to the VectorShort object.
<br/><br/>
</div>
<dl class="details">
</dl>
</dd>
</dl>
</article>
</section>
</div>
<nav>
<h2><a href="index.html">Index</a></h2><h3>Modules</h3><ul><li><a href="module-VisageTrackerUnityPlugin.html">VisageTrackerUnityPlugin</a></li><li><a href="module-VisageAnalyserUnityPlugin.html">VisageAnalyserUnityPlugin</a></li></ul><h3>Classes</h3><ul><li><a href="FaceData.html">FaceData</a></li><li><a href="ScreenSpaceGazeData.html">ScreenSpaceGazeData</a></li><li><a href="VectorFloat.html">VectorFloat</a></li><li><a href="VectorShort.html">VectorShort</a></li><li><a href="VectorString.html">VectorString</a></li><li><a href="VisageFaceAnalyser.html">VisageFaceAnalyser</a></li><li><a href="AnalysisData.html">AnalysisData</a></li><li><a href="FeaturePoint.html">FeaturePoint</a></li><li><a href="FDP.html">FDP</a></li><li><a href="VisageDetector.html">VisageDetector</a></li><li><a href="FaceDataVector.html">FaceDataVector</a></li><li><a href="VSRectVector.html">VSRectVector</a></li><li><a href="VSRect.html">VSRect</a></li><li><a href="VisageGazeTracker.html">VisageGazeTracker</a></li><li><a href="VisageFaceRecognition.html">VisageFaceRecognition</a></li><li><a href="VisageTracker.html">VisageTracker</a></li><li><a href="VisageConfiguration.html">VisageConfiguration</a></li><li><a href="VisageLivenessBlink.html">VisageLivenessBlink</a></li><li><a href="VisageLivenessSmile.html">VisageLivenessSmile</a></li><li><a href="VisageLivenessBrowRaise.html">VisageLivenessBrowRaise</a></li><li><a href="VisageAR.html">VisageAR</a></li></ul><h3>Global</h3><ul><li><a href="global.html#FP_START_GROUP_INDEX">FP_START_GROUP_INDEX</a></li><li><a href="global.html#FP_END_GROUP_INDEX">FP_END_GROUP_INDEX</a></li><li><a href="global.html#FP_NUMBER_OF_GROUPS">FP_NUMBER_OF_GROUPS</a></li><li><a href="global.html#initializeLicenseManager">initializeLicenseManager</a></li><li><a href="global.html#VisageTrackerStatus">VisageTrackerStatus</a></li><li><a href="global.html#VisageTrackerImageFormat">VisageTrackerImageFormat</a></li><li><a href="global.html#VisageTrackerOrigin">VisageTrackerOrigin</a></li><li><a href="global.html#getSDKVersion">getSDKVersion</a></li></ul>
</nav>
<br clear="both">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.0</a> on Sat Jul 29 2023 01:38:28 GMT-0000 (GMT)
</footer>
<script> prettyPrint(); </script>
<script src="scripts/linenumber.js"> </script>
</body>
</html>

View File

@ -0,0 +1,484 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>JSDoc: Class: VectorString</title>
<script src="scripts/prettify/prettify.js"> </script>
<script src="scripts/prettify/lang-css.js"> </script>
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
<link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
</head>
<body>
<div id="main">
<h1 class="page-title">Class: VectorString</h1>
<section>
<header>
<h2>
VectorString
</h2>
</header>
<article>
<div class="container-overview">
<dt>
<h4 class="name" id="VectorString"><span class="type-signature"></span>new VectorString<span class="signature">()</span><span class="type-signature"></span></h4>
</dt>
<dd>
<div class="description">
Custom container class for strings.
<br/><br/>
Sample usage:
<br/>
<pre class="prettyprint source"><code>
function onTrack()
{
//Call track on a frame
trackerReturnState = m_Tracker.track(
mWidth, mHeight, ppixels, faceDataArray,
VisageModule.VisageTrackerImageFormat.VISAGE_FRAMEGRABBER_FMT_RGBA.value,
VisageModule.VisageTrackerOrigin.VISAGE_FRAMEGRABBER_ORIGIN_TL.value);
//Test result
if (trackerReturnState.get(0)===VisageModule.VisageTrackerStatus.TRACK_STAT_OK.value)
{
//Read action unit names
var auNames = [];
var faceData = faceDataArray.get(0);
var actionUnitNames = faceData.getActionUnitsNames();
for (var i = 0; i < faceData.actionUnitCount; ++i)
{
auNames.push(actionUnitNames.get(i));
}
//Clean-up
actionUnitNames.delete();
}
}
</code></pre>
<br/>
</div>
<dl class="details">
</dl>
</dd>
</div>
<h3 class="subsection-title">Methods</h3>
<dl>
<dt>
<h4 class="name" id="push_back"><span class="type-signature"></span>push_back<span class="signature">(string)</span><span class="type-signature"></span></h4>
</dt>
<dd>
<div class="description">
Add string to vector.
<br/><br/>
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>string</code></td>
<td class="type">
<span class="param-type">string</span>
</td>
<td class="description last">string to be added.</td>
</tr>
</tbody>
</table>
<dl class="details">
</dl>
</dd>
<dt>
<h4 class="name" id="get"><span class="type-signature"></span>get<span class="signature">(index)</span><span class="type-signature"> &rarr; {string}</span></h4>
</dt>
<dd>
<div class="description">
Get string from the vector specified by index parameter.
<br/><br/>
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>index</code></td>
<td class="type">
<span class="param-type">number</span>
</td>
<td class="description last">position of the number in the vector.</td>
</tr>
</tbody>
</table>
<dl class="details">
</dl>
<h5>Returns:</h5>
<div class="param-desc">
string located on the location specified by index parameter
</div>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type">string</span>
</dd>
</dl>
</dd>
<dt>
<h4 class="name" id="delete"><span class="type-signature"></span>delete<span class="signature">()</span><span class="type-signature"></span></h4>
</dt>
<dd>
<div class="description">
Release the memory allocated to the VectorString object.
<br/><br/>
</div>
<dl class="details">
</dl>
</dd>
</dl>
</article>
</section>
</div>
<nav>
<h2><a href="index.html">Index</a></h2><h3>Modules</h3><ul><li><a href="module-VisageTrackerUnityPlugin.html">VisageTrackerUnityPlugin</a></li><li><a href="module-VisageAnalyserUnityPlugin.html">VisageAnalyserUnityPlugin</a></li></ul><h3>Classes</h3><ul><li><a href="FaceData.html">FaceData</a></li><li><a href="ScreenSpaceGazeData.html">ScreenSpaceGazeData</a></li><li><a href="VectorFloat.html">VectorFloat</a></li><li><a href="VectorShort.html">VectorShort</a></li><li><a href="VectorString.html">VectorString</a></li><li><a href="VisageFaceAnalyser.html">VisageFaceAnalyser</a></li><li><a href="AnalysisData.html">AnalysisData</a></li><li><a href="FeaturePoint.html">FeaturePoint</a></li><li><a href="FDP.html">FDP</a></li><li><a href="VisageDetector.html">VisageDetector</a></li><li><a href="FaceDataVector.html">FaceDataVector</a></li><li><a href="VSRectVector.html">VSRectVector</a></li><li><a href="VSRect.html">VSRect</a></li><li><a href="VisageGazeTracker.html">VisageGazeTracker</a></li><li><a href="VisageFaceRecognition.html">VisageFaceRecognition</a></li><li><a href="VisageTracker.html">VisageTracker</a></li><li><a href="VisageConfiguration.html">VisageConfiguration</a></li><li><a href="VisageLivenessBlink.html">VisageLivenessBlink</a></li><li><a href="VisageLivenessSmile.html">VisageLivenessSmile</a></li><li><a href="VisageLivenessBrowRaise.html">VisageLivenessBrowRaise</a></li><li><a href="VisageAR.html">VisageAR</a></li></ul><h3>Global</h3><ul><li><a href="global.html#FP_START_GROUP_INDEX">FP_START_GROUP_INDEX</a></li><li><a href="global.html#FP_END_GROUP_INDEX">FP_END_GROUP_INDEX</a></li><li><a href="global.html#FP_NUMBER_OF_GROUPS">FP_NUMBER_OF_GROUPS</a></li><li><a href="global.html#initializeLicenseManager">initializeLicenseManager</a></li><li><a href="global.html#VisageTrackerStatus">VisageTrackerStatus</a></li><li><a href="global.html#VisageTrackerImageFormat">VisageTrackerImageFormat</a></li><li><a href="global.html#VisageTrackerOrigin">VisageTrackerOrigin</a></li><li><a href="global.html#getSDKVersion">getSDKVersion</a></li></ul>
</nav>
<br clear="both">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.0</a> on Sat Jul 29 2023 01:38:28 GMT-0000 (GMT)
</footer>
<script> prettyPrint(); </script>
<script src="scripts/linenumber.js"> </script>
</body>
</html>

525
v_dl/sdk/doc/VisageAR.html Normal file
View File

@ -0,0 +1,525 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>JSDoc: Class: VisageAR</title>
<script src="scripts/prettify/prettify.js"> </script>
<script src="scripts/prettify/lang-css.js"> </script>
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
<link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
</head>
<body>
<div id="main">
<h1 class="page-title">Class: VisageAR</h1>
<section>
<header>
<h2>
VisageAR
</h2>
</header>
<article>
<div class="container-overview">
<dt>
<h4 class="name" id="VisageAR"><span class="type-signature"></span>new VisageAR<span class="signature">()</span><span class="type-signature"></span></h4>
</dt>
<dd>
<div class="description">
VisageAR <br/><br/>
</div>
<dl class="details">
</dl>
</dd>
</div>
<h3 class="subsection-title">Members</h3>
<dl>
<dt>
<h4 class="name" id="initialize"><span class="type-signature"></span>initialize<span class="type-signature"></span></h4>
</dt>
<dd>
<div class="description">
Initializes Visage AR and sets up rendering and tracking. The video resolution is used for the canvas resolution.
</div>
<dl class="details">
</dl>
</dd>
<dt>
<h4 class="name" id="loadOccluder"><span class="type-signature"></span>loadOccluder<span class="type-signature"></span></h4>
</dt>
<dd>
<div class="description">
Loads the occlusion mask in OBJ format and its material in MTL format. <br><br
</div>
<dl class="details">
</dl>
</dd>
<dt>
<h4 class="name" id="loadObject"><span class="type-signature"></span>loadObject<span class="type-signature"></span></h4>
</dt>
<dd>
<div class="description">
Loads the 3D object and adds it to the main scene to be rendered from the given URL and makes it active. The object should be in OBJ format and the material should be in MTL format. The MTL file should have the same name as the OBJ file. See the <a href="eyewear_model_guide.html">modeling guide</a> on how to prepare models for use with VisageAR.
</div>
<dl class="details">
</dl>
</dd>
<dt>
<h4 class="name" id="clear"><span class="type-signature"></span>clear<span class="type-signature"></span></h4>
</dt>
<dd>
<div class="description">
Clears the scene, 3D objects, pixels buffer and canvas for displaying the frame
</div>
<dl class="details">
</dl>
</dd>
</dl>
<h3 class="subsection-title">Methods</h3>
<dl>
<dt>
<h4 class="name" id="clearOccluder"><span class="type-signature"></span>clearOccluder<span class="signature">()</span><span class="type-signature"></span></h4>
</dt>
<dd>
<div class="description">
Clears the current active occlusion mask and removes it from the occlusion scene.
</div>
<dl class="details">
</dl>
</dd>
<dt>
<h4 class="name" id="startTracking"><span class="type-signature"></span>startTracking<span class="signature">()</span><span class="type-signature"></span></h4>
</dt>
<dd>
<div class="description">
Starts tracking the face and displaying (rendering) any 3D objects loaded using loadObject() function. Object is overlayed on the face.
</div>
<dl class="details">
</dl>
</dd>
<dt>
<h4 class="name" id="stopTracking"><span class="type-signature"></span>stopTracking<span class="signature">()</span><span class="type-signature"></span></h4>
</dt>
<dd>
<div class="description">
Stops tracking.
</div>
<dl class="details">
</dl>
</dd>
</dl>
</article>
</section>
</div>
<nav>
<h2><a href="index.html">Index</a></h2><h3>Modules</h3><ul><li><a href="module-VisageTrackerUnityPlugin.html">VisageTrackerUnityPlugin</a></li><li><a href="module-VisageAnalyserUnityPlugin.html">VisageAnalyserUnityPlugin</a></li></ul><h3>Classes</h3><ul><li><a href="FaceData.html">FaceData</a></li><li><a href="ScreenSpaceGazeData.html">ScreenSpaceGazeData</a></li><li><a href="VectorFloat.html">VectorFloat</a></li><li><a href="VectorShort.html">VectorShort</a></li><li><a href="VectorString.html">VectorString</a></li><li><a href="VisageFaceAnalyser.html">VisageFaceAnalyser</a></li><li><a href="AnalysisData.html">AnalysisData</a></li><li><a href="FeaturePoint.html">FeaturePoint</a></li><li><a href="FDP.html">FDP</a></li><li><a href="VisageDetector.html">VisageDetector</a></li><li><a href="FaceDataVector.html">FaceDataVector</a></li><li><a href="VSRectVector.html">VSRectVector</a></li><li><a href="VSRect.html">VSRect</a></li><li><a href="VisageGazeTracker.html">VisageGazeTracker</a></li><li><a href="VisageFaceRecognition.html">VisageFaceRecognition</a></li><li><a href="VisageTracker.html">VisageTracker</a></li><li><a href="VisageConfiguration.html">VisageConfiguration</a></li><li><a href="VisageLivenessBlink.html">VisageLivenessBlink</a></li><li><a href="VisageLivenessSmile.html">VisageLivenessSmile</a></li><li><a href="VisageLivenessBrowRaise.html">VisageLivenessBrowRaise</a></li><li><a href="VisageAR.html">VisageAR</a></li></ul><h3>Global</h3><ul><li><a href="global.html#FP_START_GROUP_INDEX">FP_START_GROUP_INDEX</a></li><li><a href="global.html#FP_END_GROUP_INDEX">FP_END_GROUP_INDEX</a></li><li><a href="global.html#FP_NUMBER_OF_GROUPS">FP_NUMBER_OF_GROUPS</a></li><li><a href="global.html#initializeLicenseManager">initializeLicenseManager</a></li><li><a href="global.html#VisageTrackerStatus">VisageTrackerStatus</a></li><li><a href="global.html#VisageTrackerImageFormat">VisageTrackerImageFormat</a></li><li><a href="global.html#VisageTrackerOrigin">VisageTrackerOrigin</a></li><li><a href="global.html#getSDKVersion">getSDKVersion</a></li></ul>
</nav>
<br clear="both">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.0</a> on Sat Jul 29 2023 01:38:30 GMT-0000 (GMT)
</footer>
<script> prettyPrint(); </script>
<script src="scripts/linenumber.js"> </script>
</body>
</html>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,914 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>JSDoc: Class: VisageFaceAnalyser</title>
<script src="scripts/prettify/prettify.js"> </script>
<script src="scripts/prettify/lang-css.js"> </script>
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
<link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
</head>
<body>
<div id="main">
<h1 class="page-title">Class: VisageFaceAnalyser</h1>
<section>
<header>
<h2>
VisageFaceAnalyser
</h2>
</header>
<article>
<div class="container-overview">
<dt>
<h4 class="name" id="VisageFaceAnalyser"><span class="type-signature"></span>new VisageFaceAnalyser<span class="signature">()</span><span class="type-signature"></span></h4>
</dt>
<dd>
<div class="description">
VisageFaceAnalyser contains face analysis algorithms capable of estimating age, gender, and emotion from facial images.
<br/><br/>
Following types of analysis can be used:
<br/><br/>
<table>
<tr><td width="250"><b>ANALYSIS TYPE</b></td><td width="200"><b>FUNCTION</b></td></tr>
<tr><td>image analysis</td><td><a href="VisageFaceAnalyser.html#analyseImage">analyseImage()</a></td></tr>
<tr><td>image stream (video) analysis</td><td><a href="VisageFaceAnalyser.html#analyseStream">analyseStream()</a></td></tr>
</table>
<br/><br/>
Age, gender and emotion analysis is based on the <a href="FaceData.html">FaceData</a> obtained from the
<a href="VisageTracker.html">VisageTracker</a> or <a href="VisageDetector.html">VisageDetector</a> API.
<br/><br/>
<b>Note</b>: After the end of use VisageFaceAnalyser object needs to be deleted to release the allocated memory. Example:
<pre class="prettyprint source"><code>
&lt;script>
m_FaceAnalyser = new VisageModule.VisageFaceAnalyser();
...
m_FaceAnalyser.delete();
&lt;/script>
</code></pre>
<br/><br/>
<h5>Dependencies</h5>
<br/>
VisageFaceAnalyser requires algorithm data file, neural network configuration file and license key file
to be preloaded to virtual file system. Data and neural network configuration file can be found in the <i>www/lib</i> folder.
<br/><br/>
<h6>Data files</h6>
An external loader script <b>visageAnalysisData.js</b> is provided for preloading the <b>visageAnalysisData.data</b> file.
<br/><br/>
<u id="changeLocation"><i>Changing the location of data files</u></i>
<br/>
By default, loader scripts expect the <b>.data</b> files to be in the same location as <b>the application's main html file</b>,
while <b>visageSDK.wasm</b> is expected to be in the same location as <b>visageSDK.js</b> library file.
However, location of the <i>.data</i> and <i>.wasm</i> files can be changed.
<br/>
The code example below shows how to implement <i>locateFile</i> function and how to set it as an attribute to the VisageModule object.
<br/><br/>
<h6>Configuration file and license key files</h6>
Configuration file and the license key files are preloaded using VisageModule's API function assigned to the <i>preRun</i> attribute:
<pre><code>
VisageModule.FS_createPreloadedFile(parent, name, url, canRead, canWrite)
</code></pre>
where <i>parent</i> and <i>name</i> are the path on the virtual file system and the name of the file, respectively.
</br></br>
</br></br>
<h5>visage|SDK initialization order</h5>
<br/>
The order in which the VisageModule is declared and library and data scripts are included is important.
<br/>
<ul>
<li> First, <b>VisageModule</b> object is declared
<ul>
<li> including preloading of the configuration files, license files and possibly, changing the location of data files
</ul>
<li> then <b>visageSDK.js</b> library script is included and
<li> last, <b>visageAnalysisData.js</b> external data loader script is included
</ul>
<br/><br/>
Sample usage - changing data files location and script including order:
<br/>
<pre class="prettyprint source"><code>
&lt;script>
licenseName = "lic_web.vlc"
licenseURL = "lic_web.vlc"
var locateFile = function(dataFileName) {var relativePath = "../../lib/" + dataFileName; return relativePath};
VisageModule = {
locateFile: locateFile,
preRun: [function() {
VisageModule.FS_createPreloadedFile('/', 'NeuralNet.cfg', "../../lib/NeuralNet.cfg", true, false);
VisageModule.FS_createPreloadedFile('/', 'Head Tracker.cfg', "../../lib/Head Tracker.cfg", true, false);
VisageModule.FS_createPreloadedFile('/', licenseName, licenseURL, true, false, function(){ }, function(){ alert("Loading License Failed!") });
}],
onRuntimeInitialized: onModuleInitialized
}
&lt;/script>
&lt;script src="../../lib/visageSDK.js"> &lt;/script>
&lt;script src="../../lib/visageAnalysisData.js"> &lt;/script>
</code></pre>
<br/>
<br/><br/>
</div>
<dl class="details">
</dl>
</dd>
</div>
<h3 class="subsection-title">Methods</h3>
<dl>
<dt>
<h4 class="name" id="analyseImage"><span class="type-signature"></span>analyseImage<span class="signature">(frameWidth, frameHeight, p_imageData, faceData, options, results)</span><span class="type-signature"> &rarr; {<a href="global.html#VFAReturnCode">VFAReturnCode</a>}</span></h4>
</dt>
<dd>
<div class="description">
Performs face analysis on a given image.
<br/><br/>
This function is primarily intended for performing face analysis on a single image, or consecutive unrelated images.
As such, it outputs raw, unfiltered estimation data without smoothing or averaging.
<br/><br/>
<b>Note:</b> Prior to using this function, it is necessary to
process the facial image or video frame using <a href="VisageTracker.html">VisageTracker</a>
or <a href="VisageDetector.html">VisageDetector</a> and pass the frame and obtained data to this function.
This function estimates gender, age, and/or emotions for the last image processed by <a href="VisageTracker.html#track">VisageTracker.track()</a> or <a href="VisageDetector.html#detectFeatures">VisageDetector.detectFeatures()</a> function.
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>frameWidth</code></td>
<td class="type">
<span class="param-type">number</span>
</td>
<td class="description last">Width of the frame</td>
</tr>
<tr>
<td class="name"><code>frameHeight</code></td>
<td class="type">
<span class="param-type">number</span>
</td>
<td class="description last">Height of the frame</td>
</tr>
<tr>
<td class="name"><code>p_imageData</code></td>
<td class="type">
<span class="param-type">number</span>
</td>
<td class="description last">Pointer to image pixel data, size of the array must correspond to frameWidth and frameHeight.</td>
</tr>
<tr>
<td class="name"><code>faceData</code></td>
<td class="type">
<span class="param-type"><a href="FaceData.html">FaceData</a></span>
</td>
<td class="description last">FaceData object filled with tracking results from a previous call of the <a href="VisageTracker.html#track">VisageTracker.track()</a> or
<a href="VisageDetector.html#detectFeatures">VisageDetector.detectFeatures()</a> function.</td>
</tr>
<tr>
<td class="name"><code>options</code></td>
<td class="type">
<span class="param-type">number</span>
</td>
<td class="description last">Bitwise combination of <a href="global.html#VFAFlags">VFAFlags</a> which determines the analysis operations to be performed.</td>
</tr>
<tr>
<td class="name"><code>results</code></td>
<td class="type">
<span class="param-type"><a href="AnalysisData.html">AnalysisData</a></span>
</td>
<td class="description last">AnalysisData struct containing success flags for individual operations and their assorted results</td>
</tr>
</tbody>
</table>
<dl class="details">
</dl>
<h5>Returns:</h5>
<div class="param-desc">
Value indicating the status of the performed analysis.
</div>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type"><a href="global.html#VFAReturnCode">VFAReturnCode</a></span>
</dd>
</dl>
</dd>
<dt>
<h4 class="name" id="analyseStream"><span class="type-signature"></span>analyseStream<span class="signature">(frameWidth, frameHeight, p_imageData, faceData, options, results, faceIndex)</span><span class="type-signature"> &rarr; {<a href="global.html#VFAReturnCode">VFAReturnCode</a>}</span></h4>
</dt>
<dd>
<div class="description">
Performs face analysis on a given image stream (video).
<br/><br/>
This function is primarily intended for performing face analysis on a continuous stream of related frames, such as a video or camera feed.
Sampling face analysis data from multiple frames can increase estimation accuracy by averaging the result over multiple frames.
Internally, the suitability of frames chosen for analysis is continually evaluted based on head pose and overall tracking quality.
This guarantees that the analysis buffer is always working with the best available frames, ensuring highest possible estimation accuracy.
<br/><br/>
<b>Important note:</b><br>
If <i>options</i> parameter is changed between subsequent calls to analyseStream(),
the internal state will be reset and previously collected analysis data will be lost.
For optimal results <i>options</i> parameter should remain constant during single stream analysis session.
<br/><br/>
<b>Note:</b> Prior to using this function, it is necessary to process the facial image or video frame using
<a href="VisageTracker.html">VisageTracker</a> and pass the frame and obtained data to this function.
This function estimates gender, age, and/or emotions for the last image processed by <a href="VisageTracker.html#track">VisageTracker.track()</a>
function.
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>frameWidth</code></td>
<td class="type">
<span class="param-type">number</span>
</td>
<td class="description last">Width of the frame</td>
</tr>
<tr>
<td class="name"><code>frameHeight</code></td>
<td class="type">
<span class="param-type">number</span>
</td>
<td class="description last">Height of the frame</td>
</tr>
<tr>
<td class="name"><code>p_imageData</code></td>
<td class="type">
<span class="param-type">number</span>
</td>
<td class="description last">Pointer to image pixel data, size of the array must correspond to frameWidth and frameHeight.</td>
</tr>
<tr>
<td class="name"><code>faceData</code></td>
<td class="type">
<span class="param-type"><a href="FaceData.html">FaceData</a></span>
</td>
<td class="description last">FaceData object filled with tracking results from a previous call of the <a href="VisageTracker.html#track">VisageTracker.track()</a> function.</td>
</tr>
<tr>
<td class="name"><code>options</code></td>
<td class="type">
<span class="param-type">number</span>
</td>
<td class="description last">Bitwise combination of <a href="global.html#VFAFlags">VFAFlags</a> which determines the analysis operations to be performed.</td>
</tr>
<tr>
<td class="name"><code>results</code></td>
<td class="type">
<span class="param-type"><a href="AnalysisData.html">AnalysisData</a></span>
</td>
<td class="description last">AnalysisData struct containing success flags for individual operations and their assorted results</td>
</tr>
<tr>
<td class="name"><code>faceIndex</code></td>
<td class="type">
<span class="param-type">number</span>
</td>
<td class="description last">Index of the face for which analysis should be performed.</td>
</tr>
</tbody>
</table>
<dl class="details">
</dl>
<h5>Returns:</h5>
<div class="param-desc">
Value indicating the status of the performed analysis.
</div>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type"><a href="global.html#VFAReturnCode">VFAReturnCode</a></span>
</dd>
</dl>
</dd>
<dt>
<h4 class="name" id="resetStreamAnalysis"><span class="type-signature"></span>resetStreamAnalysis<span class="signature">(<span class="optional">faceIndex</span>)</span><span class="type-signature"></span></h4>
</dt>
<dd>
<div class="description">
Resets collected face analysis data.
Erases age, gender and emotion data collected up to this point.
If an index parameter is specified, only data for that specific face is erased.
If no parameter is specified, data for all faces is erased.
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Argument</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>faceIndex</code></td>
<td class="type">
<span class="param-type">number</span>
</td>
<td class="attributes">
&lt;optional><br>
</td>
<td class="description last">Index of the face for which analysis data should be reset</td>
</tr>
</tbody>
</table>
<dl class="details">
</dl>
</dd>
</dl>
</article>
</section>
</div>
<nav>
<h2><a href="index.html">Index</a></h2><h3>Modules</h3><ul><li><a href="module-VisageTrackerUnityPlugin.html">VisageTrackerUnityPlugin</a></li><li><a href="module-VisageAnalyserUnityPlugin.html">VisageAnalyserUnityPlugin</a></li></ul><h3>Classes</h3><ul><li><a href="FaceData.html">FaceData</a></li><li><a href="ScreenSpaceGazeData.html">ScreenSpaceGazeData</a></li><li><a href="VectorFloat.html">VectorFloat</a></li><li><a href="VectorShort.html">VectorShort</a></li><li><a href="VectorString.html">VectorString</a></li><li><a href="VisageFaceAnalyser.html">VisageFaceAnalyser</a></li><li><a href="AnalysisData.html">AnalysisData</a></li><li><a href="FeaturePoint.html">FeaturePoint</a></li><li><a href="FDP.html">FDP</a></li><li><a href="VisageDetector.html">VisageDetector</a></li><li><a href="FaceDataVector.html">FaceDataVector</a></li><li><a href="VSRectVector.html">VSRectVector</a></li><li><a href="VSRect.html">VSRect</a></li><li><a href="VisageGazeTracker.html">VisageGazeTracker</a></li><li><a href="VisageFaceRecognition.html">VisageFaceRecognition</a></li><li><a href="VisageTracker.html">VisageTracker</a></li><li><a href="VisageConfiguration.html">VisageConfiguration</a></li><li><a href="VisageLivenessBlink.html">VisageLivenessBlink</a></li><li><a href="VisageLivenessSmile.html">VisageLivenessSmile</a></li><li><a href="VisageLivenessBrowRaise.html">VisageLivenessBrowRaise</a></li><li><a href="VisageAR.html">VisageAR</a></li></ul><h3>Global</h3><ul><li><a href="global.html#FP_START_GROUP_INDEX">FP_START_GROUP_INDEX</a></li><li><a href="global.html#FP_END_GROUP_INDEX">FP_END_GROUP_INDEX</a></li><li><a href="global.html#FP_NUMBER_OF_GROUPS">FP_NUMBER_OF_GROUPS</a></li><li><a href="global.html#initializeLicenseManager">initializeLicenseManager</a></li><li><a href="global.html#VisageTrackerStatus">VisageTrackerStatus</a></li><li><a href="global.html#VisageTrackerImageFormat">VisageTrackerImageFormat</a></li><li><a href="global.html#VisageTrackerOrigin">VisageTrackerOrigin</a></li><li><a href="global.html#getSDKVersion">getSDKVersion</a></li></ul>
</nav>
<br clear="both">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.0</a> on Sat Jul 29 2023 01:38:28 GMT-0000 (GMT)
</footer>
<script> prettyPrint(); </script>
<script src="scripts/linenumber.js"> </script>
</body>
</html>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,753 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>JSDoc: Class: VisageLivenessBlink</title>
<script src="scripts/prettify/prettify.js"> </script>
<script src="scripts/prettify/lang-css.js"> </script>
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
<link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
</head>
<body>
<div id="main">
<h1 class="page-title">Class: VisageLivenessBlink</h1>
<section>
<header>
<h2>
VisageLivenessBlink
</h2>
</header>
<article>
<div class="container-overview">
<dt>
<h4 class="name" id="VisageLivenessBlink"><span class="type-signature"></span>new VisageLivenessBlink<span class="signature">()</span><span class="type-signature"></span></h4>
</dt>
<dd>
<div class="description">
VisageLivenessBlink is a class that detects whether the person on the live video stream has blinked.
<br/><br/>
In order for action to be detected accurately, it is required that the face is frontal for 30 frames before performing blink.
During blink verification, face data from latest 30 frames ("face data sequence"), i.e. last 30 calls of
<a href="VisageLivenessBlink.html#update">update()</a> is used to verify head stability
(<a href="VisageLivenessBlink.html#STATE_WAIT_FOR_STABLE">STATE_WAIT_FOR_STABLE</a>). Each time the action is reset, face data sequence will be cleared and
the action will need to go through initializing
state (<a href="VisageLivenessBlink.html#STATE_ACTION_INITIALIZING">STATE_ACTION_INITIALIZING</a>) to store initial face data sequence.
<br/><br/>
Action should be updated for each frame in order to update its internal state. The action can be in one of the following states
(states are sequentially verified in each call of <a href="VisageLivenessBlink.html#update">update()</a>):
<br/>
<ul>
<li><a href="VisageLivenessBlink.html#STATE_WAIT_FOR_FRONTAL">STATE_WAIT_FOR_FRONTAL</a> Face is not frontal. Action is reset.</li>
<li><a href="VisageLivenessBlink.html#STATE_ACTION_INITIALIZING">STATE_ACTION_INITIALIZING</a> Action is storing first set of face data sequence.
After each reset, action needs to reinitialize.</li>
<li><a href="VisageLivenessBlink.html#STATE_WAIT_FOR_STABLE">STATE_WAIT_FOR_STABLE</a> Head is not stable.
In order for action to be verified successfully, the user should keep his head still.</li>
<li><a href="VisageLivenessBlink.html#STATE_WAIT_FOR_ACTION">STATE_WAIT_FOR_ACTION</a> Data is processed in order to verify blink.</li>
<li><a href="VisageLivenessBlink.html#STATE_ACTION_VERIFIED">STATE_ACTION_VERIFIED</a> Action is verified.</li>
</ul>
<br/><br/>
</div>
<dl class="details">
</dl>
</dd>
</div>
<h3 class="subsection-title">Members</h3>
<dl>
<dt>
<h4 class="name" id="STATE_ACTION_VERIFIED"><span class="type-signature"></span>STATE_ACTION_VERIFIED<span class="type-signature"> :number</span></h4>
</dt>
<dd>
<div class="description">
Describes action's state where the action was performed and verified.
</div>
<h5>Type:</h5>
<ul>
<li>
<span class="param-type">number</span>
</li>
</ul>
<dl class="details">
<dt class="tag-default">Default Value:</dt>
<dd class="tag-default"><ul class="dummy"><li>0</li></ul></dd>
</dl>
</dd>
<dt>
<h4 class="name" id="STATE_WAIT_FOR_FRONTAL"><span class="type-signature"></span>STATE_WAIT_FOR_FRONTAL<span class="type-signature"> :number</span></h4>
</dt>
<dd>
<div class="description">
Describes action's state where face in the frame is not frontal (head rotations larger than 0.3 rad, ~17 degrees).
<br/><br/>
If this state is detected, the action will be reset.
</div>
<h5>Type:</h5>
<ul>
<li>
<span class="param-type">number</span>
</li>
</ul>
<dl class="details">
<dt class="tag-default">Default Value:</dt>
<dd class="tag-default"><ul class="dummy"><li>1</li></ul></dd>
</dl>
</dd>
<dt>
<h4 class="name" id="STATE_ACTION_INITIALIZING"><span class="type-signature"></span>STATE_ACTION_INITIALIZING<span class="type-signature"> :number</span></h4>
</dt>
<dd>
<div class="description">
Describes action's state while the action is initializing, i.e. storing initial face data sequence.
After each reset, action needs to reinitialize.
</div>
<h5>Type:</h5>
<ul>
<li>
<span class="param-type">number</span>
</li>
</ul>
<dl class="details">
<dt class="tag-default">Default Value:</dt>
<dd class="tag-default"><ul class="dummy"><li>2</li></ul></dd>
</dl>
</dd>
<dt>
<h4 class="name" id="STATE_WAIT_FOR_STABLE"><span class="type-signature"></span>STATE_WAIT_FOR_STABLE<span class="type-signature"> :number</span></h4>
</dt>
<dd>
<div class="description">
Describes action's state when user is not keeping his head still.
</div>
<h5>Type:</h5>
<ul>
<li>
<span class="param-type">number</span>
</li>
</ul>
<dl class="details">
<dt class="tag-default">Default Value:</dt>
<dd class="tag-default"><ul class="dummy"><li>3</li></ul></dd>
</dl>
</dd>
<dt>
<h4 class="name" id="STATE_WAIT_FOR_ACTION"><span class="type-signature"></span>STATE_WAIT_FOR_ACTION<span class="type-signature"> :number</span></h4>
</dt>
<dd>
<div class="description">
Describes action's state when blink is trying to be verified.
</div>
<h5>Type:</h5>
<ul>
<li>
<span class="param-type">number</span>
</li>
</ul>
<dl class="details">
<dt class="tag-default">Default Value:</dt>
<dd class="tag-default"><ul class="dummy"><li>4</li></ul></dd>
</dl>
</dd>
</dl>
<h3 class="subsection-title">Methods</h3>
<dl>
<dt>
<h4 class="name" id="update"><span class="type-signature"></span>update<span class="signature">(frameWidth, frameHeight, p_imageData, faceData)</span><span class="type-signature"> &rarr; {number}</span></h4>
</dt>
<dd>
<div class="description">
Method that should be called for each frame until the action is verified.
</br></br>
It should only be called when tracking status is TRACK_STAT_OK. Returns action's current state so appropriate message and/or image can be
displayed if user interaction is required (e.g. warning for user or instruction on how to perform blink).
<br/><br/>
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>frameWidth</code></td>
<td class="type">
<span class="param-type">number</span>
</td>
<td class="description last">Width of the frame</td>
</tr>
<tr>
<td class="name"><code>frameHeight</code></td>
<td class="type">
<span class="param-type">number</span>
</td>
<td class="description last">Height of the frame</td>
</tr>
<tr>
<td class="name"><code>p_imageData</code></td>
<td class="type">
<span class="param-type">number</span>
</td>
<td class="description last">Pointer to image pixel data, size of the array must correspond to frameWidth and frameHeight.</td>
</tr>
<tr>
<td class="name"><code>faceData</code></td>
<td class="type">
<span class="param-type"><a href="FaceData.html">FaceData</a></span>
</td>
<td class="description last"><a href="FaceData.html">FaceData</a> object filled with tracking results from a previous call of the <a href="VisageTracker.html#track">VisageTracker.track()</a>
or
<a href="VisageDetector.html#detectFeatures">VisageDetector.detectFeatures()</a> function.</td>
</tr>
</tbody>
</table>
<dl class="details">
</dl>
<h5>Returns:</h5>
<div class="param-desc">
state - action's current state.
<br/>
State can be one of the following:
<ul>
<li><a href="VisageLivenessBlink.html#STATE_WAIT_FOR_FRONTAL">STATE_WAIT_FOR_FRONTAL</a> , <a href="VisageLivenessBlink.html#STATE_ACTION_INITIALIZING">STATE_ACTION_INITIALIZING</a>, <a href="VisageLivenessBlink.html#STATE_WAIT_FOR_STABLE">STATE_WAIT_FOR_STABLE</a>, <a href="VisageLivenessBlink.html#STATE_WAIT_FOR_ACTION">STATE_WAIT_FOR_ACTION</a>, <a href="VisageLivenessBlink.html#STATE_ACTION_VERIFIED">STATE_ACTION_VERIFIED</a>. </li>
</ul>
or -1 if frame is not valid (frameWidth and frameHeight less than 1 or p_imageData is null).
</div>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type">number</span>
</dd>
</dl>
</dd>
<dt>
<h4 class="name" id="reset"><span class="type-signature"></span>reset<span class="signature">()</span><span class="type-signature"></span></h4>
</dt>
<dd>
<div class="description">
Resets action.
<br/><br/>
Clears face data sequence.
<br/><br/>
</div>
<dl class="details">
</dl>
</dd>
</dl>
</article>
</section>
</div>
<nav>
<h2><a href="index.html">Index</a></h2><h3>Modules</h3><ul><li><a href="module-VisageTrackerUnityPlugin.html">VisageTrackerUnityPlugin</a></li><li><a href="module-VisageAnalyserUnityPlugin.html">VisageAnalyserUnityPlugin</a></li></ul><h3>Classes</h3><ul><li><a href="FaceData.html">FaceData</a></li><li><a href="ScreenSpaceGazeData.html">ScreenSpaceGazeData</a></li><li><a href="VectorFloat.html">VectorFloat</a></li><li><a href="VectorShort.html">VectorShort</a></li><li><a href="VectorString.html">VectorString</a></li><li><a href="VisageFaceAnalyser.html">VisageFaceAnalyser</a></li><li><a href="AnalysisData.html">AnalysisData</a></li><li><a href="FeaturePoint.html">FeaturePoint</a></li><li><a href="FDP.html">FDP</a></li><li><a href="VisageDetector.html">VisageDetector</a></li><li><a href="FaceDataVector.html">FaceDataVector</a></li><li><a href="VSRectVector.html">VSRectVector</a></li><li><a href="VSRect.html">VSRect</a></li><li><a href="VisageGazeTracker.html">VisageGazeTracker</a></li><li><a href="VisageFaceRecognition.html">VisageFaceRecognition</a></li><li><a href="VisageTracker.html">VisageTracker</a></li><li><a href="VisageConfiguration.html">VisageConfiguration</a></li><li><a href="VisageLivenessBlink.html">VisageLivenessBlink</a></li><li><a href="VisageLivenessSmile.html">VisageLivenessSmile</a></li><li><a href="VisageLivenessBrowRaise.html">VisageLivenessBrowRaise</a></li><li><a href="VisageAR.html">VisageAR</a></li></ul><h3>Global</h3><ul><li><a href="global.html#FP_START_GROUP_INDEX">FP_START_GROUP_INDEX</a></li><li><a href="global.html#FP_END_GROUP_INDEX">FP_END_GROUP_INDEX</a></li><li><a href="global.html#FP_NUMBER_OF_GROUPS">FP_NUMBER_OF_GROUPS</a></li><li><a href="global.html#initializeLicenseManager">initializeLicenseManager</a></li><li><a href="global.html#VisageTrackerStatus">VisageTrackerStatus</a></li><li><a href="global.html#VisageTrackerImageFormat">VisageTrackerImageFormat</a></li><li><a href="global.html#VisageTrackerOrigin">VisageTrackerOrigin</a></li><li><a href="global.html#getSDKVersion">getSDKVersion</a></li></ul>
</nav>
<br clear="both">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.0</a> on Sat Jul 29 2023 01:38:30 GMT-0000 (GMT)
</footer>
<script> prettyPrint(); </script>
<script src="scripts/linenumber.js"> </script>
</body>
</html>

View File

@ -0,0 +1,757 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>JSDoc: Class: VisageLivenessBrowRaise</title>
<script src="scripts/prettify/prettify.js"> </script>
<script src="scripts/prettify/lang-css.js"> </script>
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
<link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
</head>
<body>
<div id="main">
<h1 class="page-title">Class: VisageLivenessBrowRaise</h1>
<section>
<header>
<h2>
VisageLivenessBrowRaise
</h2>
</header>
<article>
<div class="container-overview">
<dt>
<h4 class="name" id="VisageLivenessBrowRaise"><span class="type-signature"></span>new VisageLivenessBrowRaise<span class="signature">()</span><span class="type-signature"></span></h4>
</dt>
<dd>
<div class="description">
VisageLivenessBrowRaise is a class that detects whether the person on the live video stream has raised his/hers eyebrows.
<br/><br/>
In order for action to be detected accurately, it is required that the face is frontal and facial expression is neutral for 30 frames before
performing eyebrows raise.
During eyebrows raise verification, face data from latest 30 frames ("face data sequence"), i.e. last 30 calls of
<a href="VisageLivenessBrowRaise.html#update">update()</a> is used to verify head
stability (<a href="VisageLivenessBrowRaise.html#STATE_WAIT_FOR_STABLE">STATE_WAIT_FOR_STABLE</a>). Each time the action is reset,
face data sequence will be cleared and the action will need to go through
initializing state (<a href="VisageLivenessBrowRaise.html#STATE_ACTION_INITIALIZING">STATE_ACTION_INITIALIZING</a>) to store initial face data sequence.
Additionally, face data sequence is used as a baseline for
neutral facial expression when detecting if eyebrows raise was performed. Algorithm presumes that the face will be neutral before performing
eyebrows raise.
<br/><br/>
Action should be updated for each frame in order to update its internal state. The action can be in one of the following states
(states are sequentially verified in each call of <a href="VisageLivenessBrowRaise.html#update">update()</a>):
<br/>
<ul>
<li><a href="VisageLivenessBrowRaise.html#STATE_WAIT_FOR_FRONTAL">STATE_WAIT_FOR_FRONTAL</a> Face is not frontal. Action is reset.</li>
<li><a href="VisageLivenessBrowRaise.html#STATE_ACTION_INITIALIZING">STATE_ACTION_INITIALIZING</a> Action is storing first set of face data sequence.
After each reset, action needs to reinitialize.</li>
<li><a href="VisageLivenessBrowRaise.html#STATE_WAIT_FOR_STABLE">STATE_WAIT_FOR_STABLE</a> Head is not stable.
In order for action to be verified successfully, the user should keep his head still.</li>
<li><a href="VisageLivenessBrowRaise.html#STATE_WAIT_FOR_ACTION">STATE_WAIT_FOR_ACTION</a> Data is processed in order to verify blink.</li>
<li><a href="VisageLivenessBrowRaise.html#STATE_ACTION_VERIFIED">STATE_ACTION_VERIFIED</a> Action is verified.</li>
</ul>
<br/><br/>
</div>
<dl class="details">
</dl>
</dd>
</div>
<h3 class="subsection-title">Members</h3>
<dl>
<dt>
<h4 class="name" id="STATE_ACTION_VERIFIED"><span class="type-signature"></span>STATE_ACTION_VERIFIED<span class="type-signature"> :number</span></h4>
</dt>
<dd>
<div class="description">
Describes action's state where the action was performed and verified.
</div>
<h5>Type:</h5>
<ul>
<li>
<span class="param-type">number</span>
</li>
</ul>
<dl class="details">
<dt class="tag-default">Default Value:</dt>
<dd class="tag-default"><ul class="dummy"><li>0</li></ul></dd>
</dl>
</dd>
<dt>
<h4 class="name" id="STATE_WAIT_FOR_FRONTAL"><span class="type-signature"></span>STATE_WAIT_FOR_FRONTAL<span class="type-signature"> :number</span></h4>
</dt>
<dd>
<div class="description">
Describes action's state where face in the frame is not frontal (head rotations larger than 0.3 rad, ~17 degrees).
<br/><br/>
If this state is detected, the action will be reset.
</div>
<h5>Type:</h5>
<ul>
<li>
<span class="param-type">number</span>
</li>
</ul>
<dl class="details">
<dt class="tag-default">Default Value:</dt>
<dd class="tag-default"><ul class="dummy"><li>1</li></ul></dd>
</dl>
</dd>
<dt>
<h4 class="name" id="STATE_ACTION_INITIALIZING"><span class="type-signature"></span>STATE_ACTION_INITIALIZING<span class="type-signature"> :number</span></h4>
</dt>
<dd>
<div class="description">
Describes action's state while the action is initializing, i.e. storing initial face data sequence.
After each reset, action needs to reinitialize.
</div>
<h5>Type:</h5>
<ul>
<li>
<span class="param-type">number</span>
</li>
</ul>
<dl class="details">
<dt class="tag-default">Default Value:</dt>
<dd class="tag-default"><ul class="dummy"><li>2</li></ul></dd>
</dl>
</dd>
<dt>
<h4 class="name" id="STATE_WAIT_FOR_STABLE"><span class="type-signature"></span>STATE_WAIT_FOR_STABLE<span class="type-signature"> :number</span></h4>
</dt>
<dd>
<div class="description">
Describes action's state when user is not keeping his head still.
</div>
<h5>Type:</h5>
<ul>
<li>
<span class="param-type">number</span>
</li>
</ul>
<dl class="details">
<dt class="tag-default">Default Value:</dt>
<dd class="tag-default"><ul class="dummy"><li>3</li></ul></dd>
</dl>
</dd>
<dt>
<h4 class="name" id="STATE_WAIT_FOR_ACTION"><span class="type-signature"></span>STATE_WAIT_FOR_ACTION<span class="type-signature"> :number</span></h4>
</dt>
<dd>
<div class="description">
Describes action's state when blink is trying to be verified.
</div>
<h5>Type:</h5>
<ul>
<li>
<span class="param-type">number</span>
</li>
</ul>
<dl class="details">
<dt class="tag-default">Default Value:</dt>
<dd class="tag-default"><ul class="dummy"><li>4</li></ul></dd>
</dl>
</dd>
</dl>
<h3 class="subsection-title">Methods</h3>
<dl>
<dt>
<h4 class="name" id="update"><span class="type-signature"></span>update<span class="signature">(frameWidth, frameHeight, p_imageData, faceData)</span><span class="type-signature"> &rarr; {number}</span></h4>
</dt>
<dd>
<div class="description">
Method that should be called for each frame until the action is verified.
</br></br>
It should only be called when tracking status is TRACK_STAT_OK. Returns action's current state so appropriate message and/or image can be
displayed if user interaction is required (e.g. warning for user or instruction on how to perform blink).
<br/><br/>
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>frameWidth</code></td>
<td class="type">
<span class="param-type">number</span>
</td>
<td class="description last">Width of the frame</td>
</tr>
<tr>
<td class="name"><code>frameHeight</code></td>
<td class="type">
<span class="param-type">number</span>
</td>
<td class="description last">Height of the frame</td>
</tr>
<tr>
<td class="name"><code>p_imageData</code></td>
<td class="type">
<span class="param-type">number</span>
</td>
<td class="description last">Pointer to image pixel data, size of the array must correspond to frameWidth and frameHeight.</td>
</tr>
<tr>
<td class="name"><code>faceData</code></td>
<td class="type">
<span class="param-type"><a href="FaceData.html">FaceData</a></span>
</td>
<td class="description last"><a href="FaceData.html">FaceData</a> object filled with tracking results from a previous call of the <a href="VisageTracker.html#track">VisageTracker.track()</a>
or
<a href="VisageDetector.html#detectFeatures">VisageDetector.detectFeatures()</a> function.</td>
</tr>
</tbody>
</table>
<dl class="details">
</dl>
<h5>Returns:</h5>
<div class="param-desc">
state - action's current state.
<br/>
State can be one of the following:
<ul>
<li><a href="VisageLivenessBrowRaise.html#STATE_WAIT_FOR_FRONTAL">STATE_WAIT_FOR_FRONTAL</a> , <a href="VisageLivenessBrowRaise.html#STATE_ACTION_INITIALIZING">STATE_ACTION_INITIALIZING</a>, <a href="VisageLivenessBrowRaise.html#STATE_WAIT_FOR_STABLE">STATE_WAIT_FOR_STABLE</a>, <a href="VisageLivenessBrowRaise.html#STATE_WAIT_FOR_ACTION">STATE_WAIT_FOR_ACTION</a>, <a href="VisageLivenessBrowRaise.html#STATE_ACTION_VERIFIED">STATE_ACTION_VERIFIED</a>. </li>
</ul>
or -1 if frame is not valid (frameWidth and frameHeight less than 1 or p_imageData is null).
</div>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type">number</span>
</dd>
</dl>
</dd>
<dt>
<h4 class="name" id="reset"><span class="type-signature"></span>reset<span class="signature">()</span><span class="type-signature"></span></h4>
</dt>
<dd>
<div class="description">
Resets action.
<br/><br/>
Clears face data sequence.
<br/><br/>
</div>
<dl class="details">
</dl>
</dd>
</dl>
</article>
</section>
</div>
<nav>
<h2><a href="index.html">Index</a></h2><h3>Modules</h3><ul><li><a href="module-VisageTrackerUnityPlugin.html">VisageTrackerUnityPlugin</a></li><li><a href="module-VisageAnalyserUnityPlugin.html">VisageAnalyserUnityPlugin</a></li></ul><h3>Classes</h3><ul><li><a href="FaceData.html">FaceData</a></li><li><a href="ScreenSpaceGazeData.html">ScreenSpaceGazeData</a></li><li><a href="VectorFloat.html">VectorFloat</a></li><li><a href="VectorShort.html">VectorShort</a></li><li><a href="VectorString.html">VectorString</a></li><li><a href="VisageFaceAnalyser.html">VisageFaceAnalyser</a></li><li><a href="AnalysisData.html">AnalysisData</a></li><li><a href="FeaturePoint.html">FeaturePoint</a></li><li><a href="FDP.html">FDP</a></li><li><a href="VisageDetector.html">VisageDetector</a></li><li><a href="FaceDataVector.html">FaceDataVector</a></li><li><a href="VSRectVector.html">VSRectVector</a></li><li><a href="VSRect.html">VSRect</a></li><li><a href="VisageGazeTracker.html">VisageGazeTracker</a></li><li><a href="VisageFaceRecognition.html">VisageFaceRecognition</a></li><li><a href="VisageTracker.html">VisageTracker</a></li><li><a href="VisageConfiguration.html">VisageConfiguration</a></li><li><a href="VisageLivenessBlink.html">VisageLivenessBlink</a></li><li><a href="VisageLivenessSmile.html">VisageLivenessSmile</a></li><li><a href="VisageLivenessBrowRaise.html">VisageLivenessBrowRaise</a></li><li><a href="VisageAR.html">VisageAR</a></li></ul><h3>Global</h3><ul><li><a href="global.html#FP_START_GROUP_INDEX">FP_START_GROUP_INDEX</a></li><li><a href="global.html#FP_END_GROUP_INDEX">FP_END_GROUP_INDEX</a></li><li><a href="global.html#FP_NUMBER_OF_GROUPS">FP_NUMBER_OF_GROUPS</a></li><li><a href="global.html#initializeLicenseManager">initializeLicenseManager</a></li><li><a href="global.html#VisageTrackerStatus">VisageTrackerStatus</a></li><li><a href="global.html#VisageTrackerImageFormat">VisageTrackerImageFormat</a></li><li><a href="global.html#VisageTrackerOrigin">VisageTrackerOrigin</a></li><li><a href="global.html#getSDKVersion">getSDKVersion</a></li></ul>
</nav>
<br clear="both">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.0</a> on Sat Jul 29 2023 01:38:30 GMT-0000 (GMT)
</footer>
<script> prettyPrint(); </script>
<script src="scripts/linenumber.js"> </script>
</body>
</html>

View File

@ -0,0 +1,757 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>JSDoc: Class: VisageLivenessSmile</title>
<script src="scripts/prettify/prettify.js"> </script>
<script src="scripts/prettify/lang-css.js"> </script>
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
<link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
</head>
<body>
<div id="main">
<h1 class="page-title">Class: VisageLivenessSmile</h1>
<section>
<header>
<h2>
VisageLivenessSmile
</h2>
</header>
<article>
<div class="container-overview">
<dt>
<h4 class="name" id="VisageLivenessSmile"><span class="type-signature"></span>new VisageLivenessSmile<span class="signature">()</span><span class="type-signature"></span></h4>
</dt>
<dd>
<div class="description">
VisageLivenessSmile is a class that detects whether the person on the live video stream has smiled.
<br/><br/>
In order for action to be detected accurately, it is required that the face is frontal and facial expression is neutral for 30 frames before
performing smile.
During smile verification, face data from latest 30 frames ("face data sequence"), i.e. last 30 calls of
<a href="VisageLivenessSmile.html#update">update()</a> is used to verify head stability
(<a href="VisageLivenessSmile.html#STATE_WAIT_FOR_STABLE">STATE_WAIT_FOR_STABLE</a>). Each time the action is reset,
face data sequence will be cleared and the action will need to go through initializing
state (<a href="VisageLivenessSmile.html#STATE_ACTION_INITIALIZING">STATE_ACTION_INITIALIZING</a>) to store initial face data sequence.
Additionally, face data sequence is used as a baseline for neutral facial
Additionally, face data sequence is used as a baseline for neutral facial
expression when detecting if smile was performed. Algorithm presumes that the face will be neutral before performing smile.
<br/><br/>
Action should be updated for each frame in order to update its internal state. The action can be in one of the following states
(states are sequentially verified in each call of <a href="VisageLivenessSmile.html#update">update()</a> ):
<br/>
<ul>
<li><a href="VisageLivenessSmile.html#STATE_WAIT_FOR_FRONTAL">STATE_WAIT_FOR_FRONTAL</a> Face is not frontal. Action is reset.</li>
<li><a href="VisageLivenessSmile.html#STATE_ACTION_INITIALIZING">STATE_ACTION_INITIALIZING</a> Action is storing first set of face data sequence.
After each reset, action needs to reinitialize.</li>
<li><a href="VisageLivenessSmile.html#STATE_WAIT_FOR_STABLE">STATE_WAIT_FOR_STABLE</a> Head is not stable.
In order for action to be verified successfully, the user should keep his head still.</li>
<li><a href="VisageLivenessSmile.html#STATE_WAIT_FOR_ACTION">STATE_WAIT_FOR_ACTION</a> Data is processed in order to verify blink.</li>
<li><a href="VisageLivenessSmile.html#STATE_ACTION_VERIFIED">STATE_ACTION_VERIFIED</a> Action is verified.</li>
</ul>
<br/><br/>
</div>
<dl class="details">
</dl>
</dd>
</div>
<h3 class="subsection-title">Members</h3>
<dl>
<dt>
<h4 class="name" id="STATE_ACTION_VERIFIED"><span class="type-signature"></span>STATE_ACTION_VERIFIED<span class="type-signature"> :number</span></h4>
</dt>
<dd>
<div class="description">
Describes action's state where the action was performed and verified.
</div>
<h5>Type:</h5>
<ul>
<li>
<span class="param-type">number</span>
</li>
</ul>
<dl class="details">
<dt class="tag-default">Default Value:</dt>
<dd class="tag-default"><ul class="dummy"><li>0</li></ul></dd>
</dl>
</dd>
<dt>
<h4 class="name" id="STATE_WAIT_FOR_FRONTAL"><span class="type-signature"></span>STATE_WAIT_FOR_FRONTAL<span class="type-signature"> :number</span></h4>
</dt>
<dd>
<div class="description">
Describes action's state where face in the frame is not frontal (head rotations larger than 0.3 rad, ~17 degrees).
<br/><br/>
If this state is detected, the action will be reset.
</div>
<h5>Type:</h5>
<ul>
<li>
<span class="param-type">number</span>
</li>
</ul>
<dl class="details">
<dt class="tag-default">Default Value:</dt>
<dd class="tag-default"><ul class="dummy"><li>1</li></ul></dd>
</dl>
</dd>
<dt>
<h4 class="name" id="STATE_ACTION_INITIALIZING"><span class="type-signature"></span>STATE_ACTION_INITIALIZING<span class="type-signature"> :number</span></h4>
</dt>
<dd>
<div class="description">
Describes action's state while the action is initializing, i.e. storing initial face data sequence.
After each reset, action needs to reinitialize.
</div>
<h5>Type:</h5>
<ul>
<li>
<span class="param-type">number</span>
</li>
</ul>
<dl class="details">
<dt class="tag-default">Default Value:</dt>
<dd class="tag-default"><ul class="dummy"><li>2</li></ul></dd>
</dl>
</dd>
<dt>
<h4 class="name" id="STATE_WAIT_FOR_STABLE"><span class="type-signature"></span>STATE_WAIT_FOR_STABLE<span class="type-signature"> :number</span></h4>
</dt>
<dd>
<div class="description">
Describes action's state when user is not keeping his head still.
</div>
<h5>Type:</h5>
<ul>
<li>
<span class="param-type">number</span>
</li>
</ul>
<dl class="details">
<dt class="tag-default">Default Value:</dt>
<dd class="tag-default"><ul class="dummy"><li>3</li></ul></dd>
</dl>
</dd>
<dt>
<h4 class="name" id="STATE_WAIT_FOR_ACTION"><span class="type-signature"></span>STATE_WAIT_FOR_ACTION<span class="type-signature"> :number</span></h4>
</dt>
<dd>
<div class="description">
Describes action's state when blink is trying to be verified.
</div>
<h5>Type:</h5>
<ul>
<li>
<span class="param-type">number</span>
</li>
</ul>
<dl class="details">
<dt class="tag-default">Default Value:</dt>
<dd class="tag-default"><ul class="dummy"><li>4</li></ul></dd>
</dl>
</dd>
</dl>
<h3 class="subsection-title">Methods</h3>
<dl>
<dt>
<h4 class="name" id="update"><span class="type-signature"></span>update<span class="signature">(frameWidth, frameHeight, p_imageData, faceData)</span><span class="type-signature"> &rarr; {number}</span></h4>
</dt>
<dd>
<div class="description">
Method that should be called for each frame until the action is verified.
</br></br>
It should only be called when tracking status is TRACK_STAT_OK. Returns action's current state so appropriate message and/or image can be
displayed if user interaction is required (e.g. warning for user or instruction on how to perform smile).
<br/><br/>
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>frameWidth</code></td>
<td class="type">
<span class="param-type">number</span>
</td>
<td class="description last">Width of the frame</td>
</tr>
<tr>
<td class="name"><code>frameHeight</code></td>
<td class="type">
<span class="param-type">number</span>
</td>
<td class="description last">Height of the frame</td>
</tr>
<tr>
<td class="name"><code>p_imageData</code></td>
<td class="type">
<span class="param-type">number</span>
</td>
<td class="description last">Pointer to image pixel data, size of the array must correspond to frameWidth and frameHeight.</td>
</tr>
<tr>
<td class="name"><code>faceData</code></td>
<td class="type">
<span class="param-type"><a href="FaceData.html">FaceData</a></span>
</td>
<td class="description last"><a href="FaceData.html">FaceData</a> object filled with tracking results from a previous call of the <a href="VisageTracker.html#track">VisageTracker.track()</a>
or
<a href="VisageDetector.html#detectFeatures">VisageDetector.detectFeatures()</a> function.</td>
</tr>
</tbody>
</table>
<dl class="details">
</dl>
<h5>Returns:</h5>
<div class="param-desc">
state - action's current state.
<br/>
State can be one of the following:
<ul>
<li><a href="VisageLivenessSmile.html#STATE_WAIT_FOR_FRONTAL">STATE_WAIT_FOR_FRONTAL</a> , <a href="VisageLivenessSmile.html#STATE_ACTION_INITIALIZING">STATE_ACTION_INITIALIZING</a>, <a href="VisageLivenessSmile.html#STATE_WAIT_FOR_STABLE">STATE_WAIT_FOR_STABLE</a>, <a href="VisageLivenessSmile.html#STATE_WAIT_FOR_ACTION">STATE_WAIT_FOR_ACTION</a>, <a href="VisageLivenessSmile.html#STATE_ACTION_VERIFIED">STATE_ACTION_VERIFIED</a>. </li>
</ul>
or -1 if frame is not valid (frameWidth and frameHeight less than 1 or p_imageData is null).
</div>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type">number</span>
</dd>
</dl>
</dd>
<dt>
<h4 class="name" id="reset"><span class="type-signature"></span>reset<span class="signature">()</span><span class="type-signature"></span></h4>
</dt>
<dd>
<div class="description">
Resets action.
<br/><br/>
Clears face data sequence.
<br/><br/>
</div>
<dl class="details">
</dl>
</dd>
</dl>
</article>
</section>
</div>
<nav>
<h2><a href="index.html">Index</a></h2><h3>Modules</h3><ul><li><a href="module-VisageTrackerUnityPlugin.html">VisageTrackerUnityPlugin</a></li><li><a href="module-VisageAnalyserUnityPlugin.html">VisageAnalyserUnityPlugin</a></li></ul><h3>Classes</h3><ul><li><a href="FaceData.html">FaceData</a></li><li><a href="ScreenSpaceGazeData.html">ScreenSpaceGazeData</a></li><li><a href="VectorFloat.html">VectorFloat</a></li><li><a href="VectorShort.html">VectorShort</a></li><li><a href="VectorString.html">VectorString</a></li><li><a href="VisageFaceAnalyser.html">VisageFaceAnalyser</a></li><li><a href="AnalysisData.html">AnalysisData</a></li><li><a href="FeaturePoint.html">FeaturePoint</a></li><li><a href="FDP.html">FDP</a></li><li><a href="VisageDetector.html">VisageDetector</a></li><li><a href="FaceDataVector.html">FaceDataVector</a></li><li><a href="VSRectVector.html">VSRectVector</a></li><li><a href="VSRect.html">VSRect</a></li><li><a href="VisageGazeTracker.html">VisageGazeTracker</a></li><li><a href="VisageFaceRecognition.html">VisageFaceRecognition</a></li><li><a href="VisageTracker.html">VisageTracker</a></li><li><a href="VisageConfiguration.html">VisageConfiguration</a></li><li><a href="VisageLivenessBlink.html">VisageLivenessBlink</a></li><li><a href="VisageLivenessSmile.html">VisageLivenessSmile</a></li><li><a href="VisageLivenessBrowRaise.html">VisageLivenessBrowRaise</a></li><li><a href="VisageAR.html">VisageAR</a></li></ul><h3>Global</h3><ul><li><a href="global.html#FP_START_GROUP_INDEX">FP_START_GROUP_INDEX</a></li><li><a href="global.html#FP_END_GROUP_INDEX">FP_END_GROUP_INDEX</a></li><li><a href="global.html#FP_NUMBER_OF_GROUPS">FP_NUMBER_OF_GROUPS</a></li><li><a href="global.html#initializeLicenseManager">initializeLicenseManager</a></li><li><a href="global.html#VisageTrackerStatus">VisageTrackerStatus</a></li><li><a href="global.html#VisageTrackerImageFormat">VisageTrackerImageFormat</a></li><li><a href="global.html#VisageTrackerOrigin">VisageTrackerOrigin</a></li><li><a href="global.html#getSDKVersion">getSDKVersion</a></li></ul>
</nav>
<br clear="both">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.0</a> on Sat Jul 29 2023 01:38:30 GMT-0000 (GMT)
</footer>
<script> prettyPrint(); </script>
<script src="scripts/linenumber.js"> </script>
</body>
</html>

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,78 @@
table.browserref
{
border-collapse:collapse;width:100%;
}
table.browserref tr:nth-child(even) {background-color:#ffffff;}
table.browserref tr:nth-child(odd) {background-color:#ffffff;}
table.browserref tr.fixzebra {background-color:#ffffff;}
table.browserref th{
height:32px;background-repeat:no-repeat;background-position:center center;border:2px solid #666666;background-color:#ffffff;font-weight:normal;color:#555555;padding:5px 5px 5px 5px;vertical-align:middle;
}
table.browserref td{
border:2px solid #666666;text-align:center;padding:5px;vertical-align:top;
}
table.browserref th:first-child,table.browserref td:first-child{padding-left:16px}
table.browserref .bsIE {background-image:url('../images/compatible_ie.gif');}
table.browserref .bsEdge {background-image:url('../images/compatible_edge.gif');}
table.browserref .bsFirefox {background-image:url('../images/compatible_firefox.gif')}
table.browserref .bsChrome {background-image:url('../images/compatible_chrome.gif');}
table.browserref .bsSafari {background-image:url('../images/compatible_safari.gif');}
table.browserref .bsOpera {background-image:url('../images/compatible_opera.gif')}
table.browserref .bsDesktop {background-image:url('../images/compatible_pc.gif'); }
table.browserref .bsAndroid {background-image:url('../images/compatible_android.gif');}
table.browserref .bsIphone {background-image:url('../images/compatible_iphone.gif'); }
/* Style the tab */
.tab {
overflow: hidden;
border: 2px solid #ccc;
background-color: #ffffff;
}
/* Style the buttons inside the tab */
.tab button {
background-color: inherit;
float: left;
border: 2px solid #ccc;
outline: none;
cursor: pointer;
padding: 14px 16px;
transition: 0.3s;
font-size: 17px;
}
/* Change background color of buttons on hover */
.tab button:hover {
background-color: #0071bc;
}
/* Create an active/current tablink class */
.tab button.active {
background-color: #ccc;
}
/* Style the tab content */
.tabcontent {
display: none;
padding: 6px 12px;
border: 1px solid #ccc;
border-top: none;
}
table {
font-family: arial, sans-serif;
border-collapse: collapse;
width: 100%;
}
td, th {
border: 1px solid #dddddd;
text-align: left;
padding: 5px;
}

100
v_dl/sdk/doc/css/main.css Normal file
View File

@ -0,0 +1,100 @@
@charset "utf-8";
/* CSS Document */
body
{
max-width:720px;
margin-top:5px;
margin-right:5px;
margin-bottom:5px;
margin-bottom:5px;
background-color:#FFF;
color:#336;
font-family:Arial, Helvetica, sans-serif;
font-size:12px;
font-style:normal
}
#navigation4 {
position: absolute;
margin: 0 10em;
left: 17px;
top: -2px;
width: 5px;
height: 5px;
}
#navigation5 {
position: absolute;
margin: 0 10em;
left: -125px;
top: 500px;
width: 5px;
height: 5px;
}
.ultitle
{
width:160px;
height:26px;
font-weight:bold;
font-size:20px;
color:#666
}
.ultitle a, .ultitle a:link, .ultitle a:visited, .ultitle a:active
{
text-decoration:none;
color:#666;
}
.ultitle a:hover
{
text-decoration:underline;
}
.ulsubtitle
{
width:160px;
height:30px;
font-size:10px;
color:#777
}
.vmenu
{
width:220px;
height:400px;
font-weight:bold
}
a.vmenu:link{ color:#336; text-decoration:none }
a.vmenu:visited{ color:#336; text-decoration:none }
a.vmenu:hover{ color:#C9F; text-decoration:none }
a.vmenu:active{ color:#639; text-decoration:none }
.figure
{
text-align:center;
margin-top:0px;
margin-bottom:0px;
padding:0px;
font-weight:bold;
}
.code
{
width:680px;
margin-left:10px;
margin-top:10px;
margin-bottom:10px;
padding-left:10px;
padding-bottom:10px;
color:#000;
border-style:solid;
border-width:thin;
border-color:#000;
font-family:"Courier New", Courier, monospace;
font-size:11px
}
h2.red
{
color:#FF0000;
}

16
v_dl/sdk/doc/doc.html Normal file
View File

@ -0,0 +1,16 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>visage|SDK documentation</title>
</head>
<frameset cols="250,*">
<frame src="navi.html" name="leftFrame" scrolling="yes" id="leftFrame" title="leftFrame" />
<frame src="usingsdk.html" name="mainFrame" scrolling="yes" id="mainFrame" title="Introduction" />
</frameset>
<noframes>
<body>
Frames are disabled in your browser and the documentation will not show correctly.
</body>
</noframes>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 138 KiB

Binary file not shown.

Binary file not shown.

120
v_dl/sdk/doc/eyewear.html Normal file
View File

@ -0,0 +1,120 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Introduction</title>
<link href="css/main.css" rel="stylesheet" type="text/css" />
<link href="css/browserref.css" rel="stylesheet" type="text/css" />
</head>
<body>
<h1>Virtual Eyewear Try-on sample project</h1>
<p>
Virtual Eyewear Try-on sample uses the <a href="visar_api.html"><em>VisageAR</em></a> API to implement a simple augmented reality application for virtual try-on of eyeglasses.
</p>
<h2>Installing and running the project</h2>
<p>
The project must be installed on a web server in order to run (it can not run from a local disk). For a quick trial from Visage Technologies web server, click
<a href="https://visagetechnologies.com/demo/" target="_blank">here</a> and choose <b>Virtual Eyewear Try-on</b>.
</p>
<p>
To install the application on your own web server, upload folders lib and Samples to your web server. To run the application access the Samples/VirtualEyewearTryOn/eyewear.html page via a web browser.
</p>
<p>
The application must be licensed in order to function. Licensing is based on License Key Files. To obtain the License Key File:
<ol>
<li>Contact your Visage Technologies contact person in order to obtain a license key.</li>
<li>Copy the obtained license key file into your application folder (e.g. samples/VirtualEyewearTryOn).</li>
<li>Edit VirtualEyewearTryOn/eyewear.html. Replace the "dev_html5.vlc" in variables <i>licenseName</i> and <i>licenseURL</i> at the bottom of the file with the name of your license key file.
<li>NOTE: License Key File must be preloaded before registration calling VisageModule.FS_createPreloadedFile() function.
An example of how this is done in the sample:
<pre class="prettyprint source"><code>
VisageModule.FS_createPreloadedFile('/', licenseName, licenseURL, true, false, function(){ }, function(){ alert("Loading License Failed!") });
</code> </li>
</ol>
</p>
<p>
For further information please read <a href="licensing.html" target="_blank">licensing</a> section of the documentation.
</p>
<h2>Using the sample application</h2>
<ul>
<li>Running the sample requires a recent browser.</li>
<li>The SDK needs to download its data files before using the application.</li>
<li>Allow the site to access your camera by choosing "Allow" in the browser's pop-up bar.</li>
<li>Look straight at the camera and glasses will appear.</li>
<li>Other glasses models are chosen using the choice bar.</li>
<li>Adjust the inter-pupillary distance by changing IPD value in the upper right corner to influence the tracker z-axis translation and
calibrate the size of the glasses, so they appear in real-life size with respect
to your face.</li>
</ul>
<h2>Implementation overview</h2>
<p>
Virtual Eyewear Try-on is implemented in HTML and JavaScript using the
<a class="el" href="VisageAR.html" title="VisageAR...">VisageAR API</a> for rendering and face tracking, <a href="https://threejs.org/">three.js</a> library
and <a href="https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia" target="_PARENT">MediaDevices.getUserMedia()</a> API to access camera.
</br>
For information on preparing models for use with VisageAR see the <a href="doc/modeling_guide.pdf">AR modelling guide</a>.
</p>
<h2>Browser compatibility</h2>
<p>
Virtual Eyewear Try-on sample is tested on the recent browsers on Windows, Mac, Android and iPhone platforms.
Results are represented in the following table (<b>NOTE: Application is not adapted to mobile devices.</b>).
</p>
<script>
function platform(platformName) {
var i;
var x = document.getElementsByClassName("browser");
for (i = 0; i < x.length; i++) {
x[i].style.display = "none";
}
document.getElementById(platformName).style.display = "block";
}
</script>
<div id="Desktop" class="browser">
<table class="browserref notranslate">
<tr>
<th ></th>
<th style="width:15%;" class="bsChrome" title="Chrome"></th>
<th style="width:15%;" class="bsFirefox" title="FireFox"></th>
<th style="width:15%;" class="bsOpera" title="Opera"></th>
<th style="width:15%;" class="bsEdge" title="Edge"></th></th>
<th style="width:15%;" class="bsSafari" title="Safari"></th></th>
</tr>
<tr>
<th style="width:10%;" class="bsDesktop" title="Desktop"></th>
<td style="background-color:#99cc99">96</td>
<td style="background-color:#99cc99">91</td>
<td style="background-color:#99cc99">81</td>
<td style="background-color:#99cc99">88</td>
<td style="background-color:#99cc99">14</td>
</tr>
<tr>
<th style="width:10%;" class="bsAndroid" title="Android"></th>
<td style="background-color:#99cc99">95</td>
<td style="background-color:#99cc99">93</td>
<td style="background-color:#99cc99">64</td>
<td style="background-color:#D3D3D3">--</td>
<td style="background-color:#D3D3D3">--</td>
</tr>
<tr>
<th style="width:10%;" class="bsIphone" title="Iphone"></th>
<td style="background-color:#D3D3D3">--</td>
<td style="background-color:#D3D3D3">--</td>
<td style="background-color:#D3D3D3">--</td>
<td style="background-color:#D3D3D3">--</td>
<td style="background-color:#99cc99">14</td>
</tr>
</table>
</div>
</body>
</html>

View File

@ -0,0 +1,153 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Introduction</title>
<link href="css/main.css" rel="stylesheet" type="text/css" />
</head>
<body>
<h1>Model preparation guide</h1>
<p>
This guide explains how to prepare 3D models to be used in augmented reality (AR) applications based on visage|SDK head tracking. As an example, the guide shows how to prepare
eyeglasses for Virtual Try-on application. The same principles may be applied to other objects to be used in AR applications.
</p>
<h2>Size and positioning</h2>
<p>
Real-life size, in meter units.<br/>
X positioning: centre of glasses at X=0<br/>
Y positioning: visual axes at Y = 0<br/>
Z positioning: eyeball front edge at Z = 0 (therefore lenses at approx Z = 0.02 - 0.025 m depending on glasses model)<br/>
</p>
<p>
<div style="margin: 0 auto; text-align: center; overflow: hidden;">
<div style="float: left;">
<img src="images/vet-geometry.jpg" width="640" height="480" /></br>
Fig1. - Size and positioning of the glasses in 3D authoring tool.
</div>
</div>
</p>
<h2>Occlusion</h2>
<p>If occlusions are not handled, glasses would always appear on top of the face like this:</p>
<p>
<div style="margin: 0 auto; text-align: center; overflow: hidden;">
<div style="float: left;">
<img src="images/glass_no_oclussion.jpg" width="640" height="480"/></br>
Fig2. - No occlusion
</div>
</div>
</p>
<p>In reality, parts of the glasses are occluded by the head, nose or ears. To achieve the same effect in augmented reality, an occlusion mask is used.
This is an object shaped roughly like a human head and placed inside the glasses.
The material of this object is called <i>occluder_mat</i>. At runtime, the occlusion mask covers the object behind it but is not itself visible, achieving the desired effect.
The next two images show the occlusion mesh highlighted as wireframe (left), and the final effect (right).
</p>
<p>
<div style="margin: 0 auto; text-align: center; overflow: hidden;">
<div style="float: left;margin-right:5px;">
<img src="images/occluder_wireframe.jpg" width="320" height="240"/></br>
Fig3. - Occlusion final(wireframe)
</div>
<div style="float: left;margin-right:5px;">
<img src="images/occluder_final.jpg" width="320" height="240" /></br>
Fig4. - Occlusion final
</div>
</div>
</p>
<h3>Importing the occlusion mask</h3>
<p>Occlusion mask is available: models/occlusion_mask.obj. When imported into the scene, the mask should automatically be correctly sized and positioned, as follows:<br/>
Real-life size, in meter units.<br/>
X positioning: point between the eye centres at X=0<br/>
Y positioning: eye centres at Y = 0<br/>
Z positioning: eyeball front edge at Z = 0<br/>
<b>The occlusion mask must not be moved or scaled.</b>
</p>
<h3>Adjusting the occlusion mask</h3>
<p>Small adjustments to the mask can be made so it better fits the specific glasses model.</p>
<h4>Nose adjustment</h4>
<p>Nose can be widened in order to fit the glasses' nose pads as close as possible.</br>
Following images illustrate the correct fitting of the nose:
</p>
<p>
<div style="margin: 5 auto; text-align: center; overflow: hidden;">
<div style="float: left;margin-right:5px;">
<img src="images/occlude_nose_correct.jpg" width="210" height="163" /></br>
Fig5. - Correct nose adjustments
</div>
<div style="float: left;margin-right:5px;">
<img src="images/occlude_nose_narrow.jpg" width="210" height="163" /></br>
Fig6. - Nose too narrow
</div>
<div style="float: left;margin-right:5px;">
<img src="images/occlude_nose_wide.jpg" width="210" height="163" /></br>
Fig7. - Nose too wide
</div>
</div>
</p>
<h4>Head sides</h4>
<p>If the occlusion mask is too wide or too narrow, it can be adjusted by moving the sides of the head or adjusting them so that the temples of the glasses fit closely to the mask.</p>
</p>
<p>
<div style="margin: 5 auto; text-align: center; overflow: hidden;">
<div style="float: left;margin-right:5px;">
<img src="images/occlude_head_correct.jpg" width="210" height="264" /></br>
Fig8. - Correct head sides adjustments
</div>
<div style="float: left;margin-right:5px;">
<img src="images/occlude_head_narrow.jpg" width="210" height="264"/></br>
Fig9. - Head sides too narrow
</div>
<div style="float: left;margin-right:5px;">
<img src="images/occlude_head_wide.jpg" width="210" height="264" /></br>
Fig10. - Head sides too wide
</div>
</div>
</p>
<h4>Ears</h4>
<p>The ears of the occlusion mask should fully cover the back part of the temples.</p>
<p>
<div style="margin: 0 auto; text-align: center; overflow: hidden;">
<div style="float: left;margin-right:5px;">
<img src="images/occlude_ears_correct.jpg" width="310" height="251" /></br>
Fig11. - Correct ears adjustments
</div>
<div style="float: left;margin-right:5px;">
<img src="images/occlude_ears_wrong.jpg" width="310" height="251"/></br>
Fig12. - Temples not completely occluded
</div>
</div>
</p>
<h2>Importing the model into the final AR application</h2>
<p>This section covers issues of file formats and conversions. The two subsections cover the two 3D platforms typically used to build final AR applications using visage|SDK - Three.js and Unity3D.</p>
<h3>Three.js (used in visage|SDK for HTML5)</h3>
<p>Models need to be in OBJ format with a corresponding MTL material file. Most 3D authoring tools provide a way to export an object to OBJ and MTL.</p>
<p>Resulting OBJ file must contain both the glasses and the occlusion mask.
Occlusion mask mesh should be grouped under <i>occluder_mat</i> name. For example,
in Blender this is done by naming the material of the mesh <i>occluder_mat</i> and exporting to OBJ with setting <i>Material Groups</i> checked.</p>
<h4>Editing the MTL file</h4>
<p>
Materials are defined in the MTL file, usually generated from the materials in the authoring tool.
After exporting advanced users can do fine tuning by editing the file. For syntax reference see <a href="https://en.wikipedia.org/wiki/Wavefront_.obj_file#Material_template_library">here</a>.
Textures used in the MTL file should be placed in the path relative to the MTL folder. Supported texture formats include JPG, TGA and PNG.
</p>
<h3>Unity3D (used in visage|SDK for Windows, iOS, Android)</h3>
<p>Models are typically built in a 3D authoring tool such as 3ds Max or Blender, then imported into Unity.
See a tutorial <a href="https://docs.unity3d.com/2019.1/Documentation/Manual/HOWTO-ImportObjectsFrom3DApps.html">here</a> for a list of supported formats and details regarding the import process.
After importing process is complete <b>check that the size and positioning of the model and the occlusion mask are consistent with the instructions in sections <i>Size and Positioning</i> and <i>Importing the occlusion mask</i>.</b>
</p>
<p>Unity3D package contains an occlusion shader that needs to be assigned to the <i>occluder_mask</i> object. Occlusion shader is available in the unity scene in: Materials/<xy>.
Note that most materials will need to be recreated because Unity uses its own shaders.
</p>
</body>
</html>

View File

@ -0,0 +1,117 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Introduction</title>
<link href="css/main.css" rel="stylesheet" type="text/css" />
<link href="css/browserref.css" rel="stylesheet" type="text/css" />
</head>
<body>
<h1>Gaze Tracker sample project</h1>
<p>
Gaze Tracker sample uses the <a href="index_api.html#visageVision-t"><em>VisageSDK</em></a> API to implement a simple application which demonstrates screen space gaze tracking.
</p>
<h2>Installing and running the project</h2>
<p>
The project must be installed on a web server in order to run (it can not run from a local disk). For a quick trial from Visage Technologies web server, click
<a href="https://visagetechnologies.com/demo/" target="_blank">here</a> and choose <b>Gaze Tracker</b>.
</p>
<p>
To install the application on your own web server, upload folders lib and Samples to your web server. To run the application access the Samples/GazeTracker/gazeTracker.html page via a web browser.
</p>
<p>
The application must be licensed in order to function. Licensing is based on License Key Files. To obtain the License Key File:
<ol>
<li>Contact your Visage Technologies contact person in order to obtain a license key.</li>
<li>Copy the obtained license key file into your application folder (e.g. Samples/GazeTracker).</li>
<li>Edit GazeTracker/GazeTracker.html. Replace the "dev_html5.vlc" in variables <i>licenseName</i> and <i>licenseURL</i> at the bottom of the file with the name of your license key file. </li>
<li>NOTE: License Key File must be preloaded before registration calling VisageModule.FS_createPreloadedFile() function.
An example of how this is done in the sample:
<pre class="prettyprint source"><code>
VisageModule.FS_createPreloadedFile('/', licenseName, licenseURL, true, false, function(){ }, function(){ alert("Loading License Failed!") });
</code>
</ol>
</p>
<p>
For further information please read <a href="licensing.html" target="_blank">licensing</a> section of the documentation.
</p>
<h2>Using the sample application</h2>
<ul>
<li>Running the sample requires a recent browser.</li>
<li>The SDK needs to download its data files before using the application.</li>
<li>Allow the application to access your camera by choosing "Allow" in the browser's pop-up bar.</li>
<li>Look straight at the camera. Tracking will start.</li>
<li>Once the tracker has initialized you can start the calibration phase of screen space gaze estimation.</li>
<li>In the calibration phase, the application displays a calibration point as the red dot. By clicking on the dot, the position of the dot will change.</li>
<li>After all calibration points are clicked, the gaze tracking system is calibrated and the estimation phase starts. Calibration continues optionally so that the results can be improved upon.</li>
<li>In the estimation phase, the application draws the estimated gaze location as a blue dot on the screen.</li>
</li>
</ul>
<h2>Implementation overview</h2>
<p>
Gaze Tracker is implemented in HTML and JavaScript using the VisageSDK API for face tracking and screen space gaze estimation, getUserMedia API to access the camera and native canvas methods for rendering.
Face tracking results are updated using requestAnimationFrame API.
</p>
<h2>Browser compatibility</h2>
<p>
Gaze Tracker sample is tested on the recent browsers on Windows, Mac, Android and iPhone platforms.
Results are represented in the following table (<b>NOTE: Application is not adapted to mobile devices.</b>).
</p>
<script>
function platform(platformName) {
var i;
var x = document.getElementsByClassName("browser");
for (i = 0; i < x.length; i++) {
x[i].style.display = "none";
}
document.getElementById(platformName).style.display = "block";
}
</script>
<div id="Desktop" class="browser">
<table class="browserref notranslate">
<tr>
<th></th>
<th style="width:15%;" class="bsChrome" title="Chrome"></th>
<th style="width:15%;" class="bsFirefox" title="FireFox"></th>
<th style="width:15%;" class="bsOpera" title="Opera"></th>
<th style="width:15%;" class="bsEdge" title="Edge"></th></th>
<th style="width:15%;" class="bsSafari" title="Safari"></th></th>
</tr>
<tr>
<th style="width:10%;" class="bsDesktop" title="Desktop"></th>
<td style="background-color:#99cc99">96</td>
<td style="background-color:#99cc99">91</td>
<td style="background-color:#99cc99">81</td>
<td style="background-color:#99cc99">88</td>
<td style="background-color:#99cc99">14</td>
</tr>
<tr>
<th style="width:10%;" class="bsAndroid" title="Android"></th>
<td style="background-color:#99cc99">95</td>
<td style="background-color:#99cc99">93</td>
<td style="background-color:#99cc99">64</td>
<td style="background-color:#D3D3D3">--</td>
<td style="background-color:#D3D3D3">--</td>
</tr>
<tr>
<th style="width:10%;" class="bsIphone" title="Iphone"></th>
<td style="background-color:#D3D3D3">--</td>
<td style="background-color:#D3D3D3">--</td>
<td style="background-color:#D3D3D3">--</td>
<td style="background-color:#D3D3D3">--</td>
<td style="background-color:#99cc99">14</td>
</tr>
</table>
</div>
</body>
</html>

1727
v_dl/sdk/doc/global.html Normal file

File diff suppressed because it is too large Load Diff

19
v_dl/sdk/doc/header.html Normal file
View File

@ -0,0 +1,19 @@
<!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Strict//EN http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd>
<html xmlns=http://www.w3.org/1999/xhtml>
<head>
<meta http-equiv=Content-Type content=text/html; charset=utf-8 />
<title>Header</title>
<link href=css/main.css rel=stylesheet type=text/css />
</head>
<body>
<div class=ultitle>
<a href=usingsdk.html target=mainFrame >visage|SDK&trade; </a>
</div>
<div id=navigation4>
<img src=images/html5.png alt=html5logo />
</div>
<div class=ulsubtitle>
v9.1b4 - for html5
</div>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 934 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 687 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 526 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 511 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 569 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 945 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 825 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 167 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 634 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 622 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 222 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 214 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 248 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

63
v_dl/sdk/doc/index.html Normal file
View File

@ -0,0 +1,63 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>JSDoc: Index</title>
<script src="scripts/prettify/prettify.js"> </script>
<script src="scripts/prettify/lang-css.js"> </script>
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
<link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
</head>
<body>
<div id="main">
<h1 class="page-title">Index</h1>
<h3> </h3>
</div>
<nav>
<h2><a href="index.html">Index</a></h2><h3>Modules</h3><ul><li><a href="module-VisageTrackerUnityPlugin.html">VisageTrackerUnityPlugin</a></li><li><a href="module-VisageAnalyserUnityPlugin.html">VisageAnalyserUnityPlugin</a></li></ul><h3>Classes</h3><ul><li><a href="FaceData.html">FaceData</a></li><li><a href="ScreenSpaceGazeData.html">ScreenSpaceGazeData</a></li><li><a href="VectorFloat.html">VectorFloat</a></li><li><a href="VectorShort.html">VectorShort</a></li><li><a href="VectorString.html">VectorString</a></li><li><a href="VisageFaceAnalyser.html">VisageFaceAnalyser</a></li><li><a href="AnalysisData.html">AnalysisData</a></li><li><a href="FeaturePoint.html">FeaturePoint</a></li><li><a href="FDP.html">FDP</a></li><li><a href="VisageDetector.html">VisageDetector</a></li><li><a href="FaceDataVector.html">FaceDataVector</a></li><li><a href="VSRectVector.html">VSRectVector</a></li><li><a href="VSRect.html">VSRect</a></li><li><a href="VisageGazeTracker.html">VisageGazeTracker</a></li><li><a href="VisageFaceRecognition.html">VisageFaceRecognition</a></li><li><a href="VisageTracker.html">VisageTracker</a></li><li><a href="VisageConfiguration.html">VisageConfiguration</a></li><li><a href="VisageLivenessBlink.html">VisageLivenessBlink</a></li><li><a href="VisageLivenessSmile.html">VisageLivenessSmile</a></li><li><a href="VisageLivenessBrowRaise.html">VisageLivenessBrowRaise</a></li><li><a href="VisageAR.html">VisageAR</a></li></ul><h3>Global</h3><ul><li><a href="global.html#FP_START_GROUP_INDEX">FP_START_GROUP_INDEX</a></li><li><a href="global.html#FP_END_GROUP_INDEX">FP_END_GROUP_INDEX</a></li><li><a href="global.html#FP_NUMBER_OF_GROUPS">FP_NUMBER_OF_GROUPS</a></li><li><a href="global.html#initializeLicenseManager">initializeLicenseManager</a></li><li><a href="global.html#VisageTrackerStatus">VisageTrackerStatus</a></li><li><a href="global.html#VisageTrackerImageFormat">VisageTrackerImageFormat</a></li><li><a href="global.html#VisageTrackerOrigin">VisageTrackerOrigin</a></li><li><a href="global.html#getSDKVersion">getSDKVersion</a></li></ul>
</nav>
<br clear="both">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.0</a> on Sat Jul 29 2023 01:38:27 GMT-0000 (GMT)
</footer>
<script> prettyPrint(); </script>
<script src="scripts/linenumber.js"> </script>
</body>
</html>

203
v_dl/sdk/doc/index_api.html Normal file
View File

@ -0,0 +1,203 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
</head><link href="css/main.css" rel="stylesheet" type="text/css" />
<body>
<div class="header">
<div class="headertitle">
<h1>API</h1>
</div>
</div><!--header-->
<div class="contents">
<div class="textblock">
<p>
The following sections provide an overview of key functionalities of Visage|SDK and give links to most important classes and relevant sample projects.
The detailed information is found in the documentation of each class, reached through links in this section or links on the side menu.
</p>
<p>
Visage|SDK includes following main functionalities:
<ul>
<li>Facial feature tracking</li>
<li>Facial feature detection</li>
<li>Face analysis</li>
<li>Face recognition</li>
</ul>
Visage|SDK also provides a high-level API for augmented reality (AR), allowing very simple implementation
of AR applications such as virtual eyewear try-on.
</p>
<p>
<h2><a class="anchor" id="visageVision-t"></a>
Configuring neural network runners</h1>
All listed APIs use configurable neural networks to process and analyze facial images.<br/><br/>
Additional configuration file <b>NeuralNet.cfg</b> is provided in <i>www/lib</i> folder.
It allows for specifying the desired backend that the runner will use for inference.
<br/>
Following backends values are supported:
<ul>
<li> <b>WEBGL</b> - allowing GPU-assisted neural network running
<li> <b>WASM</b> - allowing CPU-accelerated neural network running with supported SIMD instructions
<li> <b>AUTO</b> - will choose the best backend in the given environment (WEBGL or WASM)
</ul>
<br/>
To choose desired backend make sure to preload <b>NeuralNet.cfg</b> file to virtual file system. Default backend is AUTO.<br/><br/>
More information about configuring neural network runners can be found in <a href="doc/VisageTracker Configuration Manual.pdf">VisageTracker Configuration Manual</a>, chapter 3. Configuring neural network runners.<br/><br/>
The following sections provide an overview of the APIs and give links to most important classes.
</p>
<h1><a class="anchor" id="visageVision-t"></a>
Facial features tracking (visageSDK.js)</h1>
<p>
Visage tracker tracks multiple faces and facial features in video sequences and outputs 3D head pose, facial expression, gaze direction, facial feature points and full textured 3D face model.
The tracker is fully configurable in terms of performance, quality, tracked features and facial actions, as well as other options,
allowing in effect a variety of customized trackers suited to different applications. Several common configurations are delivered.
Details about configuring the tracker can be found in the <a href="doc/VisageTracker Configuration Manual.pdf">VisageTracker Configuration Manual</a>.
</p>
<p><b>Main classes</b></p>
<ul>
<li><a class="el" href="VisageTracker.html" title="VisageTracker is a head/facial features tracker capable of tracking facial features in video.">VisageTracker</a>: Tracks multiple faces and facial features.</li>
<li><a class="el" href="VisageConfiguration.html" title="VisageConfiguration is a class used to change, apply, load and save configuration parameters used by VisageTracker.">VisageConfiguration</a>: Used to change, apply, load and save configuration parameters used by VisageTracker.</li>
<li><a class="el" href="FaceData.html" title="FaceData data structure, used as container for all tracking results. ">FaceData</a>: Used to return tracking results from the tracker.</li>
</ul>
<p><br/>
<h1><a class="anchor" id="visageVision-d"></a>
Facial features detection (visageSDK.js)</h1>
<p>
The class VisageDetector detects faces and facial features in input images.
The results are, for each detected face, the 3D head pose, the coordinates of facial feature points, e.g. chin tip, nose tip, lip corners etc. and 3D face model fitted to the face.
The results are returned in one or more FaceData objects, one for each detected face.
</p>
<p><b>Main classes</b></p>
<ul>
<li><a class="el" href="VisageDetector.html" title="VisageDetector is a face/facial features detector capable of detecting facial features in still images.">VisageDetector</a>: Detects faces and facial features in still images.</li>
<li><a class="el" href="FaceData.html" title="FaceData data structure, used as container for all detection results. ">FaceData</a>: Used to return detection results from detector.</li>
</ul>
<p><br/>
<h1><a class="anchor" id="visageVision-g"></a>
Screen space gaze tracking (visageSDK.js)</h1>
<p>
The class VisageGazeTracker adds screen space gaze tracking on top of facial features/head tracking.
Screen space gaze tracking feature estimates gaze position (the location on the screen where the user is looking) in normalized screen coordinates.
Estimations are returned as part of a FaceData object.
</p>
<p><b>Main classes</b></p>
<ul>
<li><a class="el" href="VisageGazeTracker.html" title="VisageGazeTracker is a face/facial features detector capable of estimating gaze position (the location on the screen where the user is looking) in normalized screen coordinates.">VisageGazeTracker</a>: Estimates gaze position (the location on the screen where the user is looking) in normalized screen coordinates.</li>
<li><a class="el" href="FaceData.html" title="FaceData data structure, used as container for all detection results. ">FaceData</a>: Used to return tracking results from the gaze tracker.</li>
</ul>
<p><br/>
<h1><a class="anchor" id="visageVision-a"></a>
Facial feature analysis (visageSDK.js)</h1>
<p>
The class VisageFaceAnalyser contains face analysis algorithms capable of estimating gender and emotion from facial images.
For gender estimation it returns estimated gender and for emotions estimation it returns the probability of each of estimated facial emotions: anger, disgust, fear, happiness, sadness, surprise and neutral.
</p>
<p><b>Main classes</b></p>
<ul>
<li><a class="el" href="VisageFaceAnalyser.html" title="Face analyser capable of estimating age, gender and emotion from facial images.">VisageFaceAnalyser</a>: Estimates age, gender and emotion from facial images.</li>
<li><a class="el" href="FaceData.html" title="Used to pass the necessary facial image data to VisageFaceAnalyser functions. ">FaceData</a>: Used to pass the necessary facial image data to VisageFaceAnalyser functions.</li>
<li><a class="el" href="AnalysisData.html" title=" Used to return analysis results.">AnalysisData</a>: Used to return analysis results.</li>
</ul>
<p><br/>
<h1><a class="anchor" id="visageVision-fr"></a>
Face recognition (visageSDK.js)</h1>
<p>
The class VisageFaceRecognition contains a face recognition algorithm capable of measuring similarity between human faces and recognizing a person's identity from frontal facial image (yaw angle approximately from -20 to 20 degrees) by comparing it to previously stored faces.
</p>
<p><b>Main classes</b></p>
<ul>
<li><a class="el" href="VisageFaceRecognition.html" title="Face analyser capable of estimating gender and emotion from frontal facial images (yaw between -20 and 20 degrees).">VisageFaceRecognition</a>: Measures similarity between human faces and recognizes a person's identity from frontal facial images (yaw angle approximately from -20 to 20 degrees).</li>
</ul>
<p><br/>
<h1><a class="anchor" id="visageVision-li"></a>
Liveness (visageSDK.js)</h1>
<p>
Liveness system is used to differentiate between a live person in the live video stream, as opposed to a still image. It is used in combination
with face recognition to verify that the person is actually in front of the camera. This is accomplished by prompting a person to perform a
specific set of facial actions and verifying that the actions have actually been performed. System allows you to use the following actions:
eyebrows raise, blink, smile.
</p>
<p><b>Main classes</b></p>
<ul>
<li><a class="el" href="VisageLivenessBlink.html">VisageLivenessBlink</a>: Implementation of action which verifies that blink was performed.</li>
<li><a class="el" href="VisageLivenessSmile.html">VisageLivenessSmile</a>: Implementation of action which verifies that smile was performed.</li>
<li><a class="el" href="VisageLivenessBrowRaise.html">VisageLivenessBrowRaise</a>: Implementation of action which verifies that eyebrows raise was performed.</li>
</ul>
<p><br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
</p>
</div></div><!-- contents -->
</body>
</html>

178
v_dl/sdk/doc/licensing.html Normal file
View File

@ -0,0 +1,178 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<link href="css/main.css" rel="stylesheet" type="text/css" />
</head>
<body>
<h1>Licensing</h1>
<p>By having any Visage Technologies Program, or part of it, installed or copied on your computer, you agree to the terms of the <a href="../VT License Agreement.pdf">Visage Technologies AB Software License Agreement</a>. If you do not agree with these terms, please entirely remove any Visage Technologies Programs from your computer.</p>
<p>This page focuses on technical issues such as obtaining and using the license key files. For detailed commercial conditions please <a href="http://www.visagetechnologies.com/contact/" target="New">contact Visage Technologies</a>.</p>
<p>Applications developed using visage|SDK must be licensed in order to function. Licensing is based on License Key Files. A single License Key File is valid for one or more installations on one or more platforms (operating systems). The License Key File can be opened in a text editor (e.g. Windows Notepad or similar) in order to read the licensing information, but it is important not to change the file in any way as it would become invalid.</p>
<p>Note that you need to obtain a Licence Key File when you want to run any application using visage|SDK for HTML5 on your web server.
Without a license key, applications will not work properly and appropriate warning message will be displayed.
</p>
<h2>Obtaining the License Key File</h2>
<p>For 30-day evaluation, simply send an email request to your Visage Technologies contact person and you will receive a License Key File by email.</p>
<p>If you are purchasing a license, your Visage Technologies
contact person will deliver your License Key File by email based on your purchase order.</p>
<h2><a class="anchor" id="include_license"></a>Including the License Key File in your application</h2>
<h3>a) Javascript application</h3>
<p>Add License Key File to the folder on the server where HTML file is located (for example <em>www\Samples\VirtualEyewearTryOn</em> folder).
In your application, you need to preload License Key File before VisageModule is loaded, and then call the initialization
function in order to let the Application read the License Key File. Example how this is done is as follows in your application code:
<br/>
<br/>
<p>Preloading License Key File:</p>
<pre>
licenseName = "lic_web.vlc";
licenseURL = "lic_web.vlc";
VisageModule = {
preRun: [function() {
VisageModule.FS_createPreloadedFile('/', licenseName, licenseURL, true, false, function(){ }, function(){ alert("Loading License Failed!") });
}],
onRuntimeInitialized: onModuleInitialized
}
</pre>
<p>Initializing License Key File:</p>
<pre>
VisageModule.initializeLicenseManager("name-of-the-license-file.vlc");
tracker = new VisageModule.VisageTracker("../../lib/Head_Tracker.cfg");
faceData = new VisageModule.FaceData();
</pre>
<br/>
where "name-of-the-license-file.vlc" is the name of your License Key File located in the same folder as the main HTML file of application.
Examples can be found in onModuleInitialized() function in gazeTracker.html (GazeTracker sample), ShowcaseDemo.html, recognitionWorker.js and analysisWorker.js (ShowcaseDemo sample) files or in eyewear.html (VirtualEyewearTryOn sample) file.
</p>
<h3>b) Unity application</h3>
<p>Add License Key File to the <i>Assets/StreamingAssets</i> folder in the Unity application. The License Key File needs to be preloaded
in <i>Awake()</i> function, and then initialized in <i>Start()</i> function in order to let the Application read the License Key File.
Example how this is done is as follows in your Unity application code:
<p>Preloading License Key File:</p>
<pre class="prettyprint source"><code>
VisageTrackerNative._preloadFile(Application.streamingAssetsPath + "/Visage Tracker/" + LicenseString.licenseString);
</code></pre>
<p>Initializing License Key File:</p>
<pre class="prettyprint source"><code>
licenseFilePath = "";
...
VisageTrackerNative._initializeLicense(licenseFilePath + LicenseString.licenseString);
</code></pre>
<h4> VisageTrackerUnityDemo Sample</h4>
<p>In the VisageTrackerUnityDemo sample project the license is expected to be placed in the correct folder in the Unity project:
<i>Assets/StreamingAssets/Visage Tracker</i>.</p>
<p>Also, the name of the License Key File (name-of-the-license-file.vlc) needs be set to <i>licenseString</i> variable in script <i>LicenseString.cs</i>.</p>
<h2>Including multiple License Key Files in your application</h2>
<h3>a) Javascript application</h3>
</p>Add License Key Files to the folder on the server where HTML file is located (for example <em>www\Samples\ShowcaseDemo</em> folder).
To include multiple License Key Files simply preload each License Key File before VisageModule is loaded, then call the initialization function for each License Key File.
This is done as follows in your application code:
<br/>
<br/>
<p>Preloading License Key File:</p>
<pre>
licenseName = "name-of-first-license-file";
licenseURL = "name-of-first-license-file";
licenseName_2 = "name-of-second-license-file.vlc";
licenseURL_2 = "name-of-second-license-file.vlc";
VisageModule = {
preRun: [function() {
VisageModule.FS_createPreloadedFile('/', licenseName, licenseURL, true, false, function(){ }, function(){ alert("Loading License Failed!") });
VisageModule.FS_createPreloadedFile('/', licenseName_2, licenseURL_2, true, false, function(){ }, function(){ alert("Loading License Failed!") });
}],
onRuntimeInitialized: onModuleInitialized
}
</pre>
<p>Initializing License Key File:</p>
<pre>
VisageModule.initializeLicenseManager("licenseName");
VisageModule.initializeLicenseManager("licenseName_2");
tracker = new VisageModule.VisageTracker("../../lib/Head_Tracker.cfg");
faceData = new VisageModule.FaceData();
</pre>
<br/>
where "name-of-first-license-file.vlc" and "name-of-second-license-file.vlc" are the names of your License Key Files located in the same folder as the main HTML file of application.
Examples can be found in onModuleInitialized() function in gazeTracker.html (GazeTracker sample), ShowcaseDemo.html, recognitionWorker.js and analysisWorker.js (ShowcaseDemo sample) files or in eyewear.html (VirtualEyewearTryOn sample) file.
</p>
<h3>b) Unity application</h3>
<p>Add License Key Files to the <i>Assets/StreamingAssets</i> folder in the Unity application. To include multiple License Key Files, each one needs to be preloaded
in <i>Awake()</i> function, and then initialized in <i>Start()</i> function in order to let the Application read each License Key File.
Example how this is done is as follows in your Unity application code:
<p>Preloading License Key File:</p>
<pre class="prettyprint source"><code>
VisageTrackerNative._preloadFile(Application.streamingAssetsPath + "/Visage Tracker/" + LicenseString.licenseString);
VisageTrackerNative._preloadFile(Application.streamingAssetsPath + "/Visage Tracker/" + LicenseString.licenseString2);
</code></pre>
<p>To initialize multiple License Key Files simply initialize each License Key File. This is done as follows in your application:</p>
<pre class="prettyprint source"><code>
licenseFilePath = ""; //same license file path if License Key Files are in the same folder
...
VisageTrackerNative._initializeLicense(licenseFilePath + LicenseString.licenseString);
VisageTrackerNative._initializeLicense(licenseFilePath + LicenseString.licenseString2);
</code></pre>
<h4> VisageTrackerUnityDemo Sample</h4>
<p>In the VisageTrackerUnityDemo sample project the licenses are expected to be placed in the correct folder in the Unity project:
<i>Assets/StreamingAssets/Visage Tracker</i>.</p>
<p>Also, each <i>licenseString</i> variable in script <i>LicenseString.cs</i> needs to be set to name of the each License Key File name (name-of-the-license-file.vlc).</p>
</p>
</body>
</html>

1141
v_dl/sdk/doc/migration.html Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,695 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>JSDoc: Module: VisageAnalyserUnityPlugin</title>
<script src="scripts/prettify/prettify.js"> </script>
<script src="scripts/prettify/lang-css.js"> </script>
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
<link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
</head>
<body>
<div id="main">
<h1 class="page-title">Module: VisageAnalyserUnityPlugin</h1>
<section>
<header>
<h2>
VisageAnalyserUnityPlugin
</h2>
</header>
<article>
<div class="container-overview">
<div class="description"><br/> The VisageAnalyserUnityPlugin is a native plugin (see <a href=https://docs.unity3d.com/Manual/NativePlugins.html>Native Plugins</a>) written in JavaScript for Unity. The plugin exposes face analysis features of visage|SDK for use in Unity WebGL build. <br/> <br/> The plugin code is placed in VisageAnalyserUnityPlugin.jslib file and can be found in /lib folder. <br/> <br/> <h3>&emsp;Dependencies </h3> The plugin depends on visageSDK.js file that loads visageSDK.data and visageAnalysisData.js that loads visageAnalysisData.data. Therefore, visageSDK.js has to be loaded along with visageAnalysisData.js script by calling <a href="module-VisageTrackerUnityPlugin.html#_preloadExternalJS">_preloadExternalJS</a> function with the scripts' path relative to the main .html file. <br> For example, if visageAnalysisData.js is placed in the same folder as the main .html file: <pre class="prettyprint source"><code> VisageTrackerNative._preloadExternalJS("visageSDK.js.js"); VisageTrackerNative._preloadExternalJS("visageAnalysisData.js"); </code></pre> visageAnalysisData.data file, can be placed at any location on the server relative to the WEBGL build outputed main index.html file, by setting the data path using <a href="module-VisageTrackerUnityPlugin.html#_setDataPath">_setDataPath</a> function. <br/> Note that calling the <a href="module-VisageTrackerUnityPlugin.html#_setDataPath">_setDataPath</a> function will change the search path of all .data files. <h3>&emsp;Usage </h3> For the functions to be accessible from C#, a C# wrapper interface is used. The example can be seen in the following function: <pre class="prettyprint source"><code> [DllImport("__Internal")] public static extern void _initAnalyser(string initCallback); </code></pre> The usage is demonstrated in VisageTrackerUnityDemo sample, VisageTrackerNative.HTML5.cs file. All C# scripts are located in Assets/Scripts folder of the project. <br/> The frame that will be forwarded to the functions for estimating age, gender and emotions has to be processed before using VisageTracker. <br/> <br/> <h3>&emsp;Callbacks</h3> Generally, it is common to use callback functions in JavaScript, due to its asynchronous nature. <br/> Within the plugin, some functions are implemented so they expect a <b>callback function name</b> as a parameter. Callback functions are defined in C# code. Examples can be seen in <a href="module-VisageAnalyserUnityPlugin.html#_initAnalyser">_initAnalyser</a> function. <br/><br/></div>
<dl class="details">
</dl>
</div>
<h3 class="subsection-title">Methods</h3>
<dl>
<dt>
<h4 class="name" id="_initAnalyser"><span class="type-signature">&lt;static> </span>_initAnalyser<span class="signature">(callback)</span><span class="type-signature"></span></h4>
</dt>
<dd>
<div class="description">
Initializes VisageAnalyser. <br/> In order to use VisageAnalyser functions visageAnalysisData.data must be preloaded with visageAnalysisData.js script by calling <a href="module-VisageTrackerUnityPlugin.html#_preloadExternalJS">_preloadExternalJS</a> function at the very beginning of the code execution. The recommendation is to call this function in Awake() function in Unity. Parameter <i>callback</i> is name of function defined in Unity script. An example of a callback function definition and <a href="module-VisageAnalyserUnityPlugin.html#_initAnalyser">_initAnalyser</a> function call: <pre class="prettyprint source"><code> //callback function void initAnalyserCallback() { Debug.Log("AnalyserInited"); AnalyserInitialized = true; } //call of the _initAnalyser() function: VisageTrackerNative._initAnalyser("initAnalyserCallback"); </code></pre> <br/>
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>callback</code></td>
<td class="type">
<span class="param-type">string</span>
</td>
<td class="description last"><b>the name</b> of the callback function.</td>
</tr>
</tbody>
</table>
<dl class="details">
</dl>
</dd>
<dt>
<h4 class="name" id="_analyseImage"><span class="type-signature">&lt;static> </span>_analyseImage<span class="signature">(faceIndex, options, resultsArray)</span><span class="type-signature"> &rarr; {<a href="global.html#VFAReturnCode">VFAReturnCode</a>}</span></h4>
</dt>
<dd>
<div class="description">
Performs the specified face analysis tasks on a given image. <br/> This function is primarily intended for performing face analysis on a single image, or consecutive unrelated images. As such, it outputs raw, unfiltered estimation data without smoothing or averaging.
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>faceIndex</code></td>
<td class="type">
<span class="param-type">number</span>
</td>
<td class="description last">value between 0 and MAX_FACES-1, used to access the data of a particular tracked face.</td>
</tr>
<tr>
<td class="name"><code>options</code></td>
<td class="type">
<span class="param-type">number</span>
</td>
<td class="description last">Bitwise combination of <a href="global.html#VFAFlags">VFAFlags</a> which determines the analysis operations to be performed.</td>
</tr>
<tr>
<td class="name"><code>resultsArray</code></td>
<td class="type">
<span class="param-type">Array</span>
</td>
<td class="description last">12-dimension float array where the results of the performed face analysis will be stored. Array elements correspond with <a href="AnalysisData.html">AnalysisData</a> class elements.</td>
</tr>
</tbody>
</table>
<dl class="details">
</dl>
<h5>Returns:</h5>
<div class="param-desc">
Return code indicating status of performed face analysis.
</div>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type"><a href="global.html#VFAReturnCode">VFAReturnCode</a></span>
</dd>
</dl>
</dd>
<dt>
<h4 class="name" id="_analyseStream"><span class="type-signature">&lt;static> </span>_analyseStream<span class="signature">(faceIndex, options, resultsArray)</span><span class="type-signature"> &rarr; {<a href="global.html#VFAReturnCode">VFAReturnCode</a>}</span></h4>
</dt>
<dd>
<div class="description">
Performs the specified face analysis tasks on a given frame. <br/> This function is primarily intended for performing face analysis on a continuous stream of related frames, such as a video or camera feed. Sampling face analysis data from multiple frames can increase estimation accuracy by averaging the result over multiple frames. Internally, the suitability of frames chosen for analysis is continually evaluted based on head pose and overall tracking quality. This guarantees that the analysis buffer is always working with the best available frames, ensuring highest possible estimation accuracy.
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>faceIndex</code></td>
<td class="type">
<span class="param-type">number</span>
</td>
<td class="description last">value between 0 and MAX_FACES-1, used to access the data of a particular tracked face.</td>
</tr>
<tr>
<td class="name"><code>options</code></td>
<td class="type">
<span class="param-type">number</span>
</td>
<td class="description last">Bitwise combination of <a href="global.html#VFAFlags">VFAFlags</a> which determines the analysis operations to be performed.</td>
</tr>
<tr>
<td class="name"><code>resultsArray</code></td>
<td class="type">
<span class="param-type">Array</span>
</td>
<td class="description last">12-dimension float array where the results of the performed face analysis will be stored. Array elements correspond with <a href="AnalysisData.html">AnalysisData</a> class elements.</td>
</tr>
</tbody>
</table>
<dl class="details">
</dl>
<h5>Returns:</h5>
<div class="param-desc">
Return code indicating status of performed face analysis.
</div>
<dl>
<dt>
Type
</dt>
<dd>
<span class="param-type"><a href="global.html#VFAReturnCode">VFAReturnCode</a></span>
</dd>
</dl>
</dd>
<dt>
<h4 class="name" id="_resetStreamAnalysis"><span class="type-signature">&lt;static> </span>_resetStreamAnalysis<span class="signature">(faceIndex)</span><span class="type-signature"></span></h4>
</dt>
<dd>
<div class="description">
Resets face analysis.
</div>
<h5>Parameters:</h5>
<table class="params">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th class="last">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td class="name"><code>faceIndex</code></td>
<td class="type">
<span class="param-type">number</span>
</td>
<td class="description last">value between 0 and MAX_FACES-1, used to access the data of a particular tracked face.</td>
</tr>
</tbody>
</table>
<dl class="details">
</dl>
</dd>
</dl>
</article>
</section>
</div>
<nav>
<h2><a href="index.html">Index</a></h2><h3>Modules</h3><ul><li><a href="module-VisageTrackerUnityPlugin.html">VisageTrackerUnityPlugin</a></li><li><a href="module-VisageAnalyserUnityPlugin.html">VisageAnalyserUnityPlugin</a></li></ul><h3>Classes</h3><ul><li><a href="FaceData.html">FaceData</a></li><li><a href="ScreenSpaceGazeData.html">ScreenSpaceGazeData</a></li><li><a href="VectorFloat.html">VectorFloat</a></li><li><a href="VectorShort.html">VectorShort</a></li><li><a href="VectorString.html">VectorString</a></li><li><a href="VisageFaceAnalyser.html">VisageFaceAnalyser</a></li><li><a href="AnalysisData.html">AnalysisData</a></li><li><a href="FeaturePoint.html">FeaturePoint</a></li><li><a href="FDP.html">FDP</a></li><li><a href="VisageDetector.html">VisageDetector</a></li><li><a href="FaceDataVector.html">FaceDataVector</a></li><li><a href="VSRectVector.html">VSRectVector</a></li><li><a href="VSRect.html">VSRect</a></li><li><a href="VisageGazeTracker.html">VisageGazeTracker</a></li><li><a href="VisageFaceRecognition.html">VisageFaceRecognition</a></li><li><a href="VisageTracker.html">VisageTracker</a></li><li><a href="VisageConfiguration.html">VisageConfiguration</a></li><li><a href="VisageLivenessBlink.html">VisageLivenessBlink</a></li><li><a href="VisageLivenessSmile.html">VisageLivenessSmile</a></li><li><a href="VisageLivenessBrowRaise.html">VisageLivenessBrowRaise</a></li><li><a href="VisageAR.html">VisageAR</a></li></ul><h3>Global</h3><ul><li><a href="global.html#FP_START_GROUP_INDEX">FP_START_GROUP_INDEX</a></li><li><a href="global.html#FP_END_GROUP_INDEX">FP_END_GROUP_INDEX</a></li><li><a href="global.html#FP_NUMBER_OF_GROUPS">FP_NUMBER_OF_GROUPS</a></li><li><a href="global.html#initializeLicenseManager">initializeLicenseManager</a></li><li><a href="global.html#VisageTrackerStatus">VisageTrackerStatus</a></li><li><a href="global.html#VisageTrackerImageFormat">VisageTrackerImageFormat</a></li><li><a href="global.html#VisageTrackerOrigin">VisageTrackerOrigin</a></li><li><a href="global.html#getSDKVersion">getSDKVersion</a></li></ul>
</nav>
<br clear="both">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.2.0</a> on Sat Jul 29 2023 01:38:30 GMT-0000 (GMT)
</footer>
<script> prettyPrint(); </script>
<script src="scripts/linenumber.js"> </script>
</body>
</html>

File diff suppressed because it is too large Load Diff

519
v_dl/sdk/doc/navi.html Normal file
View File

@ -0,0 +1,519 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>navigation</title>
<link href="css/main.css" rel="stylesheet" type="text/css" />
</head>
<body>
<iframe src="header.html" width="200" height="90" frameborder="0">
<a href="header.html">Your browser does not appear to support the iframe element.
Click here to view the visage|SDK documentation header.</a>
</iframe>
<div class="vmenu">
<table width="200" border="0" align="left">
<!--
<tr>
<td width="15"><img src="images/folder-closed.jpg" width="15" height="15" alt="folder-open" /></td>
<td colspan="4"><a id="menuitem_intro" class="vmenu" href="intro.html" target="mainFrame" onmouseup="onmouseup_menuitem(event,'menuitem_intro')">Introduction</a></td>
</tr>
-->
<tr>
<td width="15"><img src="images/folder-closed.jpg" width="15" height="15" alt="folder-open" /></td>
<td colspan="4"><a id="menuitem_migration" class="vmenu" href="migration.html" target="mainFrame" onmouseup="onmouseup_menuitem(event,'menuitem_migration')">Migration from older versions</a></td>
</tr>
<tr>
<td width="15"><img src="images/folder-closed.jpg" width="15" height="15" alt="folder-open" /></td>
<td colspan="4"><a id="menuitem_samples" class="vmenu" href="samples.html" target="mainFrame" onmouseup="onmouseup_menuitem(event,'menuitem_samples')">Samples</a></td>
</tr>
<tr style="display: none;">
<td width="15">&nbsp;</td>
<td width="15"><img src="images/folder-closed.jpg" width="15" height="15" alt="folder-open" /></td>
<td colspan="3"><a id="menuitem_showcase" class="vmenu" href="showcase.html" target="mainFrame" onmouseup="onmouseup_menuitem(event,'menuitem_showcase')">Showcase Demo</a></td>
</tr>
<tr style="display: none;">
<td width="15">&nbsp;</td>
<td width="15"><img src="images/folder-closed.jpg" width="15" height="15" alt="folder-open" /></td>
<td colspan="3"><a id="menuitem_gazetracker" class="vmenu" href="gazetracker.html" target="mainFrame" onmouseup="onmouseup_menuitem(event,'menuitem_gazetracker')">Gaze Tracker</a></td>
</tr>
<tr style="display: none;">
<td width="15">&nbsp;</td>
<td width="15"><img src="images/folder-closed.jpg" width="15" height="15" alt="folder-open" /></td>
<td colspan="3"><a id="menuitem_visageeye" class="vmenu" href="eyewear.html" target="mainFrame" onmouseup="onmouseup_menuitem(event,'menuitem_visageeye')">Virtual Eyewear Try-on</a></td>
</tr>
<tr style="display: none;">
<td width="15">&nbsp;</td>
<td width="15">&nbsp;</td>
<td width="15"><img src="images/folder-closed.jpg" width="15" height="15" alt="folder-open" /></td>
<td colspan="2"><a id="menuitem_AR" class="vmenu" href="visar_api.html" target="mainFrame" onmouseup="onmouseup_menuitem(event,'menuitem_AR')">Augmented Reality API</a></td>
</tr>
<tr style="display: none;">
<td width="15">&nbsp;</td>
<td width="15"><img src="images/folder-closed.jpg" width="15" height="15" alt="folder-open" /></td>
<td colspan="3"><a id="menuitem_unityintegration" class="vmenu" href="unity_integration.html" target="mainFrame" onmouseup="onmouseup_menuitem(event,'menuitem_unityintegration')">Unity3D</a></td>
</tr>
<tr style="display: none;">
<td width="15">&nbsp;</td>
<td width="15">&nbsp;</td>
<td width="15"><img src="images/folder-closed.jpg" width="15" height="15" alt="folder-open" /></td>
<td colspan="2"><a id="menuitem_unitytracker" class="vmenu" href="trackerunity.html" target="mainFrame" onmouseup="onmouseup_menuitem(event,'menuitem_unitytracker')">VisageTrackerUnityDemo</a></td>
</tr>
<tr style="display: none;">
<td width="15">&nbsp;</td>
<td width="15">&nbsp;</td>
<td width="15"><img src="images/folder-closed.jpg" width="15" height="15" alt="folder-open" /></td>
<td colspan="2"><a id="menuitem_trackerunityplugin" class="vmenu" href="module-VisageTrackerUnityPlugin.html" target="mainFrame" onmouseup="onmouseup_menuitem(event,'menuitem_trackerunityplugin')">VisageTrackerUnityPlugin</a></td>
</tr>
<tr style="display: none;">
<td width="15">&nbsp;</td>
<td width="15">&nbsp;</td>
<td width="15"><img src="images/folder-closed.jpg" width="15" height="15" alt="folder-open" /></td>
<td colspan="2"><a id="menuitem_analyserunityplugin" class="vmenu" href="module-VisageAnalyserUnityPlugin.html" target="mainFrame" onmouseup="onmouseup_menuitem(event,'menuitem_analyserunityplugin')">VisageAnalyserUnityPlugin</a></td>
</tr>
<tr style="display: none;">
<td width="15">&nbsp;</td>
<td width="15">&nbsp;</td>
<td width="15"><img src="images/folder-closed.jpg" width="15" height="15" alt="folder-open" /></td>
<td colspan="2"><a id="menuitem_arguide" class="vmenu" href="doc/modeling_guide.pdf" target="mainFrame" onmouseup="onmouseup_menuitem(event,'menuitem_arguide')">Animation & AR Modeling Guide</a></td>
</tr>
<tr>
<td width="15"><img src="images/folder-closed.jpg" width="15" height="15" alt="folder-open" /></td>
<td colspan="4"><a id="menuitem_api" class="vmenu" href="index_api.html" target="mainFrame" onmouseup="onmouseup_menuitem(event,'menuitem_api')">API</a></td>
</tr>
<tr style="display: none;">
<td width="15">&nbsp;</td>
<td width="15"><img src="images/folder-closed.jpg" width="15" height="15" alt="folder-open" /></td>
<td colspan="3"><a id="menuitem_face" class="vmenu" href="index_api.html#visageVision-t" target="mainFrame" onmouseup="onmouseup_menuitem(event,'menuitem_face')">Facial Features Tracking</a></td>
</tr>
<tr style="display: none;">
<td width="15">&nbsp;</td>
<td width="15">&nbsp;</td>
<td width="15"><img src="images/folder-closed.jpg" width="15" height="15" alt="folder-open" /></td>
<td colspan="2"><a id="menuitem_VisageTrackerClass" class="vmenu" href="VisageTracker.html" target="mainFrame" onmouseup="onmouseup_menuitem(event,'menuitem_VisageTrackerClass')">VisageTracker</a></td>
</tr>
<tr style="display: none;">
<td width="15">&nbsp;</td>
<td width="15">&nbsp;</td>
<td width="15"><img src="images/folder-closed.jpg" width="15" height="15" alt="folder-open" /></td>
<td colspan="2"><a id="menuitem_VisageConfigurationClass" class="vmenu" href="VisageConfiguration.html" target="mainFrame" onmouseup="onmouseup_menuitem(event,'menuitem_VisageConfigurationClass')">VisageConfiguration</a></td>
</tr>
<tr style="display: none;">
<td width="15">&nbsp;</td>
<td width="15">&nbsp;</td>
<td width="15"><img src="images/folder-closed.jpg" width="15" height="15" alt="folder-open" /></td>
<td colspan="2"><a id="menuitem_FaceDataStruct" class="vmenu" href="FaceData.html" target="mainFrame" onmouseup="onmouseup_menuitem(event,'menuitem_FaceDataStruct')">FaceData</a></td>
</tr>
<tr style="display: none;">
<td width="15">&nbsp;</td>
<td width="15">&nbsp;</td>
<td width="15"><img src="images/folder-closed.jpg" width="15" height="15" alt="folder-open" /></td>
<td colspan="2"><a id="menuitem_FDPClassVT" class="vmenu" href="FDP.html" target="mainFrame" onmouseup="onmouseup_menuitem(event,'menuitem_FDPClassVT')">FDP</a></td>
</tr>
<tr style="display: none;">
<td width="15">&nbsp;</td>
<td width="15">&nbsp;</td>
<td width="15"><img src="images/folder-closed.jpg" width="15" height="15" alt="folder-open" /></td>
<td colspan="2"><a id="menuitem_FeaturePointStructVT" class="vmenu" href="FeaturePoint.html" target="mainFrame" onmouseup="onmouseup_menuitem(event,'menuitem_FeaturePointStructVT')">FeaturePoint</a></td>
</tr>
<tr style="display: none;">
<td width="15">&nbsp;</td>
<td width="15">&nbsp;</td>
<td width="15"><img src="images/folder-closed.jpg" width="15" height="15" alt="folder-open" /></td>
<td colspan="2"><a id="menuitem_config_manual" class="vmenu" href="doc/VisageTracker Configuration Manual.pdf" target="mainFrame" onmouseup="onmouseup_menuitem(event,'menuitem_config_manual')">VisageTracker Configuration Manual</a></td>
</tr>
<tr style="display: none;">
<td width="15">&nbsp;</td>
<td width="15"><img src="images/folder-closed.jpg" width="15" height="15" alt="folder-open" /></td>
<td colspan="3"><a id="menuitem_detect" class="vmenu" href="index_api.html#visageVision-d" target="mainFrame" onmouseup="onmouseup_menuitem(event,'menuitem_detect')">Facial Features Detection</a></td>
</tr>
<tr style="display: none;">
<td width="15">&nbsp;</td>
<td width="15">&nbsp;</td>
<td width="15"><img src="images/folder-closed.jpg" width="15" height="15" alt="folder-open" /></td>
<td colspan="2"><a id="menuitem_VisageDetector2Class" class="vmenu" href="VisageDetector.html" target="mainFrame" onmouseup="onmouseup_menuitem(event,'menuitem_VisageDetector2Class')">VisageDetector</a></td>
</tr>
<tr style="display: none;">
<td width="15">&nbsp;</td>
<td width="15">&nbsp;</td>
<td width="15"><img src="images/folder-closed.jpg" width="15" height="15" alt="folder-open" /></td>
<td colspan="2"><a id="menuitem_FaceDataStructVD" class="vmenu" href="FaceData.html" target="mainFrame" onmouseup="onmouseup_menuitem(event,'menuitem_FaceDataStructVD')">FaceData</a></td>
</tr>
<tr style="display: none;">
<td width="15">&nbsp;</td>
<td width="15">&nbsp;</td>
<td width="15"><img src="images/folder-closed.jpg" width="15" height="15" alt="folder-open" /></td>
<td colspan="2"><a id="menuitem_FDPClassVD" class="vmenu" href="FDP.html" target="mainFrame" onmouseup="onmouseup_menuitem(event,'menuitem_FDPClassVD')">FDP</a></td>
</tr>
<tr style="display: none;">
<td width="15">&nbsp;</td>
<td width="15">&nbsp;</td>
<td width="15"><img src="images/folder-closed.jpg" width="15" height="15" alt="folder-open" /></td>
<td colspan="2"><a id="menuitem_FeaturePointStructVD" class="vmenu" href="FeaturePoint.html" target="mainFrame" onmouseup="onmouseup_menuitem(event,'menuitem_FeaturePointStructVD')">FeaturePoint</a></td>
</tr>
<tr style="display: none;">
<td width="15">&nbsp;</td>
<td width="15"><img src="images/folder-closed.jpg" width="15" height="15" alt="folder-open" /></td>
<td colspan="3"><a id="menuitem_analyse" class="vmenu" href="index_api.html#visageVision-a" target="mainFrame" onmouseup="onmouseup_menuitem(event,'menuitem_analyse')">Face Analysis</a></td>
</tr>
<tr style="display: none;">
<td width="15">&nbsp;</td>
<td width="15">&nbsp;</td>
<td width="15"><img src="images/folder-closed.jpg" width="15" height="15" alt="folder-open" /></td>
<td colspan="2"><a id="menuitem_VisageFaceAnalyserClass" class="vmenu" href="VisageFaceAnalyser.html" target="mainFrame" onmouseup="onmouseup_menuitem(event,'menuitem_VisageFaceAnalyserClass')">VisageFaceAnalyser</a></td>
</tr>
<tr style="display: none;">
<td width="15">&nbsp;</td>
<td width="15">&nbsp;</td>
<td width="15"><img src="images/folder-closed.jpg" width="15" height="15" alt="folder-open" /></td>
<td colspan="2"><a id="menuitem_AnalysisDataClass" class="vmenu" href="AnalysisData.html" target="mainFrame" onmouseup="onmouseup_menuitem(event,'menuitem_AnalysisDataClass')">AnalysisData</a></td>
</tr>
<tr style="display: none;">
<td width="15">&nbsp;</td>
<td width="15">&nbsp;</td>
<td width="15"><img src="images/folder-closed.jpg" width="15" height="15" alt="folder-open" /></td>
<td colspan="2"><a id="menuitem_FaceDataStructVFA" class="vmenu" href="FaceData.html" target="mainFrame" onmouseup="onmouseup_menuitem(event,'menuitem_FaceDataStructVFA')">FaceData</a></td>
</tr>
<tr style="display: none;">
<td width="15">&nbsp;</td>
<td width="15"><img src="images/folder-closed.jpg" width="15" height="15" alt="folder-open" /></td>
<td colspan="3"><a id="menuitem_facerec" class="vmenu" href="index_api.html#visageVision-fr" target="mainFrame" onmouseup="onmouseup_menuitem(event,'menuitem_facerec')">Face Recognition</a></td>
</tr>
<tr style="display: none;">
<td width="15">&nbsp;</td>
<td width="15">&nbsp;</td>
<td width="15"><img src="images/folder-closed.jpg" width="15" height="15" alt="folder-open" /></td>
<td colspan="2"><a id="menuitem_VisageFaceRecognitionClass" class="vmenu" href="VisageFaceRecognition.html" target="mainFrame" onmouseup="onmouseup_menuitem(event,'menuitem_VisageFaceRecognitionClass')">VisageFaceRecognition</a></td>
</tr>
<tr style="display: none;">
<td width="15">&nbsp;</td>
<td width="15">&nbsp;</td>
<td width="15"><img src="images/folder-closed.jpg" width="15" height="15" alt="folder-open" /></td>
<td colspan="2"><a id="menuitem_FaceDataStructVFR" class="vmenu" href="FaceData.html" target="mainFrame" onmouseup="onmouseup_menuitem(event,'menuitem_FaceDataStructVFR')">FaceData</a></td>
</tr>
<tr style="display: none;">
<td width="15">&nbsp;</td>
<td width="15"><img src="images/folder-closed.jpg" width="15" height="15" alt="folder-open" /></td>
<td colspan="3"><a id="menuitem_gaze" class="vmenu" href="index_api.html#visageVision-g" target="mainFrame" onmouseup="onmouseup_menuitem(event,'menuitem_gaze')">Screen Space Gaze Tracking</a></td>
</tr>
<tr style="display: none;">
<td width="15">&nbsp;</td>
<td width="15">&nbsp;</td>
<td width="15"><img src="images/folder-closed.jpg" width="15" height="15" alt="folder-open" /></td>
<td colspan="2"><a id="menuitem_VisageGazeTracker" class="vmenu" href="VisageGazeTracker.html" target="mainFrame" onmouseup="onmouseup_menuitem(event,'menuitem_VisageGazeTracker')">VisageGazeTracker</a></td>
</tr>
<tr style="display: none;">
<td width="15">&nbsp;</td>
<td width="15">&nbsp;</td>
<td width="15"><img src="images/folder-closed.jpg" width="15" height="15" alt="folder-open" /></td>
<td colspan="2"><a id="menuitem_FaceDataStructVG" class="vmenu" href="FaceData.html" target="mainFrame" onmouseup="onmouseup_menuitem(event,'menuitem_FaceDataStructVG')">FaceData</a></td>
</tr>
<tr style="display: none;">
<td width="15">&nbsp;</td>
<td width="15">&nbsp;</td>
<td width="15"><img src="images/folder-closed.jpg" width="15" height="15" alt="folder-open" /></td>
<td colspan="2"><a id="menuitem_ScreenSpaceGaze" class="vmenu" href="ScreenSpaceGazeData.html" target="mainFrame" onmouseup="onmouseup_menuitem(event,'menuitem_ScreenSpaceGaze')">ScreenSpaceGazeData</a></td>
</tr>
<tr style="display: none;">
<td width="15">&nbsp;</td>
<td width="15">&nbsp;</td>
<td width="15"><img src="images/folder-closed.jpg" width="15" height="15" alt="folder-open" /></td>
<td colspan="2"><a id="menuitem_FDPClassVG" class="vmenu" href="FDP.html" target="mainFrame" onmouseup="onmouseup_menuitem(event,'menuitem_FDPClassVG')">FDP</a></td>
</tr>
<tr style="display: none;">
<td width="15">&nbsp;</td>
<td width="15">&nbsp;</td>
<td width="15"><img src="images/folder-closed.jpg" width="15" height="15" alt="folder-open" /></td>
<td colspan="2"><a id="menuitem_FeaturePointStructVG" class="vmenu" href="FeaturePoint.html" target="mainFrame" onmouseup="onmouseup_menuitem(event,'menuitem_FeaturePointStructVG')">FeaturePoint</a></td>
</tr>
<tr style="display: none;">
<td width="15">&nbsp;</td>
<td width="15"><img src="images/folder-closed.jpg" width="15" height="15" alt="folder-open" /></td>
<td colspan="3"><a id="menuitem_liveness" class="vmenu" href="index_api.html#visageVision-li" target="mainFrame" onmouseup="onmouseup_menuitem(event,'menuitem_liveness')">Liveness</a></td>
</tr>
<tr style="display: none;">
<td width="15">&nbsp;</td>
<td width="15">&nbsp;</td>
<td width="15"><img src="images/folder-closed.jpg" width="15" height="15" alt="folder-open" /></td>
<td colspan="2"><a id="menuitem_VisageLivenessBlink" class="vmenu" href="VisageLivenessBlink.html" target="mainFrame" onmouseup="onmouseup_menuitem(event,'menuitem_VisageLivenessBlink')">VisageLivenessBlink</a></td>
</tr>
<tr style="display: none;">
<td width="15">&nbsp;</td>
<td width="15">&nbsp;</td>
<td width="15"><img src="images/folder-closed.jpg" width="15" height="15" alt="folder-open" /></td>
<td colspan="2"><a id="menuitem_VisageLivenessSmile" class="vmenu" href="VisageLivenessSmile.html" target="mainFrame" onmouseup="onmouseup_menuitem(event,'menuitem_VisageLivenessSmile')">VisageLivenessSmile</a></td>
</tr>
<tr style="display: none;">
<td width="15">&nbsp;</td>
<td width="15">&nbsp;</td>
<td width="15"><img src="images/folder-closed.jpg" width="15" height="15" alt="folder-open" /></td>
<td colspan="2"><a id="menuitem_VisageLivenessBrowRaise" class="vmenu" href="VisageLivenessBrowRaise.html" target="mainFrame" onmouseup="onmouseup_menuitem(event,'menuitem_VisageLivenessBrowRaise')">VisageLivenessBrowRaise</a></td>
</tr>
<tr style="display: none;">
<td width="15">&nbsp;</td>
<td width="15">&nbsp;</td>
<td width="15"><img src="images/folder-closed.jpg" width="15" height="15" alt="folder-open" /></td>
<td colspan="2"><a id="menuitem_FaceDataStructVL" class="vmenu" href="FaceData.html" target="mainFrame" onmouseup="onmouseup_menuitem(event,'menuitem_FaceDataStructVL')">FaceData</a></td>
</tr>
<tr style="display: none;">
<td width="15">&nbsp;</td>
<td width="15"><img src="images/folder-closed.jpg" width="15" height="15" alt="folder-open" /></td>
<td colspan="3"><a id="menuitem_visageAR" class="vmenu" href="VisageAR.html" target="mainFrame" onmouseup="onmouseup_menuitem(event,'menuitem_visageAR')">VisageAR</a></td>
</tr>
<tr style="display: none;">
<td width="15">&nbsp;</td>
<td width="15"><img src="images/folder-closed.jpg" width="15" height="15" alt="folder-open" /></td>
<td colspan="3"><a id="menuitem_modeling_guide" class="vmenu" href="doc/modeling_guide.pdf" target="mainFrame" onmouseup="onmouseup_menuitem(event,'menuitem_modeling_guide')">Animation & AR Modeling Guide</a></td>
</tr>
<tr>
<td width="15"><img src="images/folder-closed.jpg" width="15" height="15" alt="folder-open" /></td>
<td colspan="4"><a id="menuitem_licence" class="vmenu" href="licensing.html" target="mainFrame" onmouseup="onmouseup_menuitem(event,'menuitem_licence')">Licensing</a></td>
</tr>
<tr style="display: none;">
<td width="15">&nbsp;</td>
<td width="15"><img src="images/folder-open.jpg" width="15" height="15" alt="folder-open" /></td>
<td colspan="2"><a id="menuitem_wrapper-VT_License_Agreement" class="vmenu" href="../VT License Agreement.pdf" target="mainFrame" onmouseup="onmouseup_menuitem(event,'menuitem_wrapper-VT_License_Agreement')">VT License Agreement</a></td>
</tr>
<tr>
<td width="15"><img src="images/folder-closed.jpg" width="15" height="15" alt="folder-open" /></td>
<td colspan="4"><a id="menuitem_references" class="vmenu" href="references.html" target="mainFrame" onmouseup="onmouseup_menuitem(event,'menuitem_references')">References</a></td>
</tr>
<br/>
</table>
</div>
<div id="navigation5">
<img src="images/logo.png" alt="Visage Technologies logo" />
</div>
<script type="text/javascript">
var ITEMLEVEL_OFFSET = 2;
function get_menuitem_by_id( menuitem_id )
{
return document.getElementById( menuitem_id );
}
function get_menuitem_by_rowindex( table, row_index )
{
var itemrow = table.rows[row_index];
for( var ci = 0; ci < itemrow.childNodes.length; ++ci )
{
if( itemrow.childNodes.item(ci).hasChildNodes() &&
itemrow.childNodes.item(ci).firstChild.nodeName == 'A' )
{
return itemrow.childNodes.item(ci).firstChild;
}
}
}
function get_menuitem_level( menuitem )
{
var itemrow = menuitem.parentNode.parentNode;
for( var di = 0; di < itemrow.childNodes.length; ++di )
{
if( itemrow.childNodes.item(di).hasChildNodes() &&
itemrow.childNodes.item(di).firstChild.nodeName == 'IMG' )
return di;
}
return -1;
}
function get_menuitem_icon( menuitem )
{
var itemrow = menuitem.parentNode.parentNode;
for( var di = 0; di < itemrow.childNodes.length; ++di )
{
if( itemrow.childNodes.item(di).hasChildNodes() &&
itemrow.childNodes.item(di).firstChild.nodeName == 'IMG' )
return itemrow.childNodes.item(di).firstChild;
}
return null;
}
function get_menuitem_topitem( menuitem )
{
var table, parent_item, parent_itemlevel;
table = menuitem.parentNode.parentNode.parentNode;
parent_item = menuitem;
parent_itemlevel = 1000;
var cur_item;
for( var ri = 0; ri <= menuitem.parentNode.parentNode.rowIndex; ++ri )
{
cur_item = get_menuitem_by_rowindex( table, ri );
if( get_menuitem_level( cur_item ) <= parent_itemlevel &&
is_child_menuitem( menuitem, cur_item ) )
{
parent_itemlevel = get_menuitem_level( cur_item );
parent_item = cur_item;
}
}
return parent_item;
}
function is_child_menuitem( menuitem, parent_item )
{
if( menuitem == parent_item )
return true; // each item is its own child
var row_index, parent_row_index, itemlevel, parent_itemlevel, table;
row_index = menuitem.parentNode.parentNode.rowIndex;
parent_row_index = parent_item.parentNode.parentNode.rowIndex;
itemlevel = get_menuitem_level( menuitem );
parent_itemlevel = get_menuitem_level( parent_item );
table = menuitem.parentNode.parentNode.parentNode;
if( row_index < parent_row_index ||
itemlevel <= parent_itemlevel )
return false;
var cur_item;
for( var ri = parent_row_index + 1; ri < row_index; ++ri )
{
cur_item = get_menuitem_by_rowindex( table, ri );
if( get_menuitem_level( cur_item ) <= parent_itemlevel )
return false;
}
return true;
}
function open_menuitem( menuitem )
{
var itemimg, itemlevel, table;
itemimg = get_menuitem_icon( menuitem );
itemlevel = get_menuitem_level( menuitem );
table = menuitem.parentNode.parentNode.parentNode;
// display the item itself
menuitem.parentNode.parentNode.style.display = '';
get_menuitem_icon( menuitem ).src = 'images/folder-open.jpg'
// display its subitems
var ri, cur_item, cur_itemlevel;
for( ri = menuitem.parentNode.parentNode.rowIndex + 1; ri < table.rows.length; ++ri )
{
cur_item = get_menuitem_by_rowindex( table, ri );
cur_itemlevel = get_menuitem_level( cur_item );
if( cur_itemlevel == itemlevel + ITEMLEVEL_OFFSET )
{
table.rows[ri].style.display = '';
}
else if( cur_itemlevel <= itemlevel )
{
break;
}
}
}
function close_menuitem( menuitem )
{
var itemimg, itemlevel, table;
itemimg = get_menuitem_icon( menuitem );
itemlevel = get_menuitem_level( menuitem );
table = menuitem.parentNode.parentNode.parentNode;
// set the item's icon to 'closed'
get_menuitem_icon( menuitem ).src = 'images/folder-closed.jpg';
// hide its subitems
var ri, cur_item, cur_itemlevel;
for( ri = menuitem.parentNode.parentNode.rowIndex + 1; ri < table.rows.length; ++ri )
{
cur_item = get_menuitem_by_rowindex( table, ri );
cur_itemlevel = get_menuitem_level( cur_item );
if( cur_itemlevel >= itemlevel + ITEMLEVEL_OFFSET )
{
table.rows[ri].style.display = 'none';
get_menuitem_icon( cur_item ).src = 'images/folder-closed.jpg';
}
else if( cur_itemlevel <= itemlevel )
{
break;
}
}
}
function is_menuitem_open( menuitem )
{
return get_menuitem_icon( menuitem ).src == 'images/folder-open.jpg';
}
function getInternetExplorerVersion()
// Returns the version of Internet Explorer or a -1
// (indicating the use of another browser).
{
var rv = -1; // Return value assumes failure.
if (navigator.appName == 'Microsoft Internet Explorer')
{
var ua = navigator.userAgent;
var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
if (re.exec(ua) != null)
rv = parseFloat( RegExp.$1 );
}
return rv;
}
function onmouseup_menuitem( e, menuitem_id )
{
var lmb_code = 0;
var ver = getInternetExplorerVersion();
if ( ver > -1 && ver < 9)
{
ITEMLEVEL_OFFSET = 1;
lmb_code = 1;
}
if( e.button != lmb_code )
return;
var menuitem, itemlevel, top_item, table;
menuitem = get_menuitem_by_id( menuitem_id );
itemlevel = get_menuitem_level( menuitem );
top_item = get_menuitem_topitem( menuitem );
table = menuitem.parentNode.parentNode.parentNode;
/* TODO: this is a temporary fix for MSIE
if( navigator.appName == 'Microsoft Internet Explorer' )
{
table = menuitem.parentNode.parentNode.parentNode.parentNode;
// open all items
for( ri = 0; ri < table.rows.length; ++ri )
table.rows[ri].style.display = '';
return;
}*/
// open appropriate items
for( ri = 0; ri < table.rows.length; ++ri )
{
cur_item = get_menuitem_by_rowindex( table, ri );
if( is_child_menuitem( menuitem, cur_item ) )
open_menuitem( cur_item );
else
close_menuitem( cur_item );
}
}
</script>
</body>
</html>

View File

@ -0,0 +1,20 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Introduction</title>
<link href="css/main.css" rel="stylesheet" type="text/css" />
</head>
<body>
<h3>References</h3>
<p>
This section provides links to some related documents:<br/>
<a href="doc/VisageTracker Configuration Manual.pdf">VisageTracker Configuration Manual</a> (pdf) <br/>
<a href="doc/Candide3VerticesAndTriangles.png">Candide3 model vertex and triangle numbers illustration</a> (png) <br/>
<a href="doc/modeling_guide.pdf">Animation & AR Modeling Guide</a> (pdf) <br/>
</p>
</body>
</html>

Some files were not shown because too many files have changed in this diff Show More