<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:st1="urn:schemas-microsoft-com:office:smarttags" xmlns="http://www.w3.org/TR/REC-html40">

<head>
<meta http-equiv=Content-Type content="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 11 (filtered medium)">
<!--[if !mso]>
<style>
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style>
<![endif]--><o:SmartTagType
 namespaceuri="urn:schemas-microsoft-com:office:smarttags" name="PostalCode"/>
<o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
 name="City"/>
<o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
 name="Street"/>
<o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
 name="State"/>
<o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
 name="place"/>
<o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
 name="address"/>
<o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
 name="PersonName"/>
<!--[if !mso]>
<style>
st1\:*{behavior:url(#default#ieooui) }
</style>
<![endif]-->
<style>
<!--
 /* Font Definitions */
 @font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman";}
a:link, span.MsoHyperlink
        {color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {color:blue;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-reply;
        font-family:Arial;
        color:navy;}
@page Section1
        {size:8.5in 11.0in;
        margin:1.0in 1.25in 1.0in 1.25in;}
div.Section1
        {page:Section1;}
-->
</style>

</head>

<body lang=EN-US link=blue vlink=blue>

<div class=Section1>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>How fast does your HMD tracker update its
orientation, and how are you retrieving these values?<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>If you’re not getting the values in
realtime at least as fast as OSG is refreshing, then you would definitely have
some jerky movements. And if you’re not getting them this fast, then what
are you interpolating between? If your HMD device is only operating at a
fraction of the OSG update rate, then you need to be using predictive values,
based on the last known trend deltas. You need to be careful here, as you are
approaching territory where the view (OSG) lags noticeably behind the actual
movement (HMD), which I would think would be rather undesirable. That is, the
only way to interpolate between actual data is to wait after the fact; the only
other alternative is to use predicted values to interpolate between until
actual data is available – and this could also cause jerks, if the
prediction period is too long, causing the actual position at the next timestep
to be significantly different than the predicted one used for “smoothing”.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>I find it highly unlikely that your
hardware would be returning values at less than 60 Hz (the typical “target”
framerate for graphical applications), and that it is probably capable of much
higher data rates. Thus, through a combination of efficient access to this data
stream (orientations) and possibly capping the OSG framerate (think v-sync), I
would expect that your HW/SW combination would be able to maintain a smooth
motion without any trouble or additional “smoothing”.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p> </o:p></span></font></p>

<div>

<p class=MsoNormal><b><font size=2 color=navy face=Arial><span
style='font-size:10.0pt;font-family:Arial;color:navy;font-weight:bold'>Matthew
W. Fuesz<o:p></o:p></span></font></b></p>

<p class=MsoNormal><font size=1 color=navy face=Arial><span style='font-size:
7.5pt;font-family:Arial;color:navy'>Software Engineer Asc.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=1 color=navy face=Arial><span style='font-size:
7.5pt;font-family:Arial;color:navy'>Lockheed Martin STS</span></font><font
color=navy><span style='color:navy'><o:p></o:p></span></font></p>

<p class=MsoNormal><st1:Street w:st="on"><st1:address w:st="on"><font size=1
  color=navy face=Arial><span style='font-size:7.5pt;font-family:Arial;
  color:navy'>1210 Massillon Road</span></font></st1:address></st1:Street><font
size=1 color=navy face=Arial><span style='font-size:7.5pt;font-family:Arial;
color:navy'><o:p></o:p></span></font></p>

<p class=MsoNormal><st1:place w:st="on"><st1:City w:st="on"><font size=1
  color=navy face=Arial><span style='font-size:7.5pt;font-family:Arial;
  color:navy'>Akron</span></font></st1:City><font size=1 color=navy face=Arial><span
 style='font-size:7.5pt;font-family:Arial;color:navy'>, <st1:State w:st="on">OH</st1:State>
 <st1:PostalCode w:st="on">44315</st1:PostalCode></span></font></st1:place><font
size=1 color=navy face=Arial><span style='font-size:7.5pt;font-family:Arial;
color:navy'><o:p></o:p></span></font></p>

<p class=MsoNormal><font size=1 color=navy face=Arial><span style='font-size:
7.5pt;font-family:Arial;color:navy'>matthew.fuesz@lmco.com<o:p></o:p></span></font></p>

</div>

<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p> </o:p></span></font></p>

<div>

<div class=MsoNormal align=center style='text-align:center'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>

<hr size=2 width="100%" align=center tabindex=-1>

</span></font></div>

<p class=MsoNormal><b><font size=2 face=Tahoma><span style='font-size:10.0pt;
font-family:Tahoma;font-weight:bold'>From:</span></font></b><font size=2
face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma'>
osg-users-bounces@lists.openscenegraph.org [mailto:osg-users-bounces@lists.openscenegraph.org]
<b><span style='font-weight:bold'>On Behalf Of </span></b>alessandro terenzi<br>
<b><span style='font-weight:bold'>Sent:</span></b> Tuesday, September 30, 2008
1:53 PM<br>
<b><span style='font-weight:bold'>To:</span></b> <st1:PersonName w:st="on">OpenSceneGraph
 Users</st1:PersonName><br>
<b><span style='font-weight:bold'>Subject:</span></b> Re: [osg-users] Smoothing
camera movements from HMD's input</span></font><o:p></o:p></p>

</div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><o:p> </o:p></span></font></p>

<div>

<div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'>Yes, indeed I have a PositionAttitudeTransform node that represent my
virtual camera, and whose attitude is set by HMD's data and later used to
set the camera's view matrix just before calling viewer.frame(). <o:p></o:p></span></font></p>

</div>

<div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'> <o:p></o:p></span></font></p>

</div>

<div>

<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'>So I thuoght to 'animate'
the attitude instead of just setting values from HMD' tracker.<o:p></o:p></span></font></p>

</div>

<div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'>On Tue, Sep 30, 2008 at 7:12 PM, Jim Brooks <<a
href="mailto:jimblist@gmail.com">jimblist@gmail.com</a>> wrote:<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'>>In order to solve this problem, I was thinking about creating an
animation<br>
>path (on the fly) from a previously stored orientation to current head<br>
>orientation. Is this the correct way to proceed? Or there is some other<br>
>technique to smooth the resulting camera movements?<br>
<br>
osg::AnimationPath interpolates across rotations and positions (for smoothing).<br>
See examples/osganimate.<br>
_______________________________________________<br>
osg-users mailing list<br>
<a href="mailto:osg-users@lists.openscenegraph.org">osg-users@lists.openscenegraph.org</a><br>
<a
href="http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org"
target="_blank">http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org</a><o:p></o:p></span></font></p>

</div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><o:p> </o:p></span></font></p>

</div>

</div>

</body>

</html>