FhSim  3.1.0
Marine systems simulation
Loading...
Searching...
No Matches
VisualSettings.h
1#pragma once
2#include "util/EnvironmentConfig.h"
3#include "util/VisualDomain.h"
4
5#include <fhsim/simobject/ISimObjectCreator.h>
6#include <memory>
7#include <utility>
8#include <map>
9
10#include <marenv/seafloor/BathymetryField.h>
11#include <marenv/seafloor/BathymetryWaves.h>
12#include <marenv/wave/WaveField.h>
13#include <string>
14#include <vector>
15namespace visual
16{
26{
35 SkyMaterialSpec(std::string material, std::string texture, SkyType type = BOX)
36 : material(std::move(material))
37 , texture(std::move(texture))
38 {
39 this->type = type;
40 }
42 std::string material = "";
44 std::string texture = "";
47};
48
55{
56public:
64
71
77 VisualSettings(ISimObjectCreator* creator, const environment::EnvironmentConfig& config);
78
80 std::shared_ptr<marenv::wave::WaveField> waves;
82 std::shared_ptr<marenv::seafloor::BathymetryWaves> bathymetry;
85 std::shared_ptr<marenv::seafloor::BathymetryField> visualSeafloor;
87 double seafloorMinDepth = 0.0;
89 double seafloorMaxDepth = 0.0;
93 std::string OceanMaterial();
97 std::string OceansidesMaterial();
101 std::string SeafloorMaterial();
111 bool visualizeWaves = false;
113 std::vector<int> vertexCounts = {100, 130};
115 bool seafloorAsMesh = false;
119 double worldRadius = 1000.0;
122
123private:
129 SkyMaterialSpec ReadSkySpec(ISimObjectCreator* creator);
131 std::string m_sky;
133 std::map<std::string, SkyMaterialSpec> m_skyMaterials;
135 SkyMaterialSpec m_skyMaterial;
136};
137} // namespace visual
Definition VisualSettings.h:55
int visualQuality
Visual quality level.
Definition VisualSettings.h:121
VisualQuality QualityFromInt(int quality)
std::shared_ptr< marenv::seafloor::BathymetryWaves > bathymetry
Sum-of-sines bathymetry (the GPU seabed; also the seabed for the "SumOfSines" model)
Definition VisualSettings.h:82
SkyMaterialSpec SkySpec()
bool visualizeWaves
Enable wave visualization.
Definition VisualSettings.h:111
double worldRadius
World rendering radius [m]; domain.worldRadius.
Definition VisualSettings.h:119
double seafloorMinDepth
Minimum seabed depth over the visual domain [m] (sampled around domain.centre from the seabed the pic...
Definition VisualSettings.h:87
VisualQuality
Visual quality levels.
Definition VisualSettings.h:59
@ Fast
Fast rendering (low quality)
Definition VisualSettings.h:60
@ Nice
Nice rendering (high quality)
Definition VisualSettings.h:62
@ Fair
Fair rendering (medium quality)
Definition VisualSettings.h:61
std::vector< int > vertexCounts
Vertex counts [u, v].
Definition VisualSettings.h:113
std::string OceanMaterial()
std::string OceansidesMaterial()
VisualDomain domain
The visual domain, read once (Visual.WorldRadius, Bathymetry.VisualExtent, Bathymetry....
Definition VisualSettings.h:117
bool seafloorAsMesh
Whether the seabed is drawn as a sampled mesh (true) or by the projected shader (false); from Visual....
Definition VisualSettings.h:115
VisualSettings(ISimObjectCreator *creator, const environment::EnvironmentConfig &config)
double seafloorMaxDepth
Maximum seabed depth over the visual domain [m] (sampled around domain.centre from the seabed the pic...
Definition VisualSettings.h:89
std::shared_ptr< marenv::wave::WaveField > waves
Wave field for rendering.
Definition VisualSettings.h:80
std::string SeafloorMaterial()
std::shared_ptr< marenv::seafloor::BathymetryField > visualSeafloor
Definition VisualSettings.h:85
Visualization utilities.
Definition VisualDomain.h:12
SkyType
Sky rendering types.
Definition VisualSettings.h:19
@ DOME
Dome sky rendering.
Definition VisualSettings.h:20
@ BOX
Box sky rendering (default)
Definition VisualSettings.h:22
@ PLANE
Plane sky rendering.
Definition VisualSettings.h:21
Definition EnvironmentConfig.h:27
Sky material specification.
Definition VisualSettings.h:26
std::string material
Material name.
Definition VisualSettings.h:42
std::string texture
Texture name.
Definition VisualSettings.h:44
SkyType type
Sky type.
Definition VisualSettings.h:46
SkyMaterialSpec(std::string material, std::string texture, SkyType type=BOX)
Definition VisualSettings.h:35
SkyMaterialSpec()
Default-constructs an empty sky material spec.
Definition VisualSettings.h:28
The domain the picture shows. Read once, by ReadVisualDomain, and shared by the visual settings,...
Definition VisualDomain.h:15