From e082fedd1924bb29d63e03863b32518af53c4dbe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Lemaire?= Date: Sun, 5 May 2013 16:42:55 +0000 Subject: [PATCH] paysages: New terrain main form (WIP) git-svn-id: https://subversion.assembla.com/svn/thunderk/paysages@564 b1fd45b6-86a6-48da-8261-f70d1f35bdcc --- TODO | 1 + data/i18n/paysages_fr.ts | 997 ++++++++++++------ data/ui_pictures.qrc | 10 + src/editing/formterrain.cpp | 9 +- src/editing/mainwindow.cpp | 4 + src/editing/paysages-qt.pro | 16 +- src/editing/terrain/dialogterrainpainting.cpp | 12 + src/editing/terrain/dialogterrainpainting.h | 2 + src/editing/terrain/dialogterrainpainting.ui | 102 +- src/editing/terrain/mainterrainform.cpp | 14 + src/editing/terrain/mainterrainform.h | 22 + src/editing/terrain/mainterrainform.ui | 398 +++++++ src/editing/terrain/paintingbrush.cpp | 29 + src/editing/terrain/paintingbrush.h | 2 + src/editing/widgetheightmap.cpp | 4 +- src/editing/widgetheightmap.h | 7 - src/rendering/rendering.pro | 2 + src/rendering/terrain/public.h | 1 + src/rendering/terrain/ter_painting.c | 15 + 19 files changed, 1284 insertions(+), 363 deletions(-) create mode 100644 src/editing/terrain/mainterrainform.cpp create mode 100644 src/editing/terrain/mainterrainform.h create mode 100644 src/editing/terrain/mainterrainform.ui diff --git a/TODO b/TODO index bc79486..038debc 100644 --- a/TODO +++ b/TODO @@ -10,6 +10,7 @@ Technology Preview 2 : => Displacement on 3d explorer and previews. => Optimize ray marching (for tracing and shadows), using base terrain and displacement power. - Fix rendering when inside a cloud layer, with other upper or lower layers. +- Compress and ship bruneton cache data. - Translations. Technlogy Preview 3 : diff --git a/data/i18n/paysages_fr.ts b/data/i18n/paysages_fr.ts index a6a28c2..1209f0a 100644 --- a/data/i18n/paysages_fr.ts +++ b/data/i18n/paysages_fr.ts @@ -4,40 +4,98 @@ BaseForm - + Layers : Niveaux : - + Add layer Ajouter un niveau - + Delete layer Supprimer un niveau - + + + Rename layer + + + + + Move layer upward + + + + + Move layer downward + + + + Apply Appliquer - + + Load preset + + + + + Layer %1 - %2 + + + + + New name: + + + + + Choose a preset + + + + + Preset settings : + + + + Revert Annuler les modifications - Layer %1 - Niveau %1 + Niveau %1 + + + + BaseFormLayer + + + Create layer + + + + + Layer name : + + + + + Unnamed layer + DialogColorGradation - + This is the curve editor for color components. Click on a component preview below to edit it. Click on points and drag them to move them. @@ -50,42 +108,42 @@ Double cliquez sur le fond pour ajouter un point. Cliquez avec le bouton droit sur un point pour le supprimer. - + Red preview, click to edit Aperçu du rouge, cliquer pour éditer - + Green preview, click to edit Aperçu du vert, cliquer pour éditer - + Blue preview, click to edit Aperçu du bleu, cliquez pour éditer - + Final preview Aperçu du gradient final - + Validate Valider - + Revert Recommencer - + Cancel Annuler - + Paysages 3D - Color gradation editor Paysages 3D - Editeur de gradients de couleur @@ -93,7 +151,7 @@ Cliquez avec le bouton droit sur un point pour le supprimer. DialogCurve - + This is the curve editor. Click on points and drag them to move them. Double click to add a new point. @@ -101,22 +159,22 @@ Right click on a point to delete it. - + Validate Valider - + Revert - + Cancel Annuler - + Paysages 3D - Curve editor @@ -124,12 +182,12 @@ Right click on a point to delete it. DialogExplorer - + Paysages 3D - Explore Paysages 3D - Exploration - + COMMANDS Left click : Look around @@ -146,40 +204,67 @@ Maintenir Maj : Plus rapide Maintenir Ctrl : Plus lent - + Reset camera Revenir au point de vue initial - + Validate as render camera Choisir comme caméra de rendu - + Close Fermer - DialogMaterial + DialogLayers - - Validate - Valider - - - - Reset - Recommencer - - - + Cancel Annuler - + + Reset + Recommencer + + + + Validate + Valider + + + + Paysages 3D - + + + + + DialogMaterial + + + Validate + Valider + + + Reset + Recommencer + + + + Cancel + Annuler + + + + Revert + + + + Paysages 3D - Material editor @@ -187,62 +272,91 @@ Maintenir Ctrl : Plus lent DialogNoise - + Level preview Aperçu du composant - + Total preview Aperçu du total - + + Noise function + + + + + Simplex (best) + + + + + Perlin (fast) + + + + + Naive (slow) + + + + + Ridge factor + + + + Noise components Composants du bruit - + Add component Ajouter un composant - + Remove component Supprimer un composant - + Component height Hauteur du composant - + Component scaling Echelle du composant - + + Revert + + + + Validate Valider - Reset - Recommencer + Recommencer - + Cancel Annuler - + Paysages 3D - Noise editor Paysages 3D - Editeur de bruit - + Component %1 Composant %1 @@ -250,16 +364,124 @@ Maintenir Ctrl : Plus lent DialogRender - + Paysages 3D - Render Paysages 3D - Rendu - + + Tone-mapping: + + + + + Uncharted + + + + + Reinhard + + + + + Exposure: + + + + + Save picture + + + + + Paysages 3D - Choose a filename to save the last render + Paysages 3D - Choisissez un nom de fichier pour le rendu + + + + Images (*.png *.jpg) + Images (*.png *.jpg) + + + + The picture %1 has been saved. + L'image %1 a été sauvegardée. + + + + Can't write to file : %1 + + + + %1:%2.%3 + + DialogTerrainPainting + + + Paysages 3D - Terrain painting + + + + + Brush Tool : + + + + + Raise / Lower (F1) + + + + + Add noise / Smooth (F2) + + + + + Flatten terrain (F3) + + + + + Fix discontinuities (F11) + + + + + Restore to default (F12) + + + + + Brush size : + + + + + Brush smoothing : + + + + + Brush strength : + + + + + Brush preview : + + + + + Memory used: %1 + + + DialogWanderer @@ -314,44 +536,89 @@ Maintenir Ctrl : Plus rapide FormAtmosphere - Color preview - Aperçu de la couleur + Aperçu de la couleur - Start distance - Distance de début + Distance de début - End distance - Distance de fin + Distance de fin - Masking power - Opacité maximale - - - - Lock on horizon color - + Opacité maximale Lock color on haze Verrouiller sur la couleur de la brume - Color - Couleur + Couleur + + + + Clear day + + + + + Clear sunset + + + + + Hazy morning + + + + + Foggy + + + + + Stormy + + + + + West preview + Aperçu de l'ouest + + + + East preview + Aperçu de l'est + + + + Day time (hour) + + + + + Day time (minute) + + + + + Sun radius + Diamètre apparent du soleil + + + + Humidity + FormClouds - + Layer coverage (no lighting) Couverture de la couche (sans éclairage) @@ -372,7 +639,7 @@ Maintenir Ctrl : Plus rapide Altitude de fin - + Lower altitude @@ -389,7 +656,7 @@ Maintenir Ctrl : Plus rapide Echelle - + Material @@ -406,77 +673,81 @@ Maintenir Ctrl : Plus rapide Concentration de la réflexion de lumière - + Appearance - + Layer thickness - + Max coverage - - Coverage by altitude - - - - - Altitude in cloud layer - - - - - Coverage value - - - - - Shape noise - - - - + Shape scaling - - Edge noise + + + Cirrus - + + + Cumulus + + + + + + Stratocumulus + + + + + + Stratus + + + + + Clouds model + + + + Edge scaling - + Edge length - + Hardness to light - + Transparency depth Distance de transparence - + Light traversal depth Distance de traversée de la lumière - + Minimum lighting Eclairage minimal @@ -511,22 +782,22 @@ Maintenir Ctrl : Plus rapide FormMaterial - + Base color Couleur de base - + Light reflection - + Light reflection shininess - + Lighting preview @@ -534,64 +805,56 @@ Maintenir Ctrl : Plus rapide FormRender - + Top-down preview Aperçu plongeant - + Camera Caméra - + Quality Qualité de rendu - + Image width Largeur de l'image - + Image height Hauteur de l'image - + Anti aliasing - + Start new render Démarrer un rendu - + Show last render Voir le dernier rendu - Save last render - Sauvegarder le dernier rendu + Sauvegarder le dernier rendu - Paysages 3D - Choose a filename to save the last render - Paysages 3D - Choisissez un nom de fichier pour le rendu + Paysages 3D - Choisissez un nom de fichier pour le rendu - Images (*.png *.jpg) - Images (*.png *.jpg) - - - - Can't write to file : %1 - + Images (*.png *.jpg) Images (*.png, *.jpg) @@ -602,147 +865,89 @@ Maintenir Ctrl : Plus rapide Choisissez un nom de fichier pour le rendu - The picture %1 has been saved. - L'image %1 a été sauvegardée. + L'image %1 a été sauvegardée. FormSky - West preview - Aperçu de l'ouest + Aperçu de l'ouest - East preview - Aperçu de l'est + Aperçu de l'est - - Color model - - - - - Custom model - - - - - Rayleigh/Mie scattering - - - - - Preetham/Shirley analytic model - - - - Day time - Heure du jour + Heure du jour - Sun color - Couleur du soleil + Couleur du soleil - Sun radius - Diamètre apparent du soleil + Diamètre apparent du soleil - - Sun halo radius - - - - - Sun halo profile - - - - - Influence of skydome on lighting - - - - - Turbidity - - - - Zenith color - Couleur du ciel au zénith + Couleur du ciel au zénith - - Distance to center of the sun - - - - - Light influence (halo opacity) - - - - - Auto colors from daytime - - - - Haze color - Couleur de la brume + Couleur de la brume - Haze height - Hauteur apparente de la brume + Hauteur apparente de la brume - Haze smoothing - Facteur de lissage de la brume + Facteur de lissage de la brume FormTerrain - Height preview (normalized) - Aperçu de la hauteur (normalisée) + Aperçu de la hauteur (normalisée) Textured preview (no shadow) Aperçu du rendu (sans ombres) - + Lighted preview (no texture) Aperçu éclairé (sans texture) - Noise - Bruit + Bruit - Height - Hauteur + Hauteur - + + Paint + + + + Scaling Echelle - + + Height modifier + + + + Shadow smoothing @@ -750,33 +955,60 @@ Maintenir Ctrl : Plus rapide FormTextures - + + Rock + + + + + Grass + + + + + Sand + + + + + Snow + + + + Coverage preview Aperçu de la couverture + + + Displacement height + + + + + Displacement scaling + + Colored preview Rendu en couleur - + Lighted sample Echantillon éclairé - Surface noise - Bruit de surface + Bruit de surface - Surface noise height - Hauteur du bruit + Hauteur du bruit - Surface noise scaling - Echelle du bruit + Echelle du bruit Base color @@ -791,55 +1023,47 @@ Maintenir Ctrl : Plus rapide Concentration de la lumière réfléchie - Soft minimal height - Altitude minimal (adoucie) + Altitude minimal (adoucie) - Hard minimal height - Altitude minimale + Altitude minimale - + Material - Hard maximal height - Altitude maximale + Altitude maximale - Soft maximal height - Altitude maximale (adoucie) + Altitude maximale (adoucie) - Soft minimal slope - Pente minimale (adoucie) + Pente minimale (adoucie) - Hard minimal slope - Pente minimale + Pente minimale - Hard maximal slope - Pente maximale + Pente maximale - Soft maximal slope - Pente maximale (adoucie) + Pente maximale (adoucie) FormWater - + Coverage preview Aperçu de la couverture @@ -848,7 +1072,7 @@ Maintenir Ctrl : Plus rapide Aperçu du rendu (sans/avec éclairage) - + Height Hauteur @@ -865,52 +1089,81 @@ Maintenir Ctrl : Plus rapide Concentration de la lumière réfléchie - + Surface material - + Transparency Transparence - + Reflection Reflets - + Transparency distance Distance maximale de transparence - + Depth color Couleur en profondeur - + + Lake surface + + + + + Standard sea + + + + Rendered preview - + Light-through distance Distance de filtrage de la lumière - - Waves noise - Bruit des vagues + + Waves detail + - + + Waves turbulence + + + + + Foam coverage + + + + + Foam material + + + + Waves noise + Bruit des vagues + + + Waves height Hauteur des vagues - + Waves scaling Echelle des vagues @@ -918,12 +1171,12 @@ Maintenir Ctrl : Plus rapide InputBoolean - + Yes Oui - + No Non @@ -931,7 +1184,7 @@ Maintenir Ctrl : Plus rapide InputCamera - + Edit Editer @@ -939,7 +1192,7 @@ Maintenir Ctrl : Plus rapide InputColor - + Edit Editer @@ -947,7 +1200,7 @@ Maintenir Ctrl : Plus rapide InputColorGradation - + Edit Editer @@ -955,15 +1208,28 @@ Maintenir Ctrl : Plus rapide InputCurve - + Edit Editer + + InputLayers + + + Editer + + + + + %1 layers + + + InputMaterial - + Edit Editer @@ -971,7 +1237,7 @@ Maintenir Ctrl : Plus rapide InputNoise - + Edit Editer @@ -979,144 +1245,144 @@ Maintenir Ctrl : Plus rapide MainWindow - + Terrain Terrain - + Textures Textures - + Water Eau - + Atmosphere Atmosphère - + &Load &Ouvrir - + Crtl+L Ctrl+O - + &Explore (F2) &Explorer (F2) - + F2 F2 - + &Quick render (F5) &Rendu rapide (F5) - + F5 F5 - + Camera Caméra - + Do you want to start a new scenery ? Any unsaved changes will be lost. Voulez-vous commencer un nouveau paysage ? Les modifications non sauvegardées seront perdues. - + Paysages 3D - New scenery Paysages 3D - Nouvelle scène - + Paysages 3D - Choose a file to save the scenery Paysages 3D - Choisissez un fichier pour enregistrer la scène - - + + Paysages 3D Scenery (*.p3d) Scène Paysages 3D (*.p3d) - - + + Paysages 3D - File saving error - + Can't write specified file : %1 - + Unexpected error while saving file : %1 - + Do you want to load a scenery from file ? Any unsaved changes will be lost. Voulez-vous charger une scène ? Les modifications non sauvegardées seront perdues. - + Paysages 3D - Load scenery Paysages 3D - Charger une scène - + Paysages 3D - Choose a scenery file to load Paysages 3D - Choisissez un fichier de scène à charger - - - - + + + + Paysages 3D - File loading error - + Can't read specified file : %1 - + This file doesn't look like a Paysages 3D file : %1 - + This file was created with an incompatible Paysages 3D version : %1 - + Unexpected error while loading file : %1 - + A 3D landscape editing and rendering software. Authors : @@ -1130,12 +1396,11 @@ GLib - http://www.gtk.org/ - Sky - Ciel + Ciel - + Clouds Nuages @@ -1144,7 +1409,7 @@ GLib - http://www.gtk.org/ Eclairage - + Render Rendu @@ -1153,22 +1418,22 @@ GLib - http://www.gtk.org/ &Scène - + &New &Nouveau - + Crtl+N Ctrl+N - + &Save &Sauvegarder - + Crtl+S Ctrl+S @@ -1205,7 +1470,7 @@ GLib - http://www.gtk.org/ Ai&de - + &About &A propos @@ -1226,7 +1491,7 @@ GLib - http://www.gtk.org/ Voulez-vous charger un paysage ? Les modifications nons sauvegardées seront perdues. - + Paysages 3D Paysages 3D @@ -1241,4 +1506,136 @@ Crédits : Développement - Michaël LEMAIRE + + PreviewCloudsCoverage + + + Perspective + + + + + PreviewRenderLandscape + + + Clouds + Nuages + + + + PreviewWaterColor + + + Background + + + + + None + + + + + Grid + + + + + Sinusoid + + + + + Light reflection + + + + + PreviewWaterCoverage + + + Coverage highlight + + + + + QObject + + + <strong>Left click</strong>: raise terrain<br><br><strong>Right click</strong>: lower terrain + + + + + <strong>Left click</strong>: add random noise to terrain<br><br><strong>Right click</strong>: smooth details + + + + + <strong>Left click</strong>: flatten at height picked with right click<br><br><strong>Right click</strong>: pick height at center + + + + + <strong>Left click</strong>: fix discontinuities in slope + + + + + <strong>Left click</strong>: cancel all modifications on terrain + + + + + %1 GB + + + + + %1 MB + + + + + %1 kB + + + + + %1 B + + + + + WidgetExplorer + + + + Please wait while loading scene... + + + + + WidgetGlobalFormButtons + + + Form + + + + + Cancel + Annuler + + + + Revert modifications + + + + + Validate + Valider + + diff --git a/data/ui_pictures.qrc b/data/ui_pictures.qrc index 3c3d55b..189785a 100644 --- a/data/ui_pictures.qrc +++ b/data/ui_pictures.qrc @@ -3,5 +3,15 @@ images/apply.png images/cancel.png images/revert.png + images/explore.png + images/render.png + + + images/tab_atmosphere.png + images/tab_clouds.png + images/tab_render.png + images/tab_terrain.png + images/tab_textures.png + images/tab_water.png diff --git a/src/editing/formterrain.cpp b/src/editing/formterrain.cpp index 36579c3..b5a1967 100644 --- a/src/editing/formterrain.cpp +++ b/src/editing/formterrain.cpp @@ -3,7 +3,6 @@ #include #include #include "tools.h" -#include "dialogheightmap.h" #include "terrain/dialogterrainpainting.h" #include "rendering/scenery.h" @@ -78,11 +77,9 @@ void FormTerrain::configChangeEvent() void FormTerrain::startPainting() { DialogTerrainPainting* dialog = new DialogTerrainPainting(this, _definition); - dialog->exec(); - delete dialog; - - /*if (DialogHeightMap::editHeightMap(this, _definition)) + if (dialog->exec()) { configChangeEvent(); - }*/ + } + delete dialog; } diff --git a/src/editing/mainwindow.cpp b/src/editing/mainwindow.cpp index 977cdc1..9b7f10a 100644 --- a/src/editing/mainwindow.cpp +++ b/src/editing/mainwindow.cpp @@ -20,6 +20,8 @@ #include "formwater.h" #include "formrender.h" +#include "terrain/mainterrainform.h" + #include "dialogrender.h" #include "dialogexplorer.h" @@ -92,6 +94,8 @@ QMainWindow(parent) QObject::connect(form, SIGNAL(configApplied()), this, SLOT(refreshAll()), Qt::QueuedConnection); _forms.append(form); + tabs->addTab(new MainTerrainForm(tabs), QIcon(getDataPath("images/tab_terrain.png")), tr("Landscape shape")); + form = new FormTextures(tabs); tabs->addTab(form, QIcon(getDataPath("images/tab_textures.png")), tr("Textures")); QObject::connect(form, SIGNAL(configApplied()), this, SLOT(refreshAll()), Qt::QueuedConnection); diff --git a/src/editing/paysages-qt.pro b/src/editing/paysages-qt.pro index 41f89b4..c87076f 100644 --- a/src/editing/paysages-qt.pro +++ b/src/editing/paysages-qt.pro @@ -1,3 +1,7 @@ +isEmpty(PROJECT_PATH) { +PROJECT_PATH = ../.. +} + TEMPLATE = app CONFIG += qt QT += core gui opengl @@ -19,9 +23,6 @@ win32:LIBS += ../libpaysages.a ../libpaysages_exploring.a -lDevIL -lILU -lILUT - TRANSLATIONS = $$PROJECT_PATH/data/i18n/paysages_fr.ts -#system(lupdate paysages-qt.pro) -#system(lrelease $$TRANSLATIONS) - HEADERS += \ widgetheightmap.h \ widgetexplorer.h \ @@ -65,7 +66,8 @@ HEADERS += \ baseexplorerchunk.h \ terrain/dialogterrainpainting.h \ common/widgetglobalformbuttons.h \ - terrain/paintingbrush.h + terrain/paintingbrush.h \ + terrain/mainterrainform.h SOURCES += \ widgetheightmap.cpp \ @@ -110,11 +112,13 @@ SOURCES += \ baseexplorerchunk.cpp \ terrain/dialogterrainpainting.cpp \ common/widgetglobalformbuttons.cpp \ - terrain/paintingbrush.cpp + terrain/paintingbrush.cpp \ + terrain/mainterrainform.cpp FORMS += \ terrain/dialogterrainpainting.ui \ - common/widgetglobalformbuttons.ui + common/widgetglobalformbuttons.ui \ + terrain/mainterrainform.ui RESOURCES += \ ../../data/ui_pictures.qrc diff --git a/src/editing/terrain/dialogterrainpainting.cpp b/src/editing/terrain/dialogterrainpainting.cpp index 5041ed7..79bf742 100644 --- a/src/editing/terrain/dialogterrainpainting.cpp +++ b/src/editing/terrain/dialogterrainpainting.cpp @@ -42,6 +42,7 @@ void DialogTerrainPainting::revert() void DialogTerrainPainting::brushConfigChanged() { + QLabel* label; QComboBox* combobox; QSlider* slider; @@ -68,6 +69,11 @@ void DialogTerrainPainting::brushConfigChanged() } // Update brush description + label = findChild("label_brush_description"); + if (label) + { + label->setText(getHelpText()); + } // Update brush preview @@ -96,3 +102,9 @@ void DialogTerrainPainting::heightmapChanged() } } } + +QString DialogTerrainPainting::getHelpText() +{ + QString result = _brush.getHelpText(); + return result; +} diff --git a/src/editing/terrain/dialogterrainpainting.h b/src/editing/terrain/dialogterrainpainting.h index d45b9da..74d546d 100644 --- a/src/editing/terrain/dialogterrainpainting.h +++ b/src/editing/terrain/dialogterrainpainting.h @@ -24,6 +24,8 @@ public slots: void revert(); private: + QString getHelpText(); + Ui::DialogTerrainPainting *ui; TerrainDefinition* _terrain_modified; diff --git a/src/editing/terrain/dialogterrainpainting.ui b/src/editing/terrain/dialogterrainpainting.ui index b1fb372..85a4e0c 100644 --- a/src/editing/terrain/dialogterrainpainting.ui +++ b/src/editing/terrain/dialogterrainpainting.ui @@ -6,8 +6,8 @@ 0 0 - 912 - 619 + 949 + 618 @@ -31,7 +31,7 @@ - + 1 0 @@ -166,10 +166,28 @@ - + + + + 0 + 100 + + + + QFrame::Panel + + + QFrame::Sunken + { Brush information } + + Qt::RichText + + + true + 20 @@ -188,7 +206,7 @@ - + 200 @@ -318,22 +336,6 @@ - - input_brush_size - valueChanged(int) - DialogTerrainPainting - brushConfigChanged() - - - 676 - 67 - - - 437 - 72 - - - input_brush_smoothing valueChanged(int) @@ -350,6 +352,22 @@ + + input_brush_mode + currentIndexChanged(int) + DialogTerrainPainting + brushConfigChanged() + + + 752 + 42 + + + 437 + 40 + + + input_brush_strength valueChanged(int) @@ -367,18 +385,18 @@ - input_brush_mode - currentIndexChanged(int) + input_brush_size + valueChanged(int) DialogTerrainPainting brushConfigChanged() - 752 - 42 + 676 + 67 437 - 40 + 72 @@ -398,22 +416,6 @@ - - widget_4 - okClicked() - DialogTerrainPainting - accept() - - - 816 - 593 - - - 683 - 615 - - - widget_4 cancelClicked() @@ -430,6 +432,22 @@ + + widget_4 + okClicked() + DialogTerrainPainting + accept() + + + 816 + 593 + + + 683 + 615 + + + widget_4 revertClicked() diff --git a/src/editing/terrain/mainterrainform.cpp b/src/editing/terrain/mainterrainform.cpp new file mode 100644 index 0000000..f173d46 --- /dev/null +++ b/src/editing/terrain/mainterrainform.cpp @@ -0,0 +1,14 @@ +#include "mainterrainform.h" +#include "ui_mainterrainform.h" + +MainTerrainForm::MainTerrainForm(QWidget *parent) : + QWidget(parent), + ui(new Ui::MainTerrainForm) +{ + ui->setupUi(this); +} + +MainTerrainForm::~MainTerrainForm() +{ + delete ui; +} diff --git a/src/editing/terrain/mainterrainform.h b/src/editing/terrain/mainterrainform.h new file mode 100644 index 0000000..b4d6e84 --- /dev/null +++ b/src/editing/terrain/mainterrainform.h @@ -0,0 +1,22 @@ +#ifndef MAINTERRAINFORM_H +#define MAINTERRAINFORM_H + +#include + +namespace Ui { +class MainTerrainForm; +} + +class MainTerrainForm : public QWidget +{ + Q_OBJECT + +public: + explicit MainTerrainForm(QWidget *parent = 0); + ~MainTerrainForm(); + +private: + Ui::MainTerrainForm *ui; +}; + +#endif // MAINTERRAINFORM_H diff --git a/src/editing/terrain/mainterrainform.ui b/src/editing/terrain/mainterrainform.ui new file mode 100644 index 0000000..e106eed --- /dev/null +++ b/src/editing/terrain/mainterrainform.ui @@ -0,0 +1,398 @@ + + + MainTerrainForm + + + + 0 + 0 + 1073 + 662 + + + + Form + + + + + + + 15 + + + QLayout::SetDefaultConstraint + + + + + Infinite base shape + + + + + + + + + Generate base noise + + + false + + + + + + + + 1 + 0 + + + + + 0 + 80 + + + + + 16777215 + 150 + + + + + + + + + groupBox_1 + widget + + + + + + Manual modifications + + + + + + + + + + 0 + 0 + + + + Sculpt the terrain shape + + + + + + + + 0 + 0 + + + + { heightmap info } + + + + + + + + + + + + + Global modifiers + + + false + + + + + + <html><head/><body><p><span style=" font-style:italic;">These modifiers change the base shape and manual modifications altogether</span></p></body></html> + + + Qt::RichText + + + + + + + + + + Scaling + + + + + + + + 400 + 16777215 + + + + Qt::Horizontal + + + + + + + Height + + + + + + + + 400 + 16777215 + + + + Qt::Horizontal + + + + + + + + + + + + + Rendering control + + + + + + + + + Shadow smoothing + + + + + + + + 400 + 16777215 + + + + Qt::Horizontal + + + + + + + + + + + + + Links to other modules + + + + + + + + + Relative water height + + + + + + + + 400 + 16777215 + + + + Qt::Horizontal + + + + + + + + + + + 0 + 0 + + + + + 500 + 16777215 + + + + Go to textures to add small height displacements (rocks...) + + + + + + + + + + + + + Qt::Vertical + + + + + + + + + Result preview + + + + + + + 0 + 0 + + + + + 200 + 200 + + + + + 200 + 200 + + + + + + + + Render preview + + + + :/buttons/logo/images/render.png:/buttons/logo/images/render.png + + + + + + + Explore in 3D + + + + :/buttons/logo/images/explore.png:/buttons/logo/images/explore.png + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + Actions + + + + + + Revert modifications + + + + :/buttons/logo/images/revert.png:/buttons/logo/images/revert.png + + + + + + + Apply modifications + + + + :/buttons/logo/images/apply.png:/buttons/logo/images/apply.png + + + + + + + + + + + + + BasePreview + QWidget +
basepreview.h
+ 1 +
+
+ + + + +
diff --git a/src/editing/terrain/paintingbrush.cpp b/src/editing/terrain/paintingbrush.cpp index 4ec7830..8f18651 100644 --- a/src/editing/terrain/paintingbrush.cpp +++ b/src/editing/terrain/paintingbrush.cpp @@ -8,6 +8,7 @@ PaintingBrush::PaintingBrush() _size = 0.0; _smoothing = 0.0; _strength = 0.0; + _height = 0.0; _noise = noiseCreateGenerator(); noiseAddLevelsSimple(_noise, 10, 1.0, -0.5, 0.5, 0.5); } @@ -79,6 +80,24 @@ void PaintingBrush::drawPreview(QWidget* widget) } +QString PaintingBrush::getHelpText() +{ + switch (_mode) + { + case PAINTING_BRUSH_RAISE: + return QObject::tr("Left click: raise terrain

Right click: lower terrain"); + case PAINTING_BRUSH_SMOOTH: + return QObject::tr("Left click: add random noise to terrain

Right click: smooth details"); + case PAINTING_BRUSH_FLATTEN: + return QObject::tr("Left click: flatten at height picked with right click

Right click: pick height at center"); + case PAINTING_BRUSH_FIX_DISCONTINUITIES: + return QObject::tr("Left click: fix discontinuities in slope"); + case PAINTING_BRUSH_RESTORE: + return QObject::tr("Left click: cancel all modifications on terrain"); + } + return QString(""); +} + void PaintingBrush::applyToTerrain(TerrainDefinition* terrain, double x, double z, double duration, bool reverse) { double brush_strength; @@ -111,6 +130,16 @@ void PaintingBrush::applyToTerrain(TerrainDefinition* terrain, double x, double terrainBrushAddNoise(terrain->height_map, &brush, _noise, brush_strength * 0.5); } break; + case PAINTING_BRUSH_FLATTEN: + if (reverse) + { + _height = terrainGetInterpolatedHeight(terrain, x, z, 1); + } + else + { + terrainBrushFlatten(terrain->height_map, &brush, _height, brush_strength); + } + break; case PAINTING_BRUSH_RESTORE: terrainBrushReset(terrain->height_map, &brush, brush_strength); break; diff --git a/src/editing/terrain/paintingbrush.h b/src/editing/terrain/paintingbrush.h index dfcd51c..2adf874 100644 --- a/src/editing/terrain/paintingbrush.h +++ b/src/editing/terrain/paintingbrush.h @@ -32,6 +32,7 @@ public: double getInfluence(double relative_x, double relative_z); void drawPreview(QWidget* widget); + QString getHelpText(); void applyToTerrain(TerrainDefinition* terrain, double x, double z, double duration, bool reverse); @@ -40,6 +41,7 @@ private: double _size; double _smoothing; double _strength; + double _height; NoiseGenerator* _noise; }; diff --git a/src/editing/widgetheightmap.cpp b/src/editing/widgetheightmap.cpp index 74898da..2a7120c 100644 --- a/src/editing/widgetheightmap.cpp +++ b/src/editing/widgetheightmap.cpp @@ -462,12 +462,12 @@ void WidgetHeightMap::scrollTopCamera(double dx, double dz) { if (dx != 0.0) { - _target_x += dx; + _target_x += dx * _zoom * 0.05; } if (dz != 0.0) { - _target_z += dz; + _target_z += dz * _zoom * 0.05; } } diff --git a/src/editing/widgetheightmap.h b/src/editing/widgetheightmap.h index f6ba181..64a8781 100644 --- a/src/editing/widgetheightmap.h +++ b/src/editing/widgetheightmap.h @@ -16,13 +16,6 @@ typedef struct int painted; } _VertexInfo; -typedef enum -{ - HEIGHTMAP_BRUSH_RAISE = 0, - HEIGHTMAP_BRUSH_SMOOTH = 1, - HEIGHTMAP_BRUSH_RESTORE = 2 -} HeightMapBrushMode; - class WidgetHeightMap : public QGLWidget { Q_OBJECT diff --git a/src/rendering/rendering.pro b/src/rendering/rendering.pro index 9d3468e..c371d24 100644 --- a/src/rendering/rendering.pro +++ b/src/rendering/rendering.pro @@ -124,3 +124,5 @@ unix:!symbian { } INSTALLS += target } + +FORMS += diff --git a/src/rendering/terrain/public.h b/src/rendering/terrain/public.h index 1fcd994..1670870 100644 --- a/src/rendering/terrain/public.h +++ b/src/rendering/terrain/public.h @@ -81,6 +81,7 @@ void terrainBrushElevation(TerrainHeightMap* heightmap, TerrainBrush* brush, dou void terrainBrushSmooth(TerrainHeightMap* heightmap, TerrainBrush* brush, double value); void terrainBrushAddNoise(TerrainHeightMap* heightmap, TerrainBrush* brush, NoiseGenerator* generator, double value); void terrainBrushReset(TerrainHeightMap* heightmap, TerrainBrush* brush, double value); +void terrainBrushFlatten(TerrainHeightMap* heightmap, TerrainBrush* brush, double height, double force); void terrainEndBrushStroke(TerrainHeightMap* heightmap); #ifdef __cplusplus diff --git a/src/rendering/terrain/ter_painting.c b/src/rendering/terrain/ter_painting.c index 1d320bf..95878ac 100644 --- a/src/rendering/terrain/ter_painting.c +++ b/src/rendering/terrain/ter_painting.c @@ -508,6 +508,21 @@ void terrainBrushElevation(TerrainHeightMap* heightmap, TerrainBrush* brush, dou _applyBrush(heightmap, brush, value, NULL, _applyBrushElevation); } +static double _applyBrushFlatten(TerrainHeightMap* heightmap, TerrainBrush* brush, double x, double z, double basevalue, double influence, double force, void* data) +{ + UNUSED(heightmap); + UNUSED(brush); + UNUSED(data); + + double ideal = *((double*)data); + return basevalue + (ideal - basevalue) * influence * force; +} + +void terrainBrushFlatten(TerrainHeightMap* heightmap, TerrainBrush* brush, double height, double force) +{ + _applyBrush(heightmap, brush, force, &height, _applyBrushFlatten); +} + static double _applyBrushSmooth(TerrainHeightMap* heightmap, TerrainBrush* brush, double x, double z, double basevalue, double influence, double force, void* data) { UNUSED(data);