Ticket #15 (new defect)

Opened 1 year ago

Last modified 1 year ago

Matrix inversion problems in VRJ VNC

Reported by: patrick Assigned to:
Priority: minor Milestone:
Component: VR Juggler Version: HEAD
Keywords: VRJ VNC Cc:
Completion:

Description

There are several problems with tools/vrjvnc in Juggler 2.0 Alpha 3. The attached patch addresses the following:

  1. An update for a change in gmtl's invert/invertFull syntax (the VNCDesktop.cpp in alpha3 does not actually compile with alpha3).
  2. A test to avoid an assertion in VNCDesktop::update().
  3. A correction to the math when dragging the desktop window.

Attachments

VNCDesktop.patch (4.8 kB) - added by patrick on 03/15/07 12:07:33.
patch for modules/vrjuggler/tools/vrjvnc/VNCDesktop.cpp

Change History

03/15/07 12:07:33 changed by patrick

  • attachment VNCDesktop.patch added.

patch for modules/vrjuggler/tools/vrjvnc/VNCDesktop.cpp

03/15/07 18:46:35 changed by patrick

Fixing the compile problems (which are my fault) with the use of gmtl::invertFull() results in a working version of VNCDesktop. Can you explain item #3 in your description in more detail?

03/15/07 18:46:54 changed by patrick

I committed item #2 in your patch to the 2.0 Alpha 2 branch and to the HEAD branch of the 'juggler' module.

03/15/07 18:47:43 changed by patrick

This comment is from Chris Just (who posted the original bug report):

The main problem I saw when trying to drag the desktop window was that, as soon as it was grabbed, it would rapidly fly of into space. It looked to me like the code was calculating the new transformation and then, instead of replacing the old value with the new, it multiplied the old value by the new value. The matrix manipulation is rather hairy in that code, so it's possible I was misinterpretting the intent somehow.

If I recall correctly, I also saw incorrect results (most obvious when rotating the frame) when the user's navigation matrix was not an identity matrix. The frame would appear to rotate around a point offset somewhat from the user's wand. That's what the bits in the patch about the world xform were trying to resolve. At any rate, it worked for me.

03/15/07 18:48:20 changed by patrick

I have hacked around this problem by using gmtl::invertFull_orig() instead of gmtl::invert() (see Revision 1.42 of VNCDesktop.cpp). Something is going wrong in vrjvnc::VNCDesktop that prevents gmtl::invert() from choosing the correct matrix inversion algorithm to use.


Add/Change #15 (Matrix inversion problems in VRJ VNC)




Change Properties
Action