Bug 1230 - Tracking mount fails when instances contain offsets
Summary: Tracking mount fails when instances contain offsets
Status: RESOLVED FIXED
Alias: None
Product: DIRSIG4
Classification: Unclassified
Component: Platform (show other bugs)
Version: 4.7.1-release
Hardware: Other Other
: P5 blocker
Assignee: Scott D. Brown
URL:
Depends on:
Blocks:
 
Reported: 2016-08-26 11:48 EDT by Michael Gartley
Modified: 2016-09-07 15:25 EDT (History)
0 users

See Also:


Attachments
modified version of platform file to track moving truck instead (1.39 KB, text/plain)
2016-08-26 11:48 EDT, Michael Gartley
Details
modified version of platform file to track moving truck instead (4.16 KB, text/plain)
2016-08-26 11:48 EDT, Michael Gartley
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Michael Gartley 2016-08-26 11:48:00 EDT
Created attachment 385 [details]
modified version of platform file to track moving truck instead

There is an issue with the tracking mount that seems to be best summarized as:
  When objects other than the specific object referenced by the tracking mount have a non-zero translation, instance they affect the ability of the tracking mount to work correctly.

Example:

TrackingMount1 demo scenario with two changes:

  1. demo.platform: change the mount target from "EnemyFighter" to 
  "EnemyTruck" in order to track the moving truck

  2. tracking.glist: change the translation of the EnemyFighter object
  from <point><x>0</x><y>0</y><z>0</z></point> to
  <point><x>2000</x><y>5000</y><z>0</z></point>

the result is the tracking mount pointing points to a non-nonsensical location.

The only way I can get the tracking mount to correctly track a moving object, is to ensure that *all* instances of *all* other objects have 0,0,0 translation. 

I have attached a ZIP archive of the 2 modifications of TrackingMount1 demo scene.
Comment 1 Michael Gartley 2016-08-26 11:48:41 EDT
Created attachment 386 [details]
modified version of platform file to track moving truck instead
Comment 2 Michael Gartley 2016-08-29 10:42:28 EDT
I tried a few earlier versions of DIRSIG on the network, and DIRSIG-4.7.0 seems to work correctly (tracking not influenced by other scene geometry), but DIRSIG-4.7.1 has the same errant behavior as 4.7.2

i.e. a change between 4.7.0 and 4.7.1 is the likely culprit
Comment 3 Scott D. Brown 2016-09-07 08:16:26 EDT
In March I added some code to handle tracking instances that were buried in an instancing stack. That was r16554, which would have been between 4.7.0 and 4.7.1, which agrees with your testing. I must have somehow introduced the bug at that time. I'm looking into it right now.
Comment 4 Scott D. Brown 2016-09-07 09:05:45 EDT
There was a tragic flaw in the recursive traversal of the geometry that would essentially accumulate the transforms of all the instances it checked before finding the named geometry. So technically not every instance needed to be an identity transform, just the all ones before we found the one we were looking for. :)

Testing a fix now.
Comment 5 Scott D. Brown 2016-09-07 15:25:15 EDT
Fixed confirmed and will be available in the 4.7.2 final release.