Lip File Format: Difference between revisions

From Bohemia Interactive Community
m (Added category.)
(Add female animation list)
 
(6 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{unsupported-doc}}
Lip is a humanly readable text file generated by [[WaveToLip]] from any wss, wav, or ogg sound file and produces lip expressions (lip sync) for the speaking character.
Lip is a humanly readable text file via bis tool [[Wave2Lip]] that analyses a wss or ogg sound file and produces lip sync for the speaking character.
 
<pre>
{{Feature|informative|
frame = 0.040// constant
* The source sound must be mono, 16 bit, to have any meaning in a lip file
0.000, 0 //start time to millisecs, range 0..7
* The lip file must be named the same as the speech sound file for the engine to use it, e.g {{hl|PlayerTaunt.ogg}}, {{hl|PlayerTaunt.lip}}
}}
 
 
== Syntax ==
 
The file begins with the frame step value {{hl|1= frame = <value>}}, e.g {{hl|1= frame = 0.040}} (this value is hardcoded in WaveToLip).
 
{{Feature|informative|This line is inserted by WaveToLip and is not necessary for the file to work.}}
 
It is then followed with lines of {{hl|<timestamp>, <value>}}:
* {{hl|<timestamp>}} is a 3 digits precision float ranging between 0.000 (beginning of the file) and the audio file duration in seconds
* {{hl|<value>}} is an integer ranging between 0 and 7 (included) which corresponds to an animation index in:
: {| class="valign-top"
| <sqf inline>"CfgHeads" >> "Default_A3" >> "Grimaces" >> "Lipsync" >> "vizem"</sqf>
| <spoiler text="Show Male animation list">
* {{hl|A3\Characters_F\Heads\Anim\male\Neutral.rtm}}
* {{hl|A3\Characters_F\Heads\Anim\male\a.rtm}}
* {{hl|A3\Characters_F\Heads\Anim\male\e2.rtm}}
* {{hl|A3\Characters_F\Heads\Anim\male\f.rtm}}
* {{hl|A3\Characters_F\Heads\Anim\male\m.rtm}}
* {{hl|A3\Characters_F\Heads\Anim\male\y.rtm}}
* {{hl|A3\Characters_F\Heads\Anim\male\v.rtm}}
* {{hl|A3\Characters_F\Heads\Anim\male\i.rtm}}
</spoiler>
|-
| <sqf inline>"CfgHeads" >> "WomanHead_A3" >> "Grimaces" >> "Lipsync" >> "vizem"</sqf>
| <spoiler text="Show Female animation list">
* {{hl|A3\Characters_F\Heads\Anim\female\Neutral.rtm}}
* {{hl|A3\Characters_F\Heads\Anim\female\a.rtm}}
* {{hl|A3\Characters_F\Heads\Anim\female\e2.rtm}}
* {{hl|A3\Characters_F\Heads\Anim\female\f.rtm}}
* {{hl|A3\Characters_F\Heads\Anim\female\m.rtm}}
* {{hl|A3\Characters_F\Heads\Anim\female\y.rtm}}
* {{hl|A3\Characters_F\Heads\Anim\female\v.rtm}}
* {{hl|A3\Characters_F\Heads\Anim\female\i.rtm}}
</spoiler>
|}
 
The first timestamp-value line is always {{hl|0.000, 0}}.<br>
The final line is {{hl|<fileDuration>, -1}}, indicating the lip movement's end.
 
<syntaxhighlight lang="cpp">
frame = 0.040
0.000, 0
0.080, 2
0.080, 2
.....
// ...
11.080, -1 //end 11.080 is also length of sound file
11.080, -1
</pre>
</syntaxhighlight>
 


*The range appears to be the various 'mimics' you can have on character's face.
*The last time parm == length of sound file


[[Category:BIS_File_Formats]]
[[Category:Real Virtuality File Formats]]
[[Category:ArmA: File Formats]]
{{GameCategory|arma1|File Formats}}

Latest revision as of 15:20, 8 May 2025

Lip is a humanly readable text file generated by WaveToLip from any wss, wav, or ogg sound file and produces lip expressions (lip sync) for the speaking character.

  • The source sound must be mono, 16 bit, to have any meaning in a lip file
  • The lip file must be named the same as the speech sound file for the engine to use it, e.g PlayerTaunt.ogg, PlayerTaunt.lip


Syntax

The file begins with the frame step value frame = <value>, e.g frame = 0.040 (this value is hardcoded in WaveToLip).

This line is inserted by WaveToLip and is not necessary for the file to work.

It is then followed with lines of <timestamp>, <value>:

  • <timestamp> is a 3 digits precision float ranging between 0.000 (beginning of the file) and the audio file duration in seconds
  • <value> is an integer ranging between 0 and 7 (included) which corresponds to an animation index in:
"CfgHeads" >> "Default_A3" >> "Grimaces" >> "Lipsync" >> "vizem"
  • A3\Characters_F\Heads\Anim\male\Neutral.rtm
  • A3\Characters_F\Heads\Anim\male\a.rtm
  • A3\Characters_F\Heads\Anim\male\e2.rtm
  • A3\Characters_F\Heads\Anim\male\f.rtm
  • A3\Characters_F\Heads\Anim\male\m.rtm
  • A3\Characters_F\Heads\Anim\male\y.rtm
  • A3\Characters_F\Heads\Anim\male\v.rtm
  • A3\Characters_F\Heads\Anim\male\i.rtm
"CfgHeads" >> "WomanHead_A3" >> "Grimaces" >> "Lipsync" >> "vizem"
  • A3\Characters_F\Heads\Anim\female\Neutral.rtm
  • A3\Characters_F\Heads\Anim\female\a.rtm
  • A3\Characters_F\Heads\Anim\female\e2.rtm
  • A3\Characters_F\Heads\Anim\female\f.rtm
  • A3\Characters_F\Heads\Anim\female\m.rtm
  • A3\Characters_F\Heads\Anim\female\y.rtm
  • A3\Characters_F\Heads\Anim\female\v.rtm
  • A3\Characters_F\Heads\Anim\female\i.rtm

The first timestamp-value line is always 0.000, 0.
The final line is <fileDuration>, -1, indicating the lip movement's end.

frame = 0.040
0.000, 0
0.080, 2
// ...
11.080, -1