Mantis - Croquet
Viewing Issue Advanced Details
265 Jasmine minor always 10-06-04 03:18 12-30-04 19:25
jlombardi  
Croqueteer  
normal  
resolved  
fixed  
none    
none  
0000265: Pointer ray not tracking closely
When selecting the mirror halo, the pointer does not track the yellow selection cube closely enough as one rotates or moves the mirror.

Notes
(0000475)
andreas   
10-19-04 10:00   
Please check to see if this is still a problem (DAS fixed a number of things here). If not, please describe what "not tracking closely enough" means (how close is close enough?)
(0000483)
jlombardi   
10-19-04 19:15   
I just did an update and the problem still exists. By "not tracking closely enough" I mean that when you grab the top of the mirror and drag the mirror back and forth, the pointer lags behind so that the red arrowhead appears to be moving in a very jerky and imprecise way. It would be far better if the refresh on the arrow was the same as the refresh on the movement of the window. This way users could percieve other user's manipulations more accurately. Doing so will be important to maintaining a quality of experience for users engaged in collaborative interaction involving manipulation of objects in a scene.
(0000484)
andreas   
10-20-04 06:59   
I see. The problem is clearly in TAvatar>>pointerTransform:. Something in the computation is wrong but it converges after a few cycles. I can't quite figure out where the problem is since usually the changes are too small to see anything interesting. I'm assigning this to DAS - he wrote the code originally so I'm sure he can figure out what's wrong.
(0000994)
Croqueteer   
12-30-04 19:25   
This was due to the laser transform using the previous pointer transform values. Note that there is still something of an issue here, as the laser pick position is often recalculated by the target object - for example the TWindow - which will sometimes generate what appears to be a slightly incorrect value during a pointer move event. This is because the TWindow (for example) will generate another pick event on pseudo-objects like a cylinder in the case of rotation or a plane in the case of translation. Also note that by definition, we compute the object the real pointer is looking at during render time and display the resulting laser position and length during the following render.