Skip to content

Commit cdb957c

Browse files
committed
change tsdRender to render all saved camera poses as individual frames
1 parent daa0262 commit cdb957c

File tree

14 files changed

+234
-127
lines changed

14 files changed

+234
-127
lines changed

tsd/apps/interactive/common/AppCore.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -371,8 +371,9 @@ void AppCore::addTurntableCameraPoses(const tsd::float3 &azs,
371371
if (baseName.empty())
372372
baseName = "turntable_view";
373373

374-
int i = 0, j = 0;
374+
int j = 0;
375375
for (float el = els.x; el <= els.y; el += els.z, j++) {
376+
int i = 0;
376377
for (float az = azs.x; az <= azs.y; az += azs.z, i++) {
377378
CameraPose pose;
378379
pose.name = baseName + "_" + std::to_string(i) + "_" + std::to_string(j);
@@ -405,8 +406,7 @@ void AppCore::setCameraPose(const CameraPose &pose)
405406
{
406407
view.manipulator.setConfig(
407408
pose.lookat, pose.azeldist.z, {pose.azeldist.x, pose.azeldist.y});
408-
view.manipulator.setAxis(
409-
static_cast<tsd::manipulators::OrbitAxis>(pose.upAxis));
409+
view.manipulator.setAxis(static_cast<tsd::manipulators::UpAxis>(pose.upAxis));
410410
}
411411

412412
void AppCore::removeAllPoses()

tsd/apps/interactive/common/AppCore.h

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,9 +87,20 @@ struct AppCore
8787
struct CameraState
8888
{
8989
std::vector<CameraPose> poses;
90-
tsd::manipulators::Orbit manipulator;
90+
tsd::manipulators::Manipulator manipulator;
9191
} view;
9292

93+
struct OfflineRenderSequenceConfig
94+
{
95+
struct FrameSettings
96+
{
97+
uint32_t width{1024};
98+
uint32_t height{768};
99+
anari::DataType colorFormat{ANARI_UFIXED8_RGBA_SRGB};
100+
uint32_t samples{128};
101+
} frame;
102+
} offline;
103+
93104
struct Windows
94105
{
95106
BlockingTaskModal *taskModal{nullptr};

tsd/apps/interactive/common/windows/CameraPoses.cpp

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,9 +87,21 @@ void CameraPoses::buildUI_turntablePopupMenu()
8787
{
8888
if (ImGui::BeginPopup("CameraPoses_turntablePopupMenu")) {
8989
ImGui::InputFloat3("azimuths", &m_turntableAzimuths.x, "%.3f");
90+
if (ImGui::IsItemHovered())
91+
ImGui::SetTooltip("{min, max, step size}");
92+
9093
ImGui::InputFloat3("elevations", &m_turntableElevations.x, "%.3f");
94+
if (ImGui::IsItemHovered())
95+
ImGui::SetTooltip("{min, max, step size}");
96+
9197
ImGui::InputFloat3("center", &m_turntableCenter.x, "%.3f");
98+
if (ImGui::IsItemHovered())
99+
ImGui::SetTooltip("view center");
100+
92101
ImGui::InputFloat("distance", &m_turntableDistance, 0.01f, 0.1f, "%.3f");
102+
if (ImGui::IsItemHovered())
103+
ImGui::SetTooltip("view distance from center");
104+
93105
if (ImGui::Button("ok")) {
94106
m_core->addTurntableCameraPoses(m_turntableAzimuths,
95107
m_turntableElevations,
@@ -108,7 +120,7 @@ void CameraPoses::buildUI_confirmPopupMenu()
108120
{
109121
if (ImGui::BeginPopup("CameraPoses_confirmPopupMenu")) {
110122
ImGui::Text("are you sure?");
111-
if (ImGui::Button("ok")) {
123+
if (ImGui::Button("yes")) {
112124
m_core->removeAllPoses();
113125
ImGui::CloseCurrentPopup();
114126
}

tsd/apps/interactive/common/windows/Viewport.cpp

Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,12 @@
1010
#include <limits>
1111
// tsd
1212
#include "../tsd_ui.h"
13+
#include "tsd/view/ManipulatorToAnari.hpp"
1314

1415
namespace tsd_viewer {
1516

16-
Viewport::Viewport(AppCore *core, tsd::manipulators::Orbit *m, const char *name)
17+
Viewport::Viewport(
18+
AppCore *core, tsd::manipulators::Manipulator *m, const char *name)
1719
: Window(core, name)
1820
{
1921
setManipulator(m);
@@ -69,7 +71,7 @@ void Viewport::buildUI()
6971
m_anariPass->setEnableIDs(m_core->objectIsSelected());
7072
}
7173

72-
void Viewport::setManipulator(tsd::manipulators::Orbit *m)
74+
void Viewport::setManipulator(tsd::manipulators::Manipulator *m)
7375
{
7476
m_arcball = m ? m : &m_localArcball;
7577
}
@@ -276,7 +278,7 @@ void Viewport::loadSettings(tsd::serialization::DataNode &root)
276278
camera["azel"].getValue(ANARI_FLOAT32_VEC2, &azel);
277279
camera["up"].getValue(ANARI_INT32, &axis);
278280

279-
m_arcball->setAxis(tsd::manipulators::OrbitAxis(axis));
281+
m_arcball->setAxis(tsd::manipulators::UpAxis(axis));
280282
m_arcball->setConfig(at, distance, azel);
281283
}
282284

@@ -524,9 +526,8 @@ void Viewport::updateCamera(bool force)
524526

525527
// perspective camera //
526528

527-
anari::setParameter(m_device, m_perspCamera, "position", m_arcball->eye());
528-
anari::setParameter(m_device, m_perspCamera, "direction", m_arcball->dir());
529-
anari::setParameter(m_device, m_perspCamera, "up", m_arcball->up());
529+
tsd::manipulators::updateCameraParametersPerspective(
530+
m_device, m_perspCamera, *m_arcball);
530531
anari::setParameter(m_device,
531532
m_perspCamera,
532533
"aspect",
@@ -542,12 +543,8 @@ void Viewport::updateCamera(bool force)
542543
// orthographic camera //
543544

544545
if (m_orthoCamera) {
545-
anari::setParameter(
546-
m_device, m_orthoCamera, "position", m_arcball->eye_FixedDistance());
547-
anari::setParameter(m_device, m_orthoCamera, "direction", m_arcball->dir());
548-
anari::setParameter(m_device, m_orthoCamera, "up", m_arcball->up());
549-
anari::setParameter(
550-
m_device, m_orthoCamera, "height", m_arcball->distance() * 0.75f);
546+
tsd::manipulators::updateCameraParametersOrthographic(
547+
m_device, m_orthoCamera, *m_arcball);
551548
anari::setParameter(m_device,
552549
m_orthoCamera,
553550
"aspect",
@@ -558,9 +555,10 @@ void Viewport::updateCamera(bool force)
558555
// omnidirectional camera //
559556

560557
if (m_omniCamera) {
561-
anari::setParameter(m_device, m_omniCamera, "position", m_arcball->eye());
562-
anari::setParameter(m_device, m_omniCamera, "direction", m_arcball->dir());
563-
anari::setParameter(m_device, m_omniCamera, "up", m_arcball->up());
558+
tsd::manipulators::updateCameraParametersPerspective( // also works for omni
559+
m_device,
560+
m_omniCamera,
561+
*m_arcball);
564562
anari::commitParameters(m_device, m_omniCamera);
565563
}
566564

@@ -713,8 +711,7 @@ void Viewport::ui_menubar()
713711
}
714712

715713
if (ImGui::Combo("up", &m_arcballUp, "+x\0+y\0+z\0-x\0-y\0-z\0\0")) {
716-
m_arcball->setAxis(
717-
static_cast<tsd::manipulators::OrbitAxis>(m_arcballUp));
714+
m_arcball->setAxis(static_cast<tsd::manipulators::UpAxis>(m_arcballUp));
718715
resetView();
719716
}
720717

tsd/apps/interactive/common/windows/Viewport.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,12 @@ namespace tsd_viewer {
2323
struct Viewport : public Window
2424
{
2525
Viewport(AppCore *state,
26-
tsd::manipulators::Orbit *m,
26+
tsd::manipulators::Manipulator *m,
2727
const char *name = "Viewport");
2828
~Viewport();
2929

3030
void buildUI() override;
31-
void setManipulator(tsd::manipulators::Orbit *m);
31+
void setManipulator(tsd::manipulators::Manipulator *m);
3232
void resetView(bool resetAzEl = true);
3333
void centerView();
3434
void setLibrary(const std::string &libName, bool doAsync = true);
@@ -117,8 +117,8 @@ struct Viewport : public Window
117117
// camera manipulator
118118

119119
int m_arcballUp{1};
120-
tsd::manipulators::Orbit m_localArcball;
121-
tsd::manipulators::Orbit *m_arcball{nullptr};
120+
tsd::manipulators::Manipulator m_localArcball;
121+
tsd::manipulators::Manipulator *m_arcball{nullptr};
122122
tsd::manipulators::UpdateToken m_cameraToken{0};
123123
float m_apertureRadius{0.f};
124124
float m_focusDistance{1.f};

tsd/apps/interactive/ptc_viewer/DistributedViewport.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ void DistributedViewport::buildUI()
6565
ui_handleInput();
6666
}
6767

68-
void DistributedViewport::setManipulator(tsd::manipulators::Orbit *m)
68+
void DistributedViewport::setManipulator(tsd::manipulators::Manipulator *m)
6969
{
7070
m_arcball = m ? m : &m_localArcball;
7171
}
@@ -367,7 +367,7 @@ void DistributedViewport::ui_contextMenu()
367367

368368
if (ImGui::Combo("up", &m_arcballUp, "+x\0+y\0+z\0-x\0-y\0-z\0\0")) {
369369
m_arcball->setAxis(
370-
static_cast<tsd::manipulators::OrbitAxis>(m_arcballUp));
370+
static_cast<tsd::manipulators::UpAxis>(m_arcballUp));
371371
resetView();
372372
}
373373

tsd/apps/interactive/ptc_viewer/DistributedViewport.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ struct DistributedViewport : public Window
3434
void buildUI() override;
3535

3636
void setWorld(anari::World world = nullptr, bool resetCameraView = true);
37-
void setManipulator(tsd::manipulators::Orbit *m);
37+
void setManipulator(tsd::manipulators::Manipulator *m);
3838
void resetView(bool resetAzEl = true);
3939
void setDevice(anari::Device d);
4040

@@ -93,8 +93,8 @@ struct DistributedViewport : public Window
9393
// camera manipulator
9494

9595
int m_arcballUp{1};
96-
tsd::manipulators::Orbit m_localArcball;
97-
tsd::manipulators::Orbit *m_arcball{nullptr};
96+
tsd::manipulators::Manipulator m_localArcball;
97+
tsd::manipulators::Manipulator *m_arcball{nullptr};
9898
tsd::manipulators::UpdateToken m_cameraToken{0};
9999
float m_apertureRadius{0.f};
100100
float m_focusDistance{1.f};

tsd/apps/interactive/ptc_viewer/ptcViewer.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -234,7 +234,7 @@ class Application : public anari_viewer::Application
234234
}
235235

236236
private:
237-
tsd::manipulators::Orbit m_manipulator;
237+
tsd::manipulators::Manipulator m_manipulator;
238238
};
239239

240240
///////////////////////////////////////////////////////////////////////////////

0 commit comments

Comments
 (0)