Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
oxyflame_rendering_tools
Manage
Activity
Members
Labels
Plan
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Model registry
Operate
Environments
Terraform modules
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
LuFG VR VIS
VR-Group
oxyflame_rendering_tools
Commits
0b0859f9
Commit
0b0859f9
authored
4 years ago
by
Ali Can Demiralp
Browse files
Options
Downloads
Patches
Plain Diff
It freaking works.
parent
7a2312f5
Branches
Branches containing commit
No related tags found
No related merge requests found
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
offline_ray_tracer/source/main.cpp
+26
-17
26 additions, 17 deletions
offline_ray_tracer/source/main.cpp
test_data/example.json
+6
-6
6 additions, 6 deletions
test_data/example.json
with
32 additions
and
23 deletions
offline_ray_tracer/source/main.cpp
+
26
−
17
View file @
0b0859f9
#include
<algorithm>
#include
<cstdint>
#include
<cstdint>
#include
<iostream>
#include
<iostream>
#include
<vtkActor.h>
#include
<vtkActor.h>
#include
<vtkAVIWriter.h>
#include
<vtkAVIWriter.h>
#include
<vtkCamera.h>
#include
<vtkCameraInterpolator.h>
#include
<vtkOSPRayPass.h>
#include
<vtkOSPRayPass.h>
#include
<vtkPolyDataMapper.h>
#include
<vtkPolyDataMapper.h>
#include
<vtkRenderer.h>
#include
<vtkRenderer.h>
...
@@ -33,7 +34,21 @@ std::int32_t main(std::int32_t argc, char** argv)
...
@@ -33,7 +34,21 @@ std::int32_t main(std::int32_t argc, char** argv)
window
->
SetMultiSamples
(
settings
.
samples
);
window
->
SetMultiSamples
(
settings
.
samples
);
renderer
->
SetPass
(
ospray_pass
);
renderer
->
SetPass
(
ospray_pass
);
std
::
cout
<<
"Setting up mappers, actors and volumes.
\n
"
;
std
::
cout
<<
"Setting up camera interpolator.
\n
"
;
auto
interpolator
=
vtkSmartPointer
<
vtkCameraInterpolator
>::
New
();
interpolator
->
SetInterpolationType
(
vtkCameraInterpolator
::
INTERPOLATION_TYPE_SPLINE
);
for
(
auto
&
key_frame
:
settings
.
key_frames
)
{
auto
camera
=
renderer
->
GetActiveCamera
();
camera
->
SetPosition
(
key_frame
.
position
[
0
]
,
key_frame
.
position
[
1
]
,
key_frame
.
position
[
2
]);
camera
->
SetFocalPoint
(
key_frame
.
position
[
0
]
+
key_frame
.
forward
[
0
],
key_frame
.
position
[
1
]
+
key_frame
.
forward
[
1
],
key_frame
.
position
[
2
]
+
key_frame
.
forward
[
2
]);
camera
->
SetViewUp
(
key_frame
.
up
[
0
]
,
key_frame
.
up
[
1
]
,
key_frame
.
up
[
2
]);
interpolator
->
AddCamera
(
key_frame
.
time
,
camera
);
}
std
::
cout
<<
"Setting up actors and volumes.
\n
"
;
auto
pd_mapper
=
vtkSmartPointer
<
vtkPolyDataMapper
>
::
New
();
auto
pd_mapper
=
vtkSmartPointer
<
vtkPolyDataMapper
>
::
New
();
auto
ug_mapper
=
vtkSmartPointer
<
vtkUnstructuredGridVolumeRayCastMapper
>::
New
();
auto
ug_mapper
=
vtkSmartPointer
<
vtkUnstructuredGridVolumeRayCastMapper
>::
New
();
auto
pd_actor
=
vtkSmartPointer
<
vtkActor
>
::
New
();
auto
pd_actor
=
vtkSmartPointer
<
vtkActor
>
::
New
();
...
@@ -43,14 +58,14 @@ std::int32_t main(std::int32_t argc, char** argv)
...
@@ -43,14 +58,14 @@ std::int32_t main(std::int32_t argc, char** argv)
renderer
->
AddActor
(
pd_actor
);
renderer
->
AddActor
(
pd_actor
);
//renderer ->AddVolume(ug_volume);
//renderer ->AddVolume(ug_volume);
std
::
cout
<<
"Setting up
image and
video writer
s
.
\n
"
;
std
::
cout
<<
"Setting up video writer.
\n
"
;
auto
window_to_image
=
vtkSmartPointer
<
vtkWindowToImageFilter
>::
New
();
auto
window_to_image
=
vtkSmartPointer
<
vtkWindowToImageFilter
>::
New
();
auto
video_writer
=
vtkSmartPointer
<
vtkAVIWriter
>
::
New
();
auto
video_writer
=
vtkSmartPointer
<
vtkAVIWriter
>
::
New
();
window_to_image
->
SetInput
(
window
);
window_to_image
->
SetInput
(
window
);
video_writer
->
SetInputConnection
(
window_to_image
->
GetOutputPort
());
video_writer
->
SetInputConnection
(
window_to_image
->
GetOutputPort
());
video_writer
->
SetFileName
(
"video.avi"
);
video_writer
->
SetFileName
(
"video.avi"
);
video_writer
->
SetQuality
(
2
);
video_writer
->
SetQuality
(
2
);
video_writer
->
SetRate
(
settings
.
update_rate
);
// 24
video_writer
->
SetRate
(
1000.0
/
settings
.
update_rate
);
video_writer
->
Start
();
video_writer
->
Start
();
std
::
cout
<<
"Starting rendering.
\n
"
;
std
::
cout
<<
"Starting rendering.
\n
"
;
...
@@ -58,27 +73,21 @@ std::int32_t main(std::int32_t argc, char** argv)
...
@@ -58,27 +73,21 @@ std::int32_t main(std::int32_t argc, char** argv)
auto
last_slice
=
-
1
;
auto
last_slice
=
-
1
;
while
(
current_time
<
settings
.
key_frames
.
back
().
time
)
while
(
current_time
<
settings
.
key_frames
.
back
().
time
)
{
{
std
::
cout
<<
"Rendering frame "
<<
current_time
<<
".
\n
"
;
auto
iterator
=
std
::
lower_bound
(
settings
.
key_frames
.
begin
(),
settings
.
key_frames
.
end
(),
current_time
,
[
]
(
const
rt
::
settings
::
key_frame
&
key_frame
,
const
float
value
)
{
return
key_frame
.
time
<
value
;
});
auto
&
key_frame_1
=
*
(
iterator
);
auto
&
key_frame_2
=
*
(
iterator
+
1
);
auto
parametric_time
=
(
current_time
-
key_frame_1
.
time
)
/
(
key_frame_2
.
time
-
key_frame_1
.
time
);
// TODO: Update camera.
std
::
size_t
slice
=
std
::
floor
(
current_time
/
settings
.
time_scale
);
std
::
size_t
slice
=
std
::
floor
(
current_time
/
settings
.
time_scale
);
slice
=
settings
.
loop
?
slice
%
settings
.
data_filepaths
.
size
()
:
std
::
min
(
slice
,
settings
.
data_filepaths
.
size
()
-
1
);
slice
=
settings
.
loop
?
slice
%
settings
.
data_filepaths
.
size
()
:
std
::
min
(
slice
,
settings
.
data_filepaths
.
size
()
-
1
);
if
(
last_slice
!=
slice
)
if
(
last_slice
!=
slice
)
{
{
std
::
cout
<<
"Loading slice "
<<
slice
<<
".
\n
"
;
last_slice
=
slice
;
last_slice
=
slice
;
pd_mapper
->
SetInputData
(
rt
::
poly_data_io
::
read
(
settings
.
data_filepaths
[
slice
].
geometry
));
pd_mapper
->
SetInputData
(
rt
::
poly_data_io
::
read
(
settings
.
data_filepaths
[
slice
].
geometry
));
//ug_mapper->SetInputData(rt::unstructured_grid_io::read(settings.data_filepaths[slice].volume ));
//ug_mapper->SetInputData(rt::unstructured_grid_io::read(settings.data_filepaths[slice].volume ));
}
}
std
::
cout
<<
"Rendering frame "
<<
current_time
<<
".
\n
"
;
interpolator
->
InterpolateCamera
(
current_time
,
renderer
->
GetActiveCamera
());
renderer
->
ResetCameraClippingRange
();
window
->
Render
();
window
->
Render
();
window_to_image
->
Modified
();
video_writer
->
Write
();
video_writer
->
Write
();
current_time
+=
settings
.
update_rate
;
current_time
+=
settings
.
update_rate
;
...
...
This diff is collapsed.
Click to expand it.
test_data/example.json
+
6
−
6
View file @
0b0859f9
...
@@ -8,15 +8,15 @@
...
@@ -8,15 +8,15 @@
"time_scale"
:
1000.0
,
"time_scale"
:
1000.0
,
"loop"
:
true
,
"loop"
:
true
,
"image_size"
:
[
4096
,
3072
],
"image_size"
:
[
1920
,
1080
],
"samples"
:
32
,
"samples"
:
32
,
"update_rate"
:
16
,
"update_rate"
:
16
.0
,
"key_frames"
:
"key_frames"
:
[
[
{
"time"
:
0.0
,
"position"
:
[
0.0
,
0.0
,
-
5
0.0
],
"forward"
:
[
0.0
,
0.0
,
1.0
],
"up"
:
[
0.0
,
1.0
,
0.0
]
},
{
"time"
:
0.0
,
"position"
:
[
0.0
,
0.0
,
-
10
0.0
],
"forward"
:
[
0.0
,
0.0
,
1.0
],
"up"
:
[
0.0
,
1.0
,
0.0
]
},
{
"time"
:
1000.0
,
"position"
:
[
0.0
,
-
5
0.0
,
0.0
],
"forward"
:
[
0.0
,
1.0
,
0.0
],
"up"
:
[
0.0
,
0.0
,
1.0
]
},
{
"time"
:
1000.0
,
"position"
:
[
0.0
,
-
10
0.0
,
0.0
],
"forward"
:
[
0.0
,
1.0
,
0.0
],
"up"
:
[
0.0
,
0.0
,
1.0
]
},
{
"time"
:
2000.0
,
"position"
:
[
-
5
0.0
,
0.0
,
0.0
],
"forward"
:
[
1.0
,
0.0
,
0.0
],
"up"
:
[
0.0
,
1.0
,
0.0
]
},
{
"time"
:
2000.0
,
"position"
:
[
-
10
0.0
,
0.0
,
0.0
],
"forward"
:
[
1.0
,
0.0
,
0.0
],
"up"
:
[
0.0
,
1.0
,
0.0
]
},
{
"time"
:
3000.0
,
"position"
:
[
0.0
,
0.0
,
-
5
0.0
],
"forward"
:
[
0.0
,
0.0
,
1.0
],
"up"
:
[
0.0
,
1.0
,
0.0
]
}
{
"time"
:
3000.0
,
"position"
:
[
0.0
,
0.0
,
-
10
0.0
],
"forward"
:
[
0.0
,
0.0
,
1.0
],
"up"
:
[
0.0
,
1.0
,
0.0
]
}
]
]
}
}
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment