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 <marenv/current/ConstantCurrent.h>
6#include <marenv/seafloor/BathymetryField.h>
7#include <marenv/seafloor/BathymetryWaves.h>
8#include <marenv/wave/LinearWaveTheory.h>
9#include <marenv/wave/WaveEnergySpectrum.h>
10#include <marenv/wave/WaveField.h>
11#include <string>
12#include <vector>
13namespace visual
14{
24{
33 SkyMaterialSpec(std::string material, std::string texture, SkyType type = BOX)
34 : material(std::move(material))
35 , texture(std::move(texture))
36 {
37 this->type = type;
38 }
40 std::string material = "";
42 std::string texture = "";
45};
46
53{
54public:
62
69
74 EnvironmentSettings(ISimObjectCreator* creator);
75
77 std::shared_ptr<marenv::wave::WaveField> waves;
79 std::shared_ptr<marenv::seafloor::BathymetryWaves> bathymetry;
81 std::shared_ptr<marenv::seafloor::BathymetryField> seafloor;
83 double seafloorMinDepth = 0.0;
85 double seafloorMaxDepth = 0.0;
87 std::shared_ptr<marenv::current::CurrentField> currents;
89 std::shared_ptr<environment::SeafloorForces> seafloorForces;
90
94 std::string OceanMaterial();
98 std::string OceansidesMaterial();
102 std::string SeafloorMaterial();
112 bool visualizeWaves = false;
114 std::vector<int> vertexCounts = {100, 130};
116 double worldRadius = 3000.0;
121
122private:
128 SkyMaterialSpec ReadSkySpec(ISimObjectCreator* creator);
130 std::string m_sky;
132 std::map<std::string, SkyMaterialSpec> m_skyMaterials;
134 SkyMaterialSpec m_skyMaterial;
135};
136} // namespace visual
Definition EnvironmentSettings.h:53
double worldRadius
World rendering radius [m].
Definition EnvironmentSettings.h:116
std::shared_ptr< marenv::wave::WaveField > waves
Wave field for rendering.
Definition EnvironmentSettings.h:77
std::shared_ptr< environment::SeafloorForces > seafloorForces
Seafloor forces.
Definition EnvironmentSettings.h:89
std::string SeafloorMaterial()
VisualQuality
Visual quality levels.
Definition EnvironmentSettings.h:57
@ Fair
Fair rendering (medium quality)
Definition EnvironmentSettings.h:59
@ Nice
Nice rendering (high quality)
Definition EnvironmentSettings.h:60
@ Fast
Fast rendering (low quality)
Definition EnvironmentSettings.h:58
int randomSeed
Random seed.
Definition EnvironmentSettings.h:118
EnvironmentSettings(ISimObjectCreator *creator)
std::shared_ptr< marenv::current::CurrentField > currents
Current field.
Definition EnvironmentSettings.h:87
double seafloorMinDepth
Minimum seabed depth over the visual domain [m] (sampled from the active field).
Definition EnvironmentSettings.h:83
std::string OceansidesMaterial()
double seafloorMaxDepth
Maximum seabed depth over the visual domain [m] (sampled from the active field).
Definition EnvironmentSettings.h:85
int visualQuality
Visual quality level.
Definition EnvironmentSettings.h:120
std::vector< int > vertexCounts
Vertex counts [u, v].
Definition EnvironmentSettings.h:114
std::shared_ptr< marenv::seafloor::BathymetryWaves > bathymetry
Sum-of-sines bathymetry (used for visualization; also the seabed for the "SumOfSines" model)
Definition EnvironmentSettings.h:79
VisualQuality QualityFromInt(int quality)
SkyMaterialSpec SkySpec()
bool visualizeWaves
Enable wave visualization.
Definition EnvironmentSettings.h:112
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:81
Visualization utilities.
Definition EnvironmentSettings.h:14
SkyType
Sky rendering types.
Definition EnvironmentSettings.h:17
@ DOME
Dome sky rendering.
Definition EnvironmentSettings.h:18
@ BOX
Box sky rendering (default)
Definition EnvironmentSettings.h:20
@ PLANE
Plane sky rendering.
Definition EnvironmentSettings.h:19
Sky material specification.
Definition EnvironmentSettings.h:24
std::string material
Material name.
Definition EnvironmentSettings.h:40
std::string texture
Texture name.
Definition EnvironmentSettings.h:42
SkyType type
Sky type.
Definition EnvironmentSettings.h:44
SkyMaterialSpec(std::string material, std::string texture, SkyType type=BOX)
Definition EnvironmentSettings.h:33
SkyMaterialSpec()
Default-constructs an empty sky material spec.
Definition EnvironmentSettings.h:26