paysages: More UI polishing + top down render preview + configurable preview scaling.

git-svn-id: https://subversion.assembla.com/svn/thunderk/paysages@292 b1fd45b6-86a6-48da-8261-f70d1f35bdcc
This commit is contained in:
Michaël Lemaire 2012-04-12 20:02:31 +00:00 committed by ThunderK
parent 81cbbb9880
commit 6099241ec9
13 changed files with 310 additions and 111 deletions

2
TODO
View file

@ -1,6 +1,6 @@
- Make colorgradation dialog sizable (and reduce minimum size). - Make colorgradation dialog sizable (and reduce minimum size).
- Make all UI more sizable. - Make all UI more sizable.
- Implement scaling and scrolling on previews. - Implement scrolling on previews.
- Add a material editor dialog. - Add a material editor dialog.
- Replace FILE* by a custom type for Save and Load. - Replace FILE* by a custom type for Save and Load.
- Water and terrain LOD moves with the camera, fix it like in the wanderer. - Water and terrain LOD moves with the camera, fix it like in the wanderer.

View file

@ -44,6 +44,7 @@ BasePreview::BasePreview(QWidget* parent) :
this->conf_scroll_ymax = 0.0; this->conf_scroll_ymax = 0.0;
this->conf_scale_min = 1.0; this->conf_scale_min = 1.0;
this->conf_scale_max = 1.0; this->conf_scale_max = 1.0;
this->conf_scale_init = 1.0;
this->conf_scale_step = 0.0; this->conf_scale_step = 0.0;
this->scaling = 1.0; this->scaling = 1.0;
this->xoffset = 0.0; this->xoffset = 0.0;
@ -86,6 +87,21 @@ QColor BasePreview::getColor(double x, double y)
return QColor(0, 0, 0); return QColor(0, 0, 0);
} }
void BasePreview::configScaling(double min, double max, double step, double init)
{
double size = (double)width();
if (size >= 1.0)
{
conf_scale_min = min / size;
conf_scale_max = max / size;
conf_scale_step = step / size;
conf_scale_init = init / size;
scaling = init / size;
redraw();
}
}
void BasePreview::start() void BasePreview::start()
{ {
this->updater->start(); this->updater->start();
@ -121,13 +137,6 @@ void BasePreview::handleRedraw()
lock_drawing->unlock(); lock_drawing->unlock();
} }
void BasePreview::setScaling(double scaling)
{
// TODO Follow conf_scale
this->scaling = scaling;
redraw();
}
void BasePreview::resizeEvent(QResizeEvent* event) void BasePreview::resizeEvent(QResizeEvent* event)
{ {
QImage* image; QImage* image;
@ -207,16 +216,39 @@ void BasePreview::renderPixbuf()
void BasePreview::wheelEvent(QWheelEvent* event) void BasePreview::wheelEvent(QWheelEvent* event)
{ {
double factor;
if (event->modifiers() & Qt::ShiftModifier)
{
factor = 5.0;
}
else if (event->modifiers() & Qt::ControlModifier)
{
factor = 0.2;
}
else
{
factor = 1.0;
}
if (event->orientation() == Qt::Vertical) if (event->orientation() == Qt::Vertical)
{ {
if (event->delta() > 0 && scaling > 0.19) if (event->delta() > 0 && scaling > conf_scale_min)
{ {
scaling -= 0.1; scaling -= conf_scale_step * factor;
if (scaling < conf_scale_min)
{
scaling = conf_scale_min;
}
redraw(); redraw();
} }
else if (event->delta() < 0 && scaling < 10.0) else if (event->delta() < 0 && scaling < conf_scale_max)
{ {
scaling += 0.1; scaling += conf_scale_step * factor;
if (scaling > conf_scale_max)
{
scaling = conf_scale_max;
}
redraw(); redraw();
} }
event->accept(); event->accept();

View file

@ -18,11 +18,11 @@ public:
void doRender(); void doRender();
void redraw(); void redraw();
void setScaling(double scaling);
protected: protected:
virtual void updateData(); virtual void updateData();
virtual QColor getColor(double x, double y); virtual QColor getColor(double x, double y);
void configScaling(double min, double max, double step, double init);
double xoffset; double xoffset;
double yoffset; double yoffset;
@ -56,6 +56,7 @@ private:
double conf_scale_min; double conf_scale_min;
double conf_scale_max; double conf_scale_max;
double conf_scale_init;
double conf_scale_step; double conf_scale_step;
signals: signals:

View file

@ -18,6 +18,8 @@ public:
_noise_original = noise; _noise_original = noise;
_noise_preview = noiseCreateGenerator(); _noise_preview = noiseCreateGenerator();
_level = -1; _level = -1;
configScaling(0.05, 2.0, 0.05, 2.0);
} }
void setLevel(int row) void setLevel(int row)
@ -54,6 +56,8 @@ public:
{ {
_noise_original = noise; _noise_original = noise;
_noise_preview = noiseCreateGenerator(); _noise_preview = noiseCreateGenerator();
configScaling(0.05, 2.0, 0.03, 2.0);
} }
protected: protected:
void updateData() void updateData()
@ -97,12 +101,10 @@ DialogNoise::DialogNoise(QWidget *parent, NoiseGenerator* value):
previewLevel = new PreviewLevel(previews, _current); previewLevel = new PreviewLevel(previews, _current);
previews->layout()->addWidget(new QLabel(tr("Level preview"))); previews->layout()->addWidget(new QLabel(tr("Level preview")));
previews->layout()->addWidget(previewLevel); previews->layout()->addWidget(previewLevel);
previewLevel->setScaling(1.0 / 127.0);
previewLevel->start(); previewLevel->start();
previewTotal = new PreviewTotal(previews, _current); previewTotal = new PreviewTotal(previews, _current);
previews->layout()->addWidget(new QLabel(tr("Total preview"))); previews->layout()->addWidget(new QLabel(tr("Total preview")));
previews->layout()->addWidget(previewTotal); previews->layout()->addWidget(previewTotal);
previewTotal->setScaling(1.0 / 127.0);
previewTotal->start(); previewTotal->start();
form = new QWidget(this); form = new QWidget(this);

View file

@ -17,6 +17,8 @@ public:
{ {
_renderer = rendererCreate(); _renderer = rendererCreate();
_preview_definition = atmosphereCreateDefinition(); _preview_definition = atmosphereCreateDefinition();
configScaling(100.0, 1000.0, 20.0, 200.0);
} }
protected: protected:
QColor getColor(double x, double y) QColor getColor(double x, double y)

View file

@ -21,6 +21,8 @@ public:
_renderer.render_quality = 3; _renderer.render_quality = 3;
_preview_layer = cloudsLayerCreateDefinition(); _preview_layer = cloudsLayerCreateDefinition();
configScaling(100.0, 1000.0, 20.0, 200.0);
} }
protected: protected:
QColor getColor(double x, double y) QColor getColor(double x, double y)
@ -79,6 +81,8 @@ public:
_renderer.maskLight = _maskLight; _renderer.maskLight = _maskLight;
_renderer.customData[0] = &_preview_layer; _renderer.customData[0] = &_preview_layer;
_renderer.customData[1] = &_lighting; _renderer.customData[1] = &_lighting;
configScaling(100.0, 400.0, 20.0, 200.0);
} }
protected: protected:
QColor getColor(double x, double y) QColor getColor(double x, double y)

View file

@ -4,9 +4,91 @@
#include <QMessageBox> #include <QMessageBox>
#include "dialogrender.h" #include "dialogrender.h"
#include "inputcamera.h" #include "inputcamera.h"
#include "tools.h"
#include "../lib_paysages/render.h" #include "../lib_paysages/render.h"
#include "../lib_paysages/scenery.h" #include "../lib_paysages/scenery.h"
/**************** Previews ****************/
class PreviewRenderLandscape:public BasePreview
{
public:
PreviewRenderLandscape(QWidget* parent):BasePreview(parent)
{
_renderer = rendererCreate();
_renderer.applyTextures = _applyTextures;
_renderer.getTerrainHeight = _getTerrainHeight;
_renderer.applyLightingToSurface = _applyLightingToSurface;
_renderer.maskLight = _maskLight;
_renderer.camera_location.x = 0.0;
_renderer.camera_location.y = 50.0;
_renderer.camera_location.z = 0.0;
_terrain = terrainCreateDefinition();
_textures = texturesCreateDefinition();
_lighting = lightingCreateDefinition();
_water = waterCreateDefinition();
_renderer.customData[0] = &_terrain;
_renderer.customData[1] = &_textures;
_renderer.customData[2] = &_lighting;
_renderer.customData[3] = &_water;
configScaling(0.5, 200.0, 1.0, 50.0);
}
protected:
QColor getColor(double x, double y)
{
Vector3 down = {0.0, -1.0, 0.0};
Vector3 location;
double height = terrainGetHeight(&_terrain, x, y);
if (height < _water.height)
{
location.x = x;
location.y = _water.height;
location.z = y;
return colorToQColor(waterGetColor(&_water, &_renderer, location, down));
}
else
{
return colorToQColor(terrainGetColor(&_terrain, &_renderer, x, y, scaling));
}
}
void updateData()
{
sceneryGetTerrain(&_terrain);
sceneryGetLighting(&_lighting);
sceneryGetTextures(&_textures);
sceneryGetWater(&_water);
}
private:
Renderer _renderer;
TerrainDefinition _terrain;
WaterDefinition _water;
TexturesDefinition _textures;
LightingDefinition _lighting;
static double _getTerrainHeight(Renderer* renderer, double x, double z)
{
return terrainGetHeight((TerrainDefinition*)(renderer->customData[0]), x, z);
}
static Color _applyTextures(Renderer* renderer, Vector3 location, double precision)
{
return texturesGetColor((TexturesDefinition*)(renderer->customData[1]), renderer, location, precision);
}
static Color _applyLightingToSurface(Renderer* renderer, Vector3 location, Vector3 normal, SurfaceMaterial material)
{
return lightingApplyToSurface((LightingDefinition*)renderer->customData[2], renderer, location, normal, material);
}
static Color _maskLight(Renderer* renderer, Color light_color, Vector3 at_location, Vector3 light_location, Vector3 direction_to_light)
{
return terrainLightFilter((TerrainDefinition*)(renderer->customData[0]), renderer, light_color, at_location, light_location, direction_to_light);
}
};
/**************** Form ****************/ /**************** Form ****************/
FormRender::FormRender(QWidget *parent) : FormRender::FormRender(QWidget *parent) :
BaseForm(parent, true) BaseForm(parent, true)
@ -20,6 +102,9 @@ FormRender::FormRender(QWidget *parent) :
_renderer_inited = false; _renderer_inited = false;
_preview_landscape = new PreviewRenderLandscape(this);
addPreview(_preview_landscape, QString(tr("Top-down preview")));
addInput(new InputCamera(this, tr("Camera"), &_camera)); addInput(new InputCamera(this, tr("Camera"), &_camera));
addInputInt(tr("Quality"), &_quality, 1, 10, 1, 1); addInputInt(tr("Quality"), &_quality, 1, 10, 1, 1);
addInputInt(tr("Image width"), &_width, 100, 2000, 10, 100); addInputInt(tr("Image width"), &_width, 100, 2000, 10, 100);

View file

@ -33,6 +33,7 @@ private:
CameraDefinition _camera; CameraDefinition _camera;
Renderer _renderer; Renderer _renderer;
bool _renderer_inited; bool _renderer_inited;
BasePreview* _preview_landscape;
}; };
#endif // _PAYSAGES_QT_FORMRENDER_H_ #endif // _PAYSAGES_QT_FORMRENDER_H_

View file

@ -22,6 +22,8 @@ public:
{ {
_renderer = rendererCreate(); _renderer = rendererCreate();
_preview_definition = skyCreateDefinition(); _preview_definition = skyCreateDefinition();
configScaling(0.5, 5.0, 0.5, 2.5);
} }
protected: protected:
QColor getColor(double x, double y) QColor getColor(double x, double y)
@ -29,7 +31,7 @@ protected:
Vector3 eye = {0.0, 0.0, 0.0}; Vector3 eye = {0.0, 0.0, 0.0};
Vector3 look; Vector3 look;
look.x = 100.0; look.x = 1.0;
look.y = -y; look.y = -y;
look.z = x; look.z = x;
@ -52,6 +54,8 @@ public:
{ {
_renderer = rendererCreate(); _renderer = rendererCreate();
_preview_definition = skyCreateDefinition(); _preview_definition = skyCreateDefinition();
configScaling(0.5, 5.0, 0.5, 2.5);
} }
protected: protected:
QColor getColor(double x, double y) QColor getColor(double x, double y)
@ -59,7 +63,7 @@ protected:
Vector3 eye = {0.0, 0.0, 0.0}; Vector3 eye = {0.0, 0.0, 0.0};
Vector3 look; Vector3 look;
look.x = -100.0; look.x = -1.0;
look.y = -y; look.y = -y;
look.z = -x; look.z = -x;

View file

@ -18,6 +18,8 @@ public:
PreviewTerrainHeight(QWidget* parent):BasePreview(parent) PreviewTerrainHeight(QWidget* parent):BasePreview(parent)
{ {
_preview_definition = terrainCreateDefinition(); _preview_definition = terrainCreateDefinition();
configScaling(0.5, 200.0, 1.0, 50.0);
} }
protected: protected:
QColor getColor(double x, double y) QColor getColor(double x, double y)
@ -40,16 +42,54 @@ class PreviewTerrainColor:public BasePreview
public: public:
PreviewTerrainColor(QWidget* parent):BasePreview(parent) PreviewTerrainColor(QWidget* parent):BasePreview(parent)
{ {
LightDefinition light;
TextureLayerDefinition* texture;
_renderer = rendererCreate(); _renderer = rendererCreate();
_renderer.applyTextures = _applyTextures; _renderer.applyTextures = _applyTextures;
_renderer.getTerrainHeight = _getTerrainHeight; _renderer.getTerrainHeight = _getTerrainHeight;
/*_renderer.applyLightingToSurface = _applyLightingToSurface;*/ _renderer.applyLightingToSurface = _applyLightingToSurface;
_renderer.maskLight = _maskLight;
_lighting = lightingCreateDefinition();
light.color.r = 0.7;
light.color.g = 0.7;
light.color.b = 0.7;
light.amplitude = 0.0;
light.direction.x = -0.5;
light.direction.y = -0.7071;
light.direction.z = 0.5;
light.filtered = 0;
light.masked = 1;
light.reflection = 0.0;
lightingAddLight(&_lighting, light);
light.color.r = 0.3;
light.color.g = 0.3;
light.color.b = 0.3;
light.amplitude = 0.0;
light.direction.x = 0.5;
light.direction.y = -0.7071;
light.direction.z = -0.5;
light.filtered = 0;
light.masked = 0;
light.reflection = 0.0;
lightingAddLight(&_lighting, light);
lightingValidateDefinition(&_lighting);
_terrain = terrainCreateDefinition(); _terrain = terrainCreateDefinition();
_textures = texturesCreateDefinition(); _textures = texturesCreateDefinition();
texturesAddLayer(&_textures);
texture = texturesGetLayer(&_textures, 0);
texture->material.base = COLOR_WHITE;
texture->material.reflection = 0.0;
texture->bump_height = 0.0;
texturesLayerValidateDefinition(texture);
_renderer.customData[0] = &_terrain; _renderer.customData[0] = &_terrain;
_renderer.customData[1] = &_textures; _renderer.customData[1] = &_textures;
_renderer.customData[2] = &_lighting;
configScaling(0.5, 200.0, 1.0, 50.0);
} }
protected: protected:
QColor getColor(double x, double y) QColor getColor(double x, double y)
@ -59,12 +99,13 @@ protected:
void updateData() void updateData()
{ {
terrainCopyDefinition(&_definition, &_terrain); terrainCopyDefinition(&_definition, &_terrain);
sceneryGetTextures(&_textures); //sceneryGetTextures(&_textures);
} }
private: private:
Renderer _renderer; Renderer _renderer;
TerrainDefinition _terrain; TerrainDefinition _terrain;
TexturesDefinition _textures; TexturesDefinition _textures;
LightingDefinition _lighting;
static double _getTerrainHeight(Renderer* renderer, double x, double z) static double _getTerrainHeight(Renderer* renderer, double x, double z)
{ {
@ -75,6 +116,16 @@ private:
{ {
return texturesGetColor((TexturesDefinition*)(renderer->customData[1]), renderer, location, precision); return texturesGetColor((TexturesDefinition*)(renderer->customData[1]), renderer, location, precision);
} }
static Color _applyLightingToSurface(Renderer* renderer, Vector3 location, Vector3 normal, SurfaceMaterial material)
{
return lightingApplyToSurface((LightingDefinition*)renderer->customData[2], renderer, location, normal, material);
}
static Color _maskLight(Renderer* renderer, Color light_color, Vector3 at_location, Vector3 light_location, Vector3 direction_to_light)
{
return terrainLightFilter((TerrainDefinition*)(renderer->customData[0]), renderer, light_color, at_location, light_location, direction_to_light);
}
}; };
/**************** Form ****************/ /**************** Form ****************/
@ -86,7 +137,7 @@ FormTerrain::FormTerrain(QWidget *parent):
previewHeight = new PreviewTerrainHeight(this); previewHeight = new PreviewTerrainHeight(this);
previewColor = new PreviewTerrainColor(this); previewColor = new PreviewTerrainColor(this);
addPreview(previewHeight, QString(tr("Height preview (normalized)"))); addPreview(previewHeight, QString(tr("Height preview (normalized)")));
addPreview(previewColor, QString(tr("Textured preview (no shadow)"))); addPreview(previewColor, QString(tr("Lighted preview (no texture)")));
addInputNoise(tr("Noise"), _definition.height_noise); addInputNoise(tr("Noise"), _definition.height_noise);
addInputDouble(tr("Height"), &_definition.height_factor, 0.0, 20.0, 0.1, 1.0); addInputDouble(tr("Height"), &_definition.height_factor, 0.0, 20.0, 0.1, 1.0);

View file

@ -34,6 +34,8 @@ public:
_renderer.customData[0] = &_terrain; _renderer.customData[0] = &_terrain;
_preview_layer = texturesLayerCreateDefinition(); _preview_layer = texturesLayerCreateDefinition();
configScaling(0.5, 200.0, 1.0, 50.0);
} }
protected: protected:
QColor getColor(double x, double y) QColor getColor(double x, double y)
@ -91,15 +93,17 @@ public:
_renderer.camera_location.x = 0.0; _renderer.camera_location.x = 0.0;
_renderer.camera_location.y = 20.0; _renderer.camera_location.y = 20.0;
_renderer.camera_location.z = 0.0; _renderer.camera_location.z = 0.0;
configScaling(0.1, 10.0, 0.1, 1.0);
} }
protected: protected:
QColor getColor(double x, double y) QColor getColor(double x, double y)
{ {
Vector3 location; Vector3 location;
location.x = x * 0.01; location.x = x;
location.y = 0.0; location.y = 0.0;
location.z = y * 0.01; location.z = y;
return colorToQColor(texturesGetLayerColor(&_preview_layer, &_renderer, location, this->scaling * 0.01)); return colorToQColor(texturesGetLayerColor(&_preview_layer, &_renderer, location, this->scaling));
} }
void updateData() void updateData()
{ {

View file

@ -24,6 +24,8 @@ public:
{ {
_water = waterCreateDefinition(); _water = waterCreateDefinition();
_terrain = terrainCreateDefinition(); _terrain = terrainCreateDefinition();
configScaling(0.5, 200.0, 1.0, 50.0);
} }
protected: protected:
QColor getColor(double x, double y) QColor getColor(double x, double y)
@ -77,6 +79,8 @@ public:
_renderer.applyLightingToSurface = _applyLightingToSurface; _renderer.applyLightingToSurface = _applyLightingToSurface;
_renderer.customData[0] = &_water; _renderer.customData[0] = &_water;
_renderer.customData[1] = &_lighting; _renderer.customData[1] = &_lighting;
configScaling(10.0, 1000.0, 10.0, 250.0);
} }
protected: protected:
QColor getColor(double x, double y) QColor getColor(double x, double y)

View file

@ -93,62 +93,62 @@ Cliquez avec le bouton droit sur un point pour le supprimer.</translation>
<context> <context>
<name>DialogNoise</name> <name>DialogNoise</name>
<message> <message>
<location filename="../gui_qt/dialognoise.cpp" line="98"/> <location filename="../gui_qt/dialognoise.cpp" line="102"/>
<source>Level preview</source> <source>Level preview</source>
<translation>Aperçu du composant</translation> <translation>Aperçu du composant</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/dialognoise.cpp" line="103"/> <location filename="../gui_qt/dialognoise.cpp" line="106"/>
<source>Total preview</source> <source>Total preview</source>
<translation>Aperçu du total</translation> <translation>Aperçu du total</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/dialognoise.cpp" line="112"/> <location filename="../gui_qt/dialognoise.cpp" line="114"/>
<source>Noise components</source> <source>Noise components</source>
<translation>Composants du bruit</translation> <translation>Composants du bruit</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/dialognoise.cpp" line="121"/> <location filename="../gui_qt/dialognoise.cpp" line="123"/>
<source>Add component</source> <source>Add component</source>
<translation>Ajouter un composant</translation> <translation>Ajouter un composant</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/dialognoise.cpp" line="125"/> <location filename="../gui_qt/dialognoise.cpp" line="127"/>
<source>Remove component</source> <source>Remove component</source>
<translation>Supprimer un composant</translation> <translation>Supprimer un composant</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/dialognoise.cpp" line="129"/> <location filename="../gui_qt/dialognoise.cpp" line="131"/>
<source>Component height</source> <source>Component height</source>
<translation>Hauteur du composant</translation> <translation>Hauteur du composant</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/dialognoise.cpp" line="141"/> <location filename="../gui_qt/dialognoise.cpp" line="143"/>
<source>Component scaling</source> <source>Component scaling</source>
<translation>Echelle du composant</translation> <translation>Echelle du composant</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/dialognoise.cpp" line="157"/> <location filename="../gui_qt/dialognoise.cpp" line="159"/>
<source>Validate</source> <source>Validate</source>
<translation>Valider</translation> <translation>Valider</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/dialognoise.cpp" line="161"/> <location filename="../gui_qt/dialognoise.cpp" line="163"/>
<source>Reset</source> <source>Reset</source>
<translation>Recommencer</translation> <translation>Recommencer</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/dialognoise.cpp" line="165"/> <location filename="../gui_qt/dialognoise.cpp" line="167"/>
<source>Cancel</source> <source>Cancel</source>
<translation>Annuler</translation> <translation>Annuler</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/dialognoise.cpp" line="169"/> <location filename="../gui_qt/dialognoise.cpp" line="171"/>
<source>Paysages 3D - Noise editor</source> <source>Paysages 3D - Noise editor</source>
<translation>Paysages 3D - Editeur de bruit</translation> <translation>Paysages 3D - Editeur de bruit</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/dialognoise.cpp" line="220"/> <location filename="../gui_qt/dialognoise.cpp" line="222"/>
<source>Component %1</source> <source>Component %1</source>
<translation>Composant %1</translation> <translation>Composant %1</translation>
</message> </message>
@ -220,32 +220,32 @@ Maintenir Ctrl : Plus rapide</translation>
<context> <context>
<name>FormAtmosphere</name> <name>FormAtmosphere</name>
<message> <message>
<location filename="../gui_qt/formatmosphere.cpp" line="62"/> <location filename="../gui_qt/formatmosphere.cpp" line="64"/>
<source>Color preview</source> <source>Color preview</source>
<translation>Aperçu de la couleur</translation> <translation>Aperçu de la couleur</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/formatmosphere.cpp" line="64"/> <location filename="../gui_qt/formatmosphere.cpp" line="66"/>
<source>Start distance</source> <source>Start distance</source>
<translation>Distance de début</translation> <translation>Distance de début</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/formatmosphere.cpp" line="65"/> <location filename="../gui_qt/formatmosphere.cpp" line="67"/>
<source>End distance</source> <source>End distance</source>
<translation>Distance de fin</translation> <translation>Distance de fin</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/formatmosphere.cpp" line="66"/> <location filename="../gui_qt/formatmosphere.cpp" line="68"/>
<source>Masking power</source> <source>Masking power</source>
<translation>Opacité maximale</translation> <translation>Opacité maximale</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/formatmosphere.cpp" line="67"/> <location filename="../gui_qt/formatmosphere.cpp" line="69"/>
<source>Lock color on haze</source> <source>Lock color on haze</source>
<translation>Verrouiller sur la couleur de la brume</translation> <translation>Verrouiller sur la couleur de la brume</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/formatmosphere.cpp" line="68"/> <location filename="../gui_qt/formatmosphere.cpp" line="70"/>
<source>Color</source> <source>Color</source>
<translation>Couleur</translation> <translation>Couleur</translation>
</message> </message>
@ -253,72 +253,72 @@ Maintenir Ctrl : Plus rapide</translation>
<context> <context>
<name>FormClouds</name> <name>FormClouds</name>
<message> <message>
<location filename="../gui_qt/formclouds.cpp" line="145"/> <location filename="../gui_qt/formclouds.cpp" line="149"/>
<source>Layer coverage (no lighting)</source> <source>Layer coverage (no lighting)</source>
<translation>Couverture de la couche (sans éclairage)</translation> <translation>Couverture de la couche (sans éclairage)</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/formclouds.cpp" line="146"/> <location filename="../gui_qt/formclouds.cpp" line="150"/>
<source>Color and lighting</source> <source>Color and lighting</source>
<translation>Echantillon éclairé</translation> <translation>Echantillon éclairé</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/formclouds.cpp" line="148"/> <location filename="../gui_qt/formclouds.cpp" line="152"/>
<source>Start altitude</source> <source>Start altitude</source>
<translation>Altitude de début</translation> <translation>Altitude de début</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/formclouds.cpp" line="149"/> <location filename="../gui_qt/formclouds.cpp" line="153"/>
<source>Max density altitude</source> <source>Max density altitude</source>
<translation>Altitude de densité maximale</translation> <translation>Altitude de densité maximale</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/formclouds.cpp" line="150"/> <location filename="../gui_qt/formclouds.cpp" line="154"/>
<source>End altitude</source> <source>End altitude</source>
<translation>Altitude de fin</translation> <translation>Altitude de fin</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/formclouds.cpp" line="151"/> <location filename="../gui_qt/formclouds.cpp" line="155"/>
<source>Noise</source> <source>Noise</source>
<translation>Bruit</translation> <translation>Bruit</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/formclouds.cpp" line="152"/> <location filename="../gui_qt/formclouds.cpp" line="156"/>
<source>Coverage</source> <source>Coverage</source>
<translation>Couverture</translation> <translation>Couverture</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/formclouds.cpp" line="153"/> <location filename="../gui_qt/formclouds.cpp" line="157"/>
<source>Scaling</source> <source>Scaling</source>
<translation>Echelle</translation> <translation>Echelle</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/formclouds.cpp" line="154"/> <location filename="../gui_qt/formclouds.cpp" line="158"/>
<source>Base color</source> <source>Base color</source>
<translation>Couleur de base</translation> <translation>Couleur de base</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/formclouds.cpp" line="155"/> <location filename="../gui_qt/formclouds.cpp" line="159"/>
<source>Light reflection</source> <source>Light reflection</source>
<translation>Facteur de réflexion de la lumière</translation> <translation>Facteur de réflexion de la lumière</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/formclouds.cpp" line="156"/> <location filename="../gui_qt/formclouds.cpp" line="160"/>
<source>Light reflection shininess</source> <source>Light reflection shininess</source>
<translation>Concentration de la réflexion de lumière</translation> <translation>Concentration de la réflexion de lumière</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/formclouds.cpp" line="157"/> <location filename="../gui_qt/formclouds.cpp" line="161"/>
<source>Transparency depth</source> <source>Transparency depth</source>
<translation>Distance de transparence</translation> <translation>Distance de transparence</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/formclouds.cpp" line="158"/> <location filename="../gui_qt/formclouds.cpp" line="162"/>
<source>Light traversal depth</source> <source>Light traversal depth</source>
<translation>Distance de traversée de la lumière</translation> <translation>Distance de traversée de la lumière</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/formclouds.cpp" line="159"/> <location filename="../gui_qt/formclouds.cpp" line="163"/>
<source>Minimum lighting</source> <source>Minimum lighting</source>
<translation>Eclairage minimal</translation> <translation>Eclairage minimal</translation>
</message> </message>
@ -353,47 +353,52 @@ Maintenir Ctrl : Plus rapide</translation>
<context> <context>
<name>FormRender</name> <name>FormRender</name>
<message> <message>
<location filename="../gui_qt/formrender.cpp" line="23"/> <location filename="../gui_qt/formrender.cpp" line="106"/>
<source>Top-down preview</source>
<translation>Aperçu plongeant</translation>
</message>
<message>
<location filename="../gui_qt/formrender.cpp" line="108"/>
<source>Camera</source> <source>Camera</source>
<translation>Caméra</translation> <translation>Caméra</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/formrender.cpp" line="24"/> <location filename="../gui_qt/formrender.cpp" line="109"/>
<source>Quality</source> <source>Quality</source>
<translation>Qualité de rendu</translation> <translation>Qualité de rendu</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/formrender.cpp" line="25"/> <location filename="../gui_qt/formrender.cpp" line="110"/>
<source>Image width</source> <source>Image width</source>
<translation>Largeur de l&apos;image</translation> <translation>Largeur de l&apos;image</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/formrender.cpp" line="26"/> <location filename="../gui_qt/formrender.cpp" line="111"/>
<source>Image height</source> <source>Image height</source>
<translation>Hauteur de l&apos;image</translation> <translation>Hauteur de l&apos;image</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/formrender.cpp" line="28"/> <location filename="../gui_qt/formrender.cpp" line="113"/>
<source>Start new render</source> <source>Start new render</source>
<translation>Démarrer un rendu</translation> <translation>Démarrer un rendu</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/formrender.cpp" line="30"/> <location filename="../gui_qt/formrender.cpp" line="115"/>
<source>Show last render</source> <source>Show last render</source>
<translation>Voir le dernier rendu</translation> <translation>Voir le dernier rendu</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/formrender.cpp" line="32"/> <location filename="../gui_qt/formrender.cpp" line="117"/>
<source>Save last render</source> <source>Save last render</source>
<translation>Sauvegarder le dernier rendu</translation> <translation>Sauvegarder le dernier rendu</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/formrender.cpp" line="111"/> <location filename="../gui_qt/formrender.cpp" line="196"/>
<source>Choose a filename to save the last render</source> <source>Choose a filename to save the last render</source>
<translation>Choisissez un nom de fichier pour le rendu</translation> <translation>Choisissez un nom de fichier pour le rendu</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/formrender.cpp" line="115"/> <location filename="../gui_qt/formrender.cpp" line="200"/>
<source>The picture %1 has been saved.</source> <source>The picture %1 has been saved.</source>
<translation>L&apos;image %1 a é sauvegardée.</translation> <translation>L&apos;image %1 a é sauvegardée.</translation>
</message> </message>
@ -401,47 +406,47 @@ Maintenir Ctrl : Plus rapide</translation>
<context> <context>
<name>FormSky</name> <name>FormSky</name>
<message> <message>
<location filename="../gui_qt/formsky.cpp" line="84"/> <location filename="../gui_qt/formsky.cpp" line="88"/>
<source>West preview</source> <source>West preview</source>
<translation>Aperçu de l&apos;ouest</translation> <translation>Aperçu de l&apos;ouest</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/formsky.cpp" line="86"/> <location filename="../gui_qt/formsky.cpp" line="90"/>
<source>East preview</source> <source>East preview</source>
<translation>Aperçu de l&apos;est</translation> <translation>Aperçu de l&apos;est</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/formsky.cpp" line="88"/> <location filename="../gui_qt/formsky.cpp" line="92"/>
<source>Day time</source> <source>Day time</source>
<translation>Heure du jour</translation> <translation>Heure du jour</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/formsky.cpp" line="89"/> <location filename="../gui_qt/formsky.cpp" line="93"/>
<source>Sun color</source> <source>Sun color</source>
<translation>Couleur du soleil</translation> <translation>Couleur du soleil</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/formsky.cpp" line="90"/> <location filename="../gui_qt/formsky.cpp" line="94"/>
<source>Sun radius</source> <source>Sun radius</source>
<translation>Diamètre apparent du soleil</translation> <translation>Diamètre apparent du soleil</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/formsky.cpp" line="91"/> <location filename="../gui_qt/formsky.cpp" line="95"/>
<source>Zenith color</source> <source>Zenith color</source>
<translation>Couleur du ciel au zénith</translation> <translation>Couleur du ciel au zénith</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/formsky.cpp" line="92"/> <location filename="../gui_qt/formsky.cpp" line="96"/>
<source>Haze color</source> <source>Haze color</source>
<translation>Couleur de la brume</translation> <translation>Couleur de la brume</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/formsky.cpp" line="93"/> <location filename="../gui_qt/formsky.cpp" line="97"/>
<source>Haze height</source> <source>Haze height</source>
<translation>Hauteur apparente de la brume</translation> <translation>Hauteur apparente de la brume</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/formsky.cpp" line="94"/> <location filename="../gui_qt/formsky.cpp" line="98"/>
<source>Haze smoothing</source> <source>Haze smoothing</source>
<translation>Facteur de lissage de la brume</translation> <translation>Facteur de lissage de la brume</translation>
</message> </message>
@ -449,27 +454,31 @@ Maintenir Ctrl : Plus rapide</translation>
<context> <context>
<name>FormTerrain</name> <name>FormTerrain</name>
<message> <message>
<location filename="../gui_qt/formterrain.cpp" line="88"/> <location filename="../gui_qt/formterrain.cpp" line="139"/>
<source>Height preview (normalized)</source> <source>Height preview (normalized)</source>
<translation>Aperçu de la hauteur (normalisée)</translation> <translation>Aperçu de la hauteur (normalisée)</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/formterrain.cpp" line="89"/>
<source>Textured preview (no shadow)</source> <source>Textured preview (no shadow)</source>
<translation>Aperçu du rendu (sans ombres)</translation> <translation type="obsolete">Aperçu du rendu (sans ombres)</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/formterrain.cpp" line="91"/> <location filename="../gui_qt/formterrain.cpp" line="140"/>
<source>Lighted preview (no texture)</source>
<translation>Aperçu éclairé (sans texture)</translation>
</message>
<message>
<location filename="../gui_qt/formterrain.cpp" line="142"/>
<source>Noise</source> <source>Noise</source>
<translation>Bruit</translation> <translation>Bruit</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/formterrain.cpp" line="92"/> <location filename="../gui_qt/formterrain.cpp" line="143"/>
<source>Height</source> <source>Height</source>
<translation>Hauteur</translation> <translation>Hauteur</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/formterrain.cpp" line="93"/> <location filename="../gui_qt/formterrain.cpp" line="144"/>
<source>Scaling</source> <source>Scaling</source>
<translation>Echelle</translation> <translation>Echelle</translation>
</message> </message>
@ -477,7 +486,7 @@ Maintenir Ctrl : Plus rapide</translation>
<context> <context>
<name>FormTextures</name> <name>FormTextures</name>
<message> <message>
<location filename="../gui_qt/formtextures.cpp" line="128"/> <location filename="../gui_qt/formtextures.cpp" line="132"/>
<source>Coverage preview</source> <source>Coverage preview</source>
<translation>Aperçu de la couverture</translation> <translation>Aperçu de la couverture</translation>
</message> </message>
@ -486,77 +495,77 @@ Maintenir Ctrl : Plus rapide</translation>
<translation type="obsolete">Rendu en couleur</translation> <translation type="obsolete">Rendu en couleur</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/formtextures.cpp" line="129"/> <location filename="../gui_qt/formtextures.cpp" line="133"/>
<source>Lighted sample</source> <source>Lighted sample</source>
<translation>Echantillon éclairé</translation> <translation>Echantillon éclairé</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/formtextures.cpp" line="131"/> <location filename="../gui_qt/formtextures.cpp" line="135"/>
<source>Surface noise</source> <source>Surface noise</source>
<translation>Bruit de surface</translation> <translation>Bruit de surface</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/formtextures.cpp" line="132"/> <location filename="../gui_qt/formtextures.cpp" line="136"/>
<source>Surface noise height</source> <source>Surface noise height</source>
<translation>Hauteur du bruit</translation> <translation>Hauteur du bruit</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/formtextures.cpp" line="133"/> <location filename="../gui_qt/formtextures.cpp" line="137"/>
<source>Surface noise scaling</source> <source>Surface noise scaling</source>
<translation>Echelle du bruit</translation> <translation>Echelle du bruit</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/formtextures.cpp" line="134"/> <location filename="../gui_qt/formtextures.cpp" line="138"/>
<source>Base color</source> <source>Base color</source>
<translation>Couleur de base</translation> <translation>Couleur de base</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/formtextures.cpp" line="135"/> <location filename="../gui_qt/formtextures.cpp" line="139"/>
<source>Light reflection</source> <source>Light reflection</source>
<translation>Réflexion de lumière</translation> <translation>Réflexion de lumière</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/formtextures.cpp" line="136"/> <location filename="../gui_qt/formtextures.cpp" line="140"/>
<source>Light reflection shininess</source> <source>Light reflection shininess</source>
<translation>Concentration de la réflexion de lumière</translation> <translation>Concentration de la lumière réfléchie</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/formtextures.cpp" line="139"/> <location filename="../gui_qt/formtextures.cpp" line="143"/>
<source>Soft minimal height</source> <source>Soft minimal height</source>
<translation>Altitude minimal (adoucie)</translation> <translation>Altitude minimal (adoucie)</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/formtextures.cpp" line="138"/> <location filename="../gui_qt/formtextures.cpp" line="142"/>
<source>Hard minimal height</source> <source>Hard minimal height</source>
<translation>Altitude minimale</translation> <translation>Altitude minimale</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/formtextures.cpp" line="141"/> <location filename="../gui_qt/formtextures.cpp" line="145"/>
<source>Hard maximal height</source> <source>Hard maximal height</source>
<translation>Altitude maximale</translation> <translation>Altitude maximale</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/formtextures.cpp" line="140"/> <location filename="../gui_qt/formtextures.cpp" line="144"/>
<source>Soft maximal height</source> <source>Soft maximal height</source>
<translation>Altitude maximale (adoucie)</translation> <translation>Altitude maximale (adoucie)</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/formtextures.cpp" line="143"/> <location filename="../gui_qt/formtextures.cpp" line="147"/>
<source>Soft minimal slope</source> <source>Soft minimal slope</source>
<translation>Pente minimale (adoucie)</translation> <translation>Pente minimale (adoucie)</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/formtextures.cpp" line="142"/> <location filename="../gui_qt/formtextures.cpp" line="146"/>
<source>Hard minimal slope</source> <source>Hard minimal slope</source>
<translation>Pente minimale</translation> <translation>Pente minimale</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/formtextures.cpp" line="145"/> <location filename="../gui_qt/formtextures.cpp" line="149"/>
<source>Hard maximal slope</source> <source>Hard maximal slope</source>
<translation>Pente maximale</translation> <translation>Pente maximale</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/formtextures.cpp" line="144"/> <location filename="../gui_qt/formtextures.cpp" line="148"/>
<source>Soft maximal slope</source> <source>Soft maximal slope</source>
<translation>Pente maximale (adoucie)</translation> <translation>Pente maximale (adoucie)</translation>
</message> </message>
@ -564,72 +573,72 @@ Maintenir Ctrl : Plus rapide</translation>
<context> <context>
<name>FormWater</name> <name>FormWater</name>
<message> <message>
<location filename="../gui_qt/formwater.cpp" line="173"/> <location filename="../gui_qt/formwater.cpp" line="177"/>
<source>Coverage preview</source> <source>Coverage preview</source>
<translation>Aperçu de la couverture</translation> <translation>Aperçu de la couverture</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/formwater.cpp" line="174"/> <location filename="../gui_qt/formwater.cpp" line="178"/>
<source>Rendered preview (without/with lighting)</source> <source>Rendered preview (without/with lighting)</source>
<translation>Aperçu du rendu (sans/avec éclairage)</translation> <translation>Aperçu du rendu (sans/avec éclairage)</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/formwater.cpp" line="176"/> <location filename="../gui_qt/formwater.cpp" line="180"/>
<source>Height</source> <source>Height</source>
<translation>Hauteur</translation> <translation>Hauteur</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/formwater.cpp" line="177"/> <location filename="../gui_qt/formwater.cpp" line="181"/>
<source>Surface color</source> <source>Surface color</source>
<translation>Couleur de la surface</translation> <translation>Couleur de la surface</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/formwater.cpp" line="178"/> <location filename="../gui_qt/formwater.cpp" line="182"/>
<source>Light reflection</source> <source>Light reflection</source>
<translation>Réflection de la lumière</translation> <translation>Réflection de la lumière</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/formwater.cpp" line="179"/> <location filename="../gui_qt/formwater.cpp" line="183"/>
<source>Shininess to light</source> <source>Shininess to light</source>
<translation>Concentration de la lumière réfléchie</translation> <translation>Concentration de la lumière réfléchie</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/formwater.cpp" line="180"/> <location filename="../gui_qt/formwater.cpp" line="184"/>
<source>Transparency</source> <source>Transparency</source>
<translation>Transparence</translation> <translation>Transparence</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/formwater.cpp" line="181"/> <location filename="../gui_qt/formwater.cpp" line="185"/>
<source>Reflection</source> <source>Reflection</source>
<translation>Reflets</translation> <translation>Reflets</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/formwater.cpp" line="182"/> <location filename="../gui_qt/formwater.cpp" line="186"/>
<source>Transparency distance</source> <source>Transparency distance</source>
<translation>Distance maximale de transparence</translation> <translation>Distance maximale de transparence</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/formwater.cpp" line="183"/> <location filename="../gui_qt/formwater.cpp" line="187"/>
<source>Depth color</source> <source>Depth color</source>
<translation>Couleur en profondeur</translation> <translation>Couleur en profondeur</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/formwater.cpp" line="184"/> <location filename="../gui_qt/formwater.cpp" line="188"/>
<source>Light-through distance</source> <source>Light-through distance</source>
<translation>Distance de filtrage de la lumière</translation> <translation>Distance de filtrage de la lumière</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/formwater.cpp" line="185"/> <location filename="../gui_qt/formwater.cpp" line="189"/>
<source>Waves noise</source> <source>Waves noise</source>
<translation>Bruit des vagues</translation> <translation>Bruit des vagues</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/formwater.cpp" line="186"/> <location filename="../gui_qt/formwater.cpp" line="190"/>
<source>Waves height</source> <source>Waves height</source>
<translation>Hauteur des vagues</translation> <translation>Hauteur des vagues</translation>
</message> </message>
<message> <message>
<location filename="../gui_qt/formwater.cpp" line="187"/> <location filename="../gui_qt/formwater.cpp" line="191"/>
<source>Waves scaling</source> <source>Waves scaling</source>
<translation>Echelle des vagues</translation> <translation>Echelle des vagues</translation>
</message> </message>