https://wiki.reallusion.com/index.php?title=IC_Python_API:RLPy_RIVisemeComponent&feed=atom&action=history
IC Python API:RLPy RIVisemeComponent - Revision history
2024-03-29T06:03:29Z
Revision history for this page on the wiki
MediaWiki 1.26.2
https://wiki.reallusion.com/index.php?title=IC_Python_API:RLPy_RIVisemeComponent&diff=4565&oldid=prev
Chuck (RL) at 03:10, 23 April 2020
2020-04-23T03:10:12Z
<p></p>
<table class='diff diff-contentalign-left'>
<col class='diff-marker' />
<col class='diff-content' />
<col class='diff-marker' />
<col class='diff-content' />
<tr style='vertical-align: top;' lang='en'>
<td colspan='2' style="background-color: white; color:black; text-align: center;">← Older revision</td>
<td colspan='2' style="background-color: white; color:black; text-align: center;">Revision as of 03:10, 23 April 2020</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l7" >Line 7:</td>
<td colspan="2" class="diff-lineno">Line 7:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>This class provides viseme related operations including reading an audio source and creating a viseme clip out of it.  It can also add and remove keys from the viseme clip as well as provide Text-to-Speech capabilities.  A viseme track within the timeline will show viseme clips and mouth shapes (viseme keys).  The lip options track also includes the viseme smooth clip which can be used to smooth out the transition between the different mouth shapes in the event of a lip-sync animation.</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>This class provides viseme related operations including reading an audio source and creating a viseme clip out of it.  It can also add and remove keys from the viseme clip as well as provide Text-to-Speech capabilities.  A viseme track within the timeline will show viseme clips and mouth shapes (viseme keys).  The lip options track also includes the viseme smooth clip which can be used to smooth out the transition between the different mouth shapes in the event of a lip-sync animation.</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>[[File:Rlpy_rivisemecomponent_description_01.png<del class="diffchange diffchange-inline">]]</del></div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>[[File:Rlpy_rivisemecomponent_description_01.png<ins class="diffchange diffchange-inline">|Viseme keys in the </ins>"<ins class="diffchange diffchange-inline">Lips</ins>" <ins class="diffchange diffchange-inline">track</ins>.]<ins class="diffchange diffchange-inline">]</ins></div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div> </div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div></div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline"><syntaxhighlight lang=</del>"<del class="diffchange diffchange-inline">python</del>" <del class="diffchange diffchange-inline">line='line'></del></div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div></div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline"># Get avatar viseme component</del></div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div></div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline">avatar_list = RLPy</del>.<del class="diffchange diffchange-inline">RScene.GetAvatars()</del></div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div></div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline">avatar = avatar_list[0</del>]</div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div></div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline">viseme_component = avatar.GetVisemeComponent()</del></div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div></div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div> </div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div></div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline"># Add viseme key</del></div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div></div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline">Key = RLPy.RVisemeKey()</del></div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div></div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline">key.SetTime(RLPy.RTime(0))</del></div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div></div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline">key.SetID(RLPy.EVisemeID_AH)</del></div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div></div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline">key.SetWeight(50)</del></div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div></div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline">result = viseme_component.AddVisemeKey(key)</del></div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div></div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div> </div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div></div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline"># Remove visemes key</del></div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div></div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline">result = viseme_component.RemoveVisemesKey(key)</del></div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div></div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline"></syntaxhighlight></del></div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>== Member Functions ==</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>== Member Functions ==</div></td></tr>
</table>
Chuck (RL)
https://wiki.reallusion.com/index.php?title=IC_Python_API:RLPy_RIVisemeComponent&diff=4564&oldid=prev
Chuck (RL) at 03:06, 23 April 2020
2020-04-23T03:06:48Z
<p></p>
<a href="https://wiki.reallusion.com/index.php?title=IC_Python_API:RLPy_RIVisemeComponent&diff=4564&oldid=2935">Show changes</a>
Chuck (RL)
https://wiki.reallusion.com/index.php?title=IC_Python_API:RLPy_RIVisemeComponent&diff=2935&oldid=prev
Chuck (RL): Created page with "{{TOC}} {{Parent|IC_Python_API:RL_Python_Modules|Modules}} ==Inheritance== This class inherits public member functions from: *RLPy.RIBase ==Detai..."
2019-03-28T09:37:58Z
<p>Created page with "{{TOC}} {{Parent|IC_Python_API:RL_Python_Modules|Modules}} ==Inheritance== This class inherits public member functions from: *<a href="/IC_Python_API:RLPy_RIBase" title="IC Python API:RLPy RIBase">RLPy.RIBase</a> ==Detai..."</p>
<p><b>New page</b></p><div>{{TOC}}<br />
{{Parent|IC_Python_API:RL_Python_Modules|Modules}}<br />
==Inheritance==<br />
This class inherits public member functions from:<br />
*[[IC_Python_API:RLPy_RIBase|RLPy.RIBase]]<br />
==Detailed Description==<br />
RIVisemeComponent.<br />
<syntaxhighlight lang="Python"><br />
avatar_list = RLPy.RScene.GetAvatars()<br />
avatar = avatar_list[0]<br />
viseme_animator = avatar.GetVisemeComponent()<br />
<br />
#set the RVisemeSmoothOption<br />
viseme_smooth_option = RLPy.RVisemeSmoothOption()<br />
full_enable = True<br />
full_value = 0.3<br />
jaw_enable = True<br />
jaw_value = 0.4<br />
lips_enble = False<br />
lips_value = 0.5<br />
tongue_enble = True<br />
tongue_value = 0.6<br />
self.viseme_smooth_option.SetStrengthEnable(full_enable, jaw_enable, lips_enble, tongue_enble) #bFullEnable, bJawEnable, bLipsEnable, bTongueEnable<br />
self.viseme_smooth_option.SetStrengthValue(full_value, jaw_value, lips_value, tongue_value) #fFull, fJaw, fLips, fTongue<br />
<br />
# load vocal<br />
audio_object = RLPy.RAudio.CreateAudioObject()<br />
audio_object.Load("C:\\sample.wav")<br />
clip_name = "VisemeClip"<br />
clip_start_time = RLPy.RTime(0)<br />
viseme_animator.LoadVocal(audio_object, clip_start_time, clip_name)<br />
viseme_animator.AddVisemeOptionClip(viseme_smooth_option, clip_start_time, clip_name)<br />
<br />
# add viseme clip<br />
clip_name = "VisemeClip"<br />
time_begin = RLPy.RTime(0)<br />
clip_length = RLPy.RTime(1000)<br />
viseme_animator.AddVisemesClip(time_begin, clip_name, clip_length);<br />
<br />
# add viseme key to viseme clip<br />
expressiveness = 50<br />
viseme_animator.AddVisemeKey(RLPy.RTime(100) , RLPy.EVisemeID_AH, expressiveness);<br />
<br />
# remove viseme key<br />
viseme_animator.AddVisemeKey(RLPy.RTime(0) , RLPy.EVisemeID_AH, 50);<br />
viseme_animator.RemoveVisemesKey(RLPy.RTime(0));<br />
<br />
# remove viseme clip<br />
viseme_animator.AddVisemesClip(RLPy.RTime(2000), "Clip1", RLPy.RTime(1000));<br />
viseme_animator.RemoveVisemesClip(RLPy.RTime(2000));<br />
<br />
# get all viseme bones<br />
viseme_bones = viseme_animator.GetVisemeBones();<br />
print(len(viseme_bones))<br />
print(viseme_bones[0].GetName())<br />
<br />
# get all viseme weights<br />
viseme_weights = viseme_animator.GetVisemeMorphWeights();<br />
print(len(viseme_weights))<br />
print(viseme_weights[0])<br />
<br />
# get all viseme keys<br />
keys = viseme_animator.GetVisemeKeys();<br />
print(len(keys))<br />
print(keys[0].GetValue())<br />
print(keys[1].GetValue())<br />
<br />
#get viseme key info<br />
viseme_id = 0 #RLPy.EVisemeID_NONE<br />
viseme_weight = 0<br />
result = viseme_animator.GetVisemeKey(RLPy.RTime(0), viseme_id, viseme_weight);<br />
print(result[0]) #Success or failure<br />
print(result[1]) #viseme id<br />
print(result[2]) #viseme weight<br />
</syntaxhighlight><br />
==Member Functions==<br />
===AddVisemeKey===<br />
<syntaxhighlight lang="Python"><br />
RLPy.RIVisemeComponent.AddVisemeKey ( self, kTime, eVisemeID, fWeight )<br />
</syntaxhighlight><br />
Add a viseme key.<br />
<span style="background:#ffcccc">( Experimental Class )</span><br />
====Parameters====<br />
<div style="margin-left: 2em;"><br />
<br />
'''kTime''' [IN] The time at which to add the key - RLPy.RTime<br />
<br />
'''eVisemeID''' [IN] Type of the viseme ID - RLPy.EVisemeID<br />
*'''RLPy.EVisemeID_NONE'''<br />
*'''RLPy.EVisemeID_EE'''<br />
*'''RLPy.EVisemeID_ER'''<br />
*'''RLPy.EVisemeID_IH'''<br />
*'''RLPy.EVisemeID_AH'''<br />
*'''RLPy.EVisemeID_OH'''<br />
*'''RLPy.EVisemeID_W_OO'''<br />
*'''RLPy.EVisemeID_S_Z'''<br />
*'''RLPy.EVisemeID_CH_J'''<br />
*'''RLPy.EVisemeID_F_V'''<br />
*'''RLPy.EVisemeID_TH'''<br />
*'''RLPy.EVisemeID_T_L_D_N'''<br />
*'''RLPy.EVisemeID_B_M_P'''<br />
*'''RLPy.EVisemeID_K_G_H_NG'''<br />
*'''RLPy.EVisemeID_AE'''<br />
*'''RLPy.EVisemeID_R'''<br />
<br />
'''fWeight''' [IN] Settings of Expressiveness, the range is from 0.0 to 100.0 - float<br />
</div><br />
====Returns====<br />
<div style="margin-left: 2em;">Success or Fail or InvalidParameter - RLPy.RStatus<br />
</div><br />
-----<br />
===AddVisemeOptionClip===<br />
<syntaxhighlight lang="Python"><br />
RLPy.RIVisemeComponent.AddVisemeOptionClip ( self, kSmoothOption, kStartTime, strClipName )<br />
</syntaxhighlight><br />
You can separately adjust the viseme animation strength/smooth for the tongue, lips, and jaw from this function.<br />
====Parameters====<br />
<div style="margin-left: 2em;"><br />
<br />
'''kSmoothOption''' [IN] Settings of Smooth/Strength - RLPy.RVisemeSmoothOption<br />
<br />
'''kStartTime''' [IN] Specifies the start time of the clip - RLPy.RTime<br />
<br />
'''strClipName''' [IN] The name of the clip - string<br />
</div><br />
====Returns====<br />
<div style="margin-left: 2em;">Success or Fail or InvalidParameter - RLPy.RStatus<br />
</div><br />
-----<br />
===AddVisemesClip===<br />
<syntaxhighlight lang="Python"><br />
RLPy.RIVisemeComponent.AddVisemesClip ( self, kTime, nClipName, kClipLength )<br />
</syntaxhighlight><br />
Add a viseme clip.<br />
<span style="background:#ffcccc">( Experimental Class )</span><br />
====Parameters====<br />
<div style="margin-left: 2em;"><br />
<br />
'''kTime''' [IN] Setting of clip's begin time - RLPy.RTime<br />
<br />
'''nClipName''' [IN] Name of the Clip - string<br />
<br />
'''kClipLength''' [IN] Time of clip length, the value must be greater than 0 - RLPy.RTime<br />
</div><br />
====Returns====<br />
<div style="margin-left: 2em;">Success or Fail or InvalidParameter - RLPy.RStatus<br />
</div><br />
-----<br />
===GetVisemeBones===<br />
<syntaxhighlight lang="Python"><br />
RLPy.RIVisemeComponent.GetVisemeBones ( self )<br />
</syntaxhighlight><br />
Get all viseme bones.<br />
<span style="background:#ffcccc">( Experimental Class )</span><br />
====Returns====<br />
<div style="margin-left: 2em;">Pointer to viseme root bone - list<br />
</div><br />
-----<br />
===GetVisemeKey===<br />
<syntaxhighlight lang="Python"><br />
RLPy.RIVisemeComponent.GetVisemeKey ( self, kTime, eVisemeID, fWeight )<br />
</syntaxhighlight><br />
Get viseme key information.<br />
<span style="background:#ffcccc">( Experimental Class )</span><br />
====Parameters====<br />
<div style="margin-left: 2em;"><br />
<br />
'''kTime''' [IN] Time of the key - RLPy.RTime<br />
<br />
'''eVisemeID''' [IN] Type of the viseme ID - RLPy.EVisemeID<br />
*'''RLPy.EVisemeID_NONE'''<br />
*'''RLPy.EVisemeID_EE'''<br />
*'''RLPy.EVisemeID_ER'''<br />
*'''RLPy.EVisemeID_IH'''<br />
*'''RLPy.EVisemeID_AH'''<br />
*'''RLPy.EVisemeID_OH'''<br />
*'''RLPy.EVisemeID_W_OO'''<br />
*'''RLPy.EVisemeID_S_Z'''<br />
*'''RLPy.EVisemeID_CH_J'''<br />
*'''RLPy.EVisemeID_F_V'''<br />
*'''RLPy.EVisemeID_TH'''<br />
*'''RLPy.EVisemeID_T_L_D_N'''<br />
*'''RLPy.EVisemeID_B_M_P'''<br />
*'''RLPy.EVisemeID_K_G_H_NG'''<br />
*'''RLPy.EVisemeID_AE'''<br />
*'''RLPy.EVisemeID_R'''<br />
<br />
'''fWeight''' [IN] Settings of Expressiveness - float<br />
</div><br />
====Returns====<br />
<div style="margin-left: 2em;">Success or Fail or InvalidParameter - RLPy.RStatus<br />
</div><br />
-----<br />
===GetVisemeKeys===<br />
<syntaxhighlight lang="Python"><br />
RLPy.RIVisemeComponent.GetVisemeKeys ( self )<br />
</syntaxhighlight><br />
Get Time of all viseme keys.<br />
<span style="background:#ffcccc">( Experimental Class )</span><br />
====Returns====<br />
<div style="margin-left: 2em;">Time of the key - list<br />
</div><br />
-----<br />
===GetVisemeMorphWeights===<br />
<syntaxhighlight lang="Python"><br />
RLPy.RIVisemeComponent.GetVisemeMorphWeights ( self )<br />
</syntaxhighlight><br />
Get all morph weights of viseme.<br />
<span style="background:#ffcccc">( Experimental Class )</span><br />
====Returns====<br />
<div style="margin-left: 2em;">The value of morph weights - float<br />
</div><br />
-----<br />
===LoadVocal===<br />
<syntaxhighlight lang="Python"><br />
RLPy.RIVisemeComponent.LoadVocal ( self, pAudio, kStartTime, strClipName )<br />
</syntaxhighlight><br />
Import voice source to generate facial/Lips expressions for avatars.<br />
====Parameters====<br />
<div style="margin-left: 2em;"><br />
<br />
'''pAudio''' [IN] Input audio source - RLPy.RIAudioObject<br />
<br />
'''kStartTime''' [IN] Specifies the start time of the clip - RLPy.RTime<br />
<br />
'''strClipName''' [IN] The name of the clip - string<br />
</div><br />
====Return Values====<br />
<div style="margin-left: 2em;"><br />
<br />
'''RLPy.RStatus.Success''' Success<br />
<br />
'''RLPy.RStatus.Failure''' Fail<br />
</div><br />
-----<br />
===RemoveVisemesClip===<br />
<syntaxhighlight lang="Python"><br />
RLPy.RIVisemeComponent.RemoveVisemesClip ( self, kTime )<br />
</syntaxhighlight><br />
Remove viseme clip.<br />
<span style="background:#ffcccc">( Experimental Class )</span><br />
====Parameters====<br />
<div style="margin-left: 2em;"><br />
<br />
'''kTime''' [IN] The time for finding viseme clip - RLPy.RTime<br />
</div><br />
====Returns====<br />
<div style="margin-left: 2em;">Success or Fail or InvalidParameter - RLPy.RStatus<br />
</div><br />
-----<br />
===RemoveVisemesKey===<br />
<syntaxhighlight lang="Python"><br />
RLPy.RIVisemeComponent.RemoveVisemesKey ( self, kTime )<br />
</syntaxhighlight><br />
Remove viseme key.<br />
<span style="background:#ffcccc">( Experimental Class )</span><br />
====Parameters====<br />
<div style="margin-left: 2em;"><br />
<br />
'''kTime''' [IN] The time for finding viseme key - RLPy.RTime<br />
</div><br />
====Returns====<br />
<div style="margin-left: 2em;">Success or Fail or InvalidParameter - RLPy.RStatus<br />
</div></div>
Chuck (RL)