FhSim  3.1.0
Marine systems simulation
Loading...
Searching...
No Matches
EnvironmentSettings.h
1#pragma once
2#include <fhsim/simobject/ISimObjectCreator.h>
3#include "seafloorForces/SeafloorForces.h"
4
5#include <fhsim_environment/ScalarField.h>
6#include <marenv/current/ConstantCurrent.h>
7#include <marenv/seafloor/BathymetryField.h>
8#include <marenv/seafloor/BathymetryWaves.h>
9#include <marenv/wave/LinearWaveTheory.h>
10#include <marenv/wave/WaveEnergySpectrum.h>
11#include <marenv/wave/WaveField.h>
12#include <string>
13#include <vector>
14namespace visual
15{
25{
34 SkyMaterialSpec(std::string material, std::string texture, SkyType type = BOX)
35 : material(std::move(material))
36 , texture(std::move(texture))
37 {
38 this->type = type;
39 }
41 std::string material = "";
43 std::string texture = "";
46};
47
54{
55public:
63
70
75 EnvironmentSettings(ISimObjectCreator* creator);
76
78 std::shared_ptr<marenv::wave::WaveField> waves;
80 std::shared_ptr<marenv::seafloor::BathymetryWaves> bathymetry;
82 std::shared_ptr<marenv::seafloor::BathymetryField> seafloor;
84 double seafloorMinDepth = 0.0;
86 double seafloorMaxDepth = 0.0;
88 std::shared_ptr<marenv::current::CurrentField> currents;
90 std::vector<std::shared_ptr<environment::field::ScalarField>> scalarFields;
92 std::shared_ptr<environment::SeafloorForces> seafloorForces;
93
97 std::string OceanMaterial();
101 std::string OceansidesMaterial();
105 std::string SeafloorMaterial();
115 bool visualizeWaves = false;
117 std::vector<int> vertexCounts = {100, 130};
119 double worldRadius = 1000.0;
124
125private:
131 SkyMaterialSpec ReadSkySpec(ISimObjectCreator* creator);
133 std::string m_sky;
135 std::map<std::string, SkyMaterialSpec> m_skyMaterials;
137 SkyMaterialSpec m_skyMaterial;
138};
139} // namespace visual
Definition EnvironmentSettings.h:54
std::vector< std::shared_ptr< environment::field::ScalarField > > scalarFields
Named scalar fields (temperature, salinity, species concentration). Empty when none are configured.
Definition EnvironmentSettings.h:90
double worldRadius
World rendering radius [m].
Definition EnvironmentSettings.h:119
std::shared_ptr< marenv::wave::WaveField > waves
Wave field for rendering.
Definition EnvironmentSettings.h:78
std::shared_ptr< environment::SeafloorForces > seafloorForces
Seafloor forces.
Definition EnvironmentSettings.h:92
std::string SeafloorMaterial()
VisualQuality
Visual quality levels.
Definition EnvironmentSettings.h:58
@ Fair
Fair rendering (medium quality)
Definition EnvironmentSettings.h:60
@ Nice
Nice rendering (high quality)
Definition EnvironmentSettings.h:61
@ Fast
Fast rendering (low quality)
Definition EnvironmentSettings.h:59
int randomSeed
Random seed.
Definition EnvironmentSettings.h:121
EnvironmentSettings(ISimObjectCreator *creator)
std::shared_ptr< marenv::current::CurrentField > currents
Current field.
Definition EnvironmentSettings.h:88
double seafloorMinDepth
Minimum seabed depth over the visual domain [m] (sampled from the active field).
Definition EnvironmentSettings.h:84
std::string OceansidesMaterial()
double seafloorMaxDepth
Maximum seabed depth over the visual domain [m] (sampled from the active field).
Definition EnvironmentSettings.h:86
int visualQuality
Visual quality level.
Definition EnvironmentSettings.h:123
std::vector< int > vertexCounts
Vertex counts [u, v].
Definition EnvironmentSettings.h:117
std::shared_ptr< marenv::seafloor::BathymetryWaves > bathymetry
Sum-of-sines bathymetry (used for visualization; also the seabed for the "SumOfSines" model)
Definition EnvironmentSettings.h:80
VisualQuality QualityFromInt(int quality)
SkyMaterialSpec SkySpec()
bool visualizeWaves
Enable wave visualization.
Definition EnvironmentSettings.h:115
std::shared_ptr< marenv::seafloor::BathymetryField > seafloor
Active seabed used for physics queries (may be sum-of-sines or a parametric field)
Definition EnvironmentSettings.h:82
Visualization utilities.
Definition EnvironmentSettings.h:15
SkyType
Sky rendering types.
Definition EnvironmentSettings.h:18
@ DOME
Dome sky rendering.
Definition EnvironmentSettings.h:19
@ BOX
Box sky rendering (default)
Definition EnvironmentSettings.h:21
@ PLANE
Plane sky rendering.
Definition EnvironmentSettings.h:20
Sky material specification.
Definition EnvironmentSettings.h:25
std::string material
Material name.
Definition EnvironmentSettings.h:41
std::string texture
Texture name.
Definition EnvironmentSettings.h:43
SkyType type
Sky type.
Definition EnvironmentSettings.h:45
SkyMaterialSpec(std::string material, std::string texture, SkyType type=BOX)
Definition EnvironmentSettings.h:34
SkyMaterialSpec()
Default-constructs an empty sky material spec.
Definition EnvironmentSettings.h:27