8#include "VisualField.h"
13#ifdef FH_VISUALIZATION
14# include "visual/ScalarVolume.h"
116#ifdef FH_VISUALIZATION
125 void RenderInit(Ogre::Root*
const ogreRoot, ISimObjectCreator* Creator)
override;
136 void RenderUpdate(
const double T,
const double*
const X)
override;
140#ifdef FH_VISUALIZATION
149 void FollowCamera(
double T,
const double cameraPos[3]);
157 void SampleAt(
double T,
const double centre[3]);
162 void MoveBox(
const double centre[3]);
169 void StartBake(
const double centre[3]);
178 void AdoptFinishedBake();
187 void RecordFailedTarget(
const double centre[3]);
195 [[nodiscard]]
bool MovedFarEnough(
const double cameraPos[3],
const double centre[3])
const;
201 void ApplyVolumeUniforms(
const double centre[3])
const;
212 [[nodiscard]]
bool CameraIsInsideBox(
const double cameraPos[3])
const;
218 double m_boxCentre[3];
220 double m_referenceLength;
221 double m_rebakeFraction;
222 bool m_centreOnCamera;
226#ifdef FH_VISUALIZATION
227 std::unique_ptr<visual::ScalarVolume> m_scalarVolume;
229 FhCamera* m_fhCamera;
231 bool m_hasPendingCentre;
232 double m_pendingCentre[3];
234 std::thread m_worker;
235 std::atomic_bool m_bakeFinished;
239 double m_bakeResultCentre[3];
240 double m_bakeClampedFraction;
241 std::string m_bakeError;
243 bool m_hasFailedCentre;
244 double m_failedCentre[3];
246 bool m_cullingInside;
Definition VisualFieldVolume.h:102
~VisualFieldVolume() override
Joins any re-bake worker and releases the box; the base releases material and textures.
VisualFieldVolume(std::string SimObjectName, ISimObjectCreator *Creator)
Definition VisualField.h:53
Environment SimObjects.
Definition Environment.h:25
A scalar field evaluated over a SamplingBox and encoded to 16-bit codes.
Definition ScalarFieldBake.h:52
Definition ScalarFieldBake.h:44