[Celestia-developers] goto-Bugfix, Mouse-usability
Real-time 3D visualization of space
Status: Beta
Brought to you by:
cjlaurel
From: Harald S. <har...@us...> - 2003-10-30 14:48:43
|
Hi, three independent items in this mail, one bugfix and to suggestions about mouse-control. First, there is a bug in Observer::computeGotoParameters(), which is triggered when celestia is in a "locked" frame (for example: "lock earth-sol") and then goto to the target-object (here: sol) is activated. A new FrameOfReference with coordSys PhaseLock but without the required targetObject is set, which leads to a "warped" (Linux) or a black (Windows) screen. The same bug seems to be in computeGotoParametersGC(), but I am not sure if or how it can be triggered. Solution: either don't touch the frame-of-reference at all if using PhaseLock, or explicitely set it to some other mode (follow?). For the first fix, replace in line 528 (and possibly in 593) of observer.cpp: setFrame(FrameOfReference(frame.coordSys, destination)); with if (frame.coordSys != astro::PhaseLock) { setFrame(FrameOfReference(frame.coordSys, destination)); } ======== Second: Rotating the observer around a planet with right mousebutton while very close to the surface is IMHO much to sensitive, which becomes important with some Virtual Textures (like the Kennedy Space Center-texture). I made a change for CelestiaCore::mouseMove which computes the altitude above the surface for stars and planets and if it is less than the radius the coarseness-factor is multiplied by (alitutude/radius) - this worked pretty good for me (may need some tuning for general taste regarding rotation speed). ======== Third & last: I personally would prefer to have the rotation along the observer-axis (roll? i.e. what is controlled with Keypad 7 & 9) controllable by mouse too. Currently, pressing Left & Right mousebutton with horizontal movements does nothing and can be used for this. One problem with this idea is accidental rotation when changing distance with movements along the vertical axis. To avoid this, I tried using a condition to only rotate when movement along horizontal axis is larger than along the vertical axis. Some people may still not like this, but as for example moving around a planet does easily change the orientation relative to the ecliptic or the equator, many users probably need to readjust it. Chris, I think these changes are small enough to still go in 1.3.1. If you want to check-in (or just test) any of these changes, just tell me which ones and I will mail you the accordingly changed files. Harald |