Durk has suggested that I repeat some of my screenshot tips,
as we need stunning new screenshots for the flightgear.org
website. (What I write isn't binding, as I don't do this in
any official function.)
(1) contents: Obviously, screenshots should focus on new
features/scenery/aircraft. Those should be generally
available, ideally from our repository, but at least
freely downloadable on the net under GPL compatible
license terms. Please no aircraft etc. that are proprietary
or unreleased.
(2) quality:
- use highest feasible filter settings (antialiasing, etc)
- hide frame rater counter, menu, dialogs (unless they
are part of what you want to demonstrate)
- use realistic scenarios: no 747 approach to the Nimitz etc.
- avoid the display of fgfs shortcomings: no rain in cockpits,
no cloud artifacts, no floating aircraft, no transparency
problems. (Yes, that's cheating. But people know that any
software (apart from TeX :-) has bugs, and demonstrating
bugs is not the purpose of our screenshots.)
- please understand that, in case there are *many* submissions,
Curt has to choose the better ones. (Unfortunately, that's
not usually one of our main problems. ;-)
(3) legal matters: though there's no official decision yet about
which license the screenshots should be under, the outcome
of a recent discussion implies that the rules set out under
http://wiki.flightgear.org/index.php/Submitting_Screenshots
should be valid. (A review by the FSFE -- the Free Software
Foundation Europe is still pending.)
No exceptions, please! Distribute your screenshots *yourself*
under whichever license you want, but accept that FlightGear
distributes them under these terms. Otherwise don't submit
any. (Unless Curt decides otherwise, of course.)
(4) tools: Some older systems don't run well with high-quality
filter settings. People with such systems can use the attached
script to work around that:
- save it to ~/.fgfs/Nasal/ (create this dir if necessary)
- create a directory ~/.fgfs/Export/
- run fgfs "normally", find good motive, pause, press Ctrl-q
to save an XML snapshot of the situation
- re-run flightgear with that situation and with antialiasing
etc. turned on:
$ fgfs --aircraft=ufo ~/.fgfs/Export/snapshot-KSFO-bo105-1.xml
- find perfect sun angle, weather, perspective, then make
the screenshot with F3
m.
# Utility that writes XML snapshots of current aircraft
position/orientation/state,
# which can then be reloaded for taking high-quality screenshots using the UFO
# as viewer, and with aliasing at maximum values. This is useful for systems
with
# slower graphics hardware, where highest filter settings lower the frame rate
too
# much to take good screenshots.
#
# (1) make sure ~/.fgfs/Export/ directory exists
# (2) run fgfs and make snapshots with Ctrl-q
# (3) reload snapshots to make screenshots:
# $ fgfs --aircraft=ufo ~/.fgfs/Export/snapshot-KSFO-bo105-1.xml
settimer(func {
setlistener("/devices/status/keyboard/event", func(event) {
var e = event.getValues();
if (e.pressed and e.modifier.ctrl and e.key == 17)
dump_aircraft_snapshot();
});
}, 0);
# returns unique filename matching a sprintf pattern containing one %d
#
var uniquefilename = func(format) {
for (var i = 1; i; i += 1) {
var name = sprintf(format, i);
if (io.stat(name) == nil)
return name;
}
}
var dump_aircraft_snapshot = func {
var ac = getprop("/sim/aircraft");
var apt = airportinfo().id;
var path = getprop("/sim/fg-home") ~ "/Export/";
var filename = uniquefilename(path ~ "snapshot-" ~ apt ~ "-" ~ ac ~
"-%d.xml");
var data = props.Node.new();
var lat = getprop("/position/latitude-deg");
var lon = getprop("/position/longitude-deg");
var alt = getprop("/position/altitude-ft");
var m = data.getNode("sim/presets", 1);
m.getNode("latitude-deg", 1).setDoubleValue(lat);
m.getNode("longitude-deg", 1).setDoubleValue(lon);
m.getNode("altitude-ft", 1).setDoubleValue(alt);
var m = data.getNode("position", 1);
m.getNode("latitude-deg", 1).setDoubleValue(lat);
m.getNode("longitude-deg", 1).setDoubleValue(lon);
m.getNode("altitude-ft", 1).setDoubleValue(alt);
var m = data.getNode("models/model", 1);
m.getNode("path", 1).setValue(getprop("/sim/model/path"));
m.getNode("latitude-deg", 1).setDoubleValue(lat);
m.getNode("longitude-deg", 1).setDoubleValue(lon);
m.getNode("elevation-ft", 1).setDoubleValue(alt);
m.getNode("heading-deg",
1).setDoubleValue(getprop("/orientation/heading-deg"));
m.getNode("pitch-deg",
1).setDoubleValue(getprop("/orientation/pitch-deg"));
m.getNode("roll-deg",
1).setDoubleValue(getprop("/orientation/roll-deg"));
var g = props.globals;
props.copy(g.getNode("sim/model", 1), data.getNode("sim/model", 1));
props.copy(g.getNode("surface-positions", 1),
data.getNode("surface-positions", 1));
props.copy(g.getNode("controls", 1), data.getNode("controls", 1));
props.copy(g.getNode("engines", 1), data.getNode("engines", 1));
props.copy(g.getNode("rotors", 1), data.getNode("rotors", 1));
props.copy(g.getNode("gear", 1), data.getNode("gear", 1));
data.getNode("sim/model").removeChild("path", 0);
io.write_properties(filename, data);
print("snapshot written to ", filename);
gui.popupTip("snapshot written to " ~ filename, 4);
}
------------------------------------------------------------------------------
_______________________________________________
Flightgear-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/flightgear-devel