I'm facing a problem that's really making me mad: i'm using a ProximitySensor to catch user viewpoint position and orientation, and using routes I move a box (that should be representing an hud) in front of the user camera...
This trick is working if the user is not too much far from the "center" of the vrml world (coordinates 0, 0, 0)...but when he starts going away, let's say coordinates in order of 1.000.000, it all starts to flicker, jitter, and other strange behaviour... :(
I need to let the user be able to go that far from the center of the vrml world beacause i'm using geo-vrml to let him navigate through some geo-referenced land representation, and the geovrml creates those nodes at location whose coordinates are in the order of 3-4.000.000, using vrml measure unit.
Here you will find a page with two simple example of what I'm talking about: the vrml code is pretty the same, except for the "main" Transform node, whose translation field is set to 100, 100, 100 for the first one (that in fact is working correctly) and to 1.000.000, 1.000.000, 1.000.000 for the second, the one with the artifacts...
Ah, btw, i'm using the last version of the cortona vrml viewer under windowsXP...
Thank you! :)
ps: if you mind, this is the vrml code...
#VRML V2.0 utf8
# Global objects Transform { translation 100 100 100 # For the example with flickers, the translation is set to this: # translation 1000000 1000000 1000000
# Routes to bind camera to hud ROUTE SENSOR.orientation_changed TO HUD.set_rotation ROUTE SENSOR.position_changed TO HUD.set_translation ROUTE SENSOR.position_changed TO SENSOR.set_center
> I'm facing a problem that's really making me mad: i'm using a ProximitySensor > to catch user viewpoint position and orientation, and using routes I move a > box (that should be representing an hud) in front of the user camera...
> This trick is working if the user is not too much far from the "center" of > the vrml world (coordinates 0, 0, 0)...but when he starts going away, let's > say coordinates in order of 1.000.000, it all starts to flicker, jitter, and > other strange behaviour... :(
> I need to let the user be able to go that far from the center of the vrml > world beacause i'm using geo-vrml to let him navigate through some > geo-referenced land representation, and the geovrml creates those nodes at > location whose coordinates are in the order of 3-4.000.000, using vrml > measure unit.
> Here you will find a page with two simple example of what I'm talking about: > the vrml code is pretty the same, except for the "main" Transform node, whose > translation field is set to 100, 100, 100 for the first one (that in fact is > working correctly) and to 1.000.000, 1.000.000, 1.000.000 for the second, the > one with the artifacts...
> Ah, btw, i'm using the last version of the cortona vrml viewer under > windowsXP...
> Thank you! :)
> ps: if you mind, this is the vrml code...
> #VRML V2.0 utf8
> # Global objects > Transform > { > translation 100 100 100 > # For the example with flickers, the translation is set to this: > # translation 1000000 1000000 1000000
> # Routes to bind camera to hud > ROUTE SENSOR.orientation_changed TO HUD.set_rotation > ROUTE SENSOR.position_changed TO HUD.set_translation > ROUTE SENSOR.position_changed TO SENSOR.set_center
> You could use a HUD or a Layer2D/Layer3D extension node, but it's no > more pure VRML ...
> I had the same problem when I tried to put an object very very close to > the "avatar" ...
Thank you for the quick answer! :) I don't mind if it's not pure VRML, as long as it solve this crazy problem... ;) I'll take a look to this extension nodes...just a question: are these working with every VRML player ? Or are extension implemented only in some viewer ?
In the mean time I've discovered that it should *also* be a problem that deals with the ratio between the dimension of the objects in a scene and the distance of these objects from the world center. In fact, if you try to add a "scale" field to the main Translation node, and set it to let's say 1000, 1000, 1000 the flicker of the hud and of the objects will be almost null...
I'll let you know as soon as I discover something else...thanks again for the help! :)
>> You could use a HUD or a Layer2D/Layer3D extension node, but it's no more >> pure VRML ...
>> I had the same problem when I tried to put an object very very close to the >> "avatar" ...
> Thank you for the quick answer! :) > I don't mind if it's not pure VRML, as long as it solve this crazy problem... > ;) > I'll take a look to this extension nodes...just a question: are these working > with every VRML player ? > Or are extension implemented only in some viewer ?
I think it will work at least with Cortona, BlaxxunContact, and BSContact.
> In the mean time I've discovered that it should *also* be a problem that > deals with the ratio between the dimension of the objects in a scene and the > distance of these objects from the world center. > In fact, if you try to add a "scale" field to the main Translation node, and > set it to let's say 1000, 1000, 1000 the flicker of the hud and of the > objects will be almost null...
> I'll let you know as soon as I discover something else...thanks again for the > help! :)
interesting... i'm not a vrml-'ru like alot of folks on here, but here are some thoughts based on my experience.
i use HUDs alot; I just use, however, the
a.orientation_changed TO a.set_rotation a.position_changed TO a.set_translation
bits. i haven't done the
a.position_changed TO a.set_center
as you have, below. When i loaded up the file you posted, i experienced the same problem you mentioned. However, when i commented out the "set_center" line, it worked fine, until ya' get outside the ProximitySensor's 10-10-10 range, at which point pink box (HUD-thingie) starts fading into the background as well. (which can be fixed by increasing the proximity size... which can lead to its own set of problems...).
here's what i do: All my VRML models are geo/large models as well, with similar coordinates like you mentioned (sounds like your data's in UTM, perhaps? with y-coordinates in excess of 3 million). Here's what i do: place all my models in a Transform node and scale 'em down so they fit in a 10x10x10 box. (i've found this useful for a variety of reasons, including render quality and navigation). ...then i set a reasonable ProximitySensor node size (usually 100x100x100, i think) and it all works fine... no flicker, etc...
it's huge--60+ megs--but you can check out an oldish/drafty sample of what i've done with large/geo models + HUDs at:
> I'm facing a problem that's really making me mad: i'm using a > ProximitySensor to catch user viewpoint position and orientation, and > using routes I move a box (that should be representing an hud) in front > of the user camera...
> This trick is working if the user is not too much far from the "center" > of the vrml world (coordinates 0, 0, 0)...but when he starts going away, > let's say coordinates in order of 1.000.000, it all starts to flicker, > jitter, and other strange behaviour... :(
> I need to let the user be able to go that far from the center of the > vrml world beacause i'm using geo-vrml to let him navigate through some > geo-referenced land representation, and the geovrml creates those nodes > at location whose coordinates are in the order of 3-4.000.000, using > vrml measure unit.
> Here you will find a page with two simple example of what I'm talking > about: the vrml code is pretty the same, except for the "main" Transform > node, whose translation field is set to 100, 100, 100 for the first one > (that in fact is working correctly) and to 1.000.000, 1.000.000, > 1.000.000 for the second, the one with the artifacts...
> Ah, btw, i'm using the last version of the cortona vrml viewer under > windowsXP...
> Thank you! :)
> ps: if you mind, this is the vrml code...
> #VRML V2.0 utf8
> # Global objects > Transform > { > translation 100 100 100 > # For the example with flickers, the translation is set to this: > # translation 1000000 1000000 1000000
> # Routes to bind camera to hud > ROUTE SENSOR.orientation_changed TO HUD.set_rotation > ROUTE SENSOR.position_changed TO HUD.set_translation > ROUTE SENSOR.position_changed TO SENSOR.set_center