Jump to content

Smoothing with CIGI


photo

Recommended Posts

Hello,

I'd like to know if these CIGI 3.3 settings are currently supported and how they are implemented:

- IGCtrl SmoothingEn

- EntityCtrl SmoothingEn

- RateCtrl : is it necessary to send them for smoothing?

I'm interested in 2.9.0.2  behavior. Does 2.10 improves/changes the behavior?

Cases in point:

- we have a unit test case where setting EntityCtrl SmoothingEn to 1 but having IGCtrl SmoothingEn to 0 freezes the ownship movement (not a crash, just removes movement). But this strange behavior is not seen in the full simulator, so quite strange.

- we have a case where we send CIGI data at 20Hz, with all smoothing enabled and rate ctrl, and still see some stuttering. Sending at 10Hz does not always removes stuttering (framerate is 60Hz rock solid, so not a rendering issue).

- we have a "replay" scenario, where we send data a 5Hz, and we need to see a smooth movement. Currently, no matter the settings, the movement is always "jerky".

Just trying to understand where we should look at for investigation, here.

Thanks!

Link to comment

Hello Stephane,

Sorry for the delay.

As  I understand you want to use asynchronous mode for CIGI with movement interpolation/extrapolation, am I right?

If so, we already implemented async mode in our internal build, and will come in 2.11 (planned for March 2019).

Thanks!

How to submit a good bug report
---
FTP server for test scenes and user uploads:

Link to comment
  • 2 weeks later...

Hi morbid,

Yes, we are using async mode (can't do sync mode, due to constraints of simulator), and micro-stuttering is at the moment the #1 issue we face. Our code doesn't do much at the moment, so it's more or less the same as the default project. The setup is:

  • on the master, the app is running as a small windowed app, with dx, NO quadro Sync II, IG plugin, Syncker plugin as master, and that's all
  • on the slaves, the app is running with fullscreen 1, with GL (otherwise nVidia doesn't respect the frame lock, for whatever reason), Syncker slave, EasyBlend plugin, and that's all (NO ig or cigi plugin here)
Link to comment

In your sample, you are moving the entities from inside the IG update. To better reproduce our issue, I would suggest writing another, independent app, that sends EntityCtrl to the IG for the ownship every 10ms sharp. You can't see the stuttering from another entity.

Link to comment

Hi Stephane,

Every 10ms (100 FPS) or every 10Hz (10 FPS)?
Try to increase interpolation period time:

IG::Manager::setInterpolationPeriod(0.1f /* or even 0.2f - 200ms ! */);

And please type in the console (~, on Master or Slave, it doesn't matter):

syncker_console syncker_interpolation_period 0.1

Got better? Or not?

Best regards,
Alexander

Link to comment

I meant  10ms  (100fps). Sorry if this is a bit confusing, we have a few different cases, indeed. Just to clarify here:

  1. we have replay scenarios, where we "replay" saved data every 200ms, or even 400ms
  2. we have desktop simulations, where we send data every 20ms, and maybe 10ms sometimes
  3. we have full cockpit simulators, with pilot and hardware in the loop, where data is sent every 10ms

Case 1 is in dire need of interpolation/extrapolation in the IG, to have a smoothed movement. Case 2 doesn't have a real pilot in the loop, so smoothing is valid here too. Case 3 has a real pilot, so we must snap as much as possible to the real coords, while still smoothing the displayed movement in-between ticks (if any).

I tried setting the interpolation/extrapolation period to 0.2. I tried the syncker cmds in console, I also tried to deactivate the syncker interpolation altogether (0). I don't see a real change. Note that all slaves don't exibit the same amount of visual stuttering, but it may be a perception glitch on my side, or just the slaves showing more grounds than sky.

Link to comment
×
×
  • Create New...