VIDEO: QTVR: Add quality, warpMode and swing transition#6548
VIDEO: QTVR: Add quality, warpMode and swing transition#6548sev- merged 6 commits intoscummvm:masterfrom
Conversation
|
Guys, I'm not sure why the check failed, can you guys help me out? |
It's an issue with the runner images, which are using the latest versions in all packages, and the CMake package had a breaking change in version 4. Rebase your branch, so that you can get this commit from master, which fixes the issue: 2821fcd |
|
Two things right away:
|
b46849d to
91eb7f6
Compare
|
I made the changes, pushed again, but the check failed once again |
video/qt_decoder.h
Outdated
|
|
||
| kScaleFactorOne = 1, | ||
| kScaleFactorTwo = 2, | ||
| kScaleFactorThree = 3, |
There was a problem hiding this comment.
We were discussing that possible difference between "low quality" antialasing and high quality could be with linear/gaussian interpolation. How is this approach of 2x/3x is compared to this and the original?
6e6a516 to
65d9867
Compare
Please refer to the pull request scummvm#6548 Set the corner origin point in the QTVR decoder from QTVR Xtra in order to make sure during the swing transition the QTVR video decoder sets the image at the correct position
Add the warping functionality using the warpMode variable as described in the original QTVR Xtra documentation provided by Apple. Set three modes of warping in the qtvr decoder - Mode 2: Already there, applies both planar projection as well as perspective correction for perspectively correct image - Mode 1: Only apply planar projection, image becomes more distorted as we move up or down from the midpoint - Mode 0: No projection, blit the image as it is, exact copy of the original QTVR movie
Please refer to the pull request scummvm#6548 Set the corner origin point in the QTVR decoder from QTVR Xtra in order to make sure during the swing transition the QTVR video decoder sets the image at the correct position
Add the quality mode stubbed functionality using the as described in the original QTVR Xtra documentation provided by Apple. Add two new functions: upscalePanorama(): Upscales the original panorama movie to 2x width or 2x width and 2x height, these upscaled panorama are named (_1D/_2D)UpscaledConstructedPano and used for projecting in quality mode 2.0f and 4.0f boxAverage(): The panorama is rendered with 2x or 3x the target size and then averaged to target size by averaging in 2x2 or 3x3 box to apply anti-aliasing Set three quality modes in the QTVR decoder - Mode 1.0f: No quality upscaling, already present, low quality - Mode 2.0f: 1 dimensional upscaling and 2 times scaled rendering followed by 2x2 box average, medium quality - Mode 4.0f: 2 dimensinoal upscaling and 3 times scaled rendering followed by 3x3 box average, high quality - Mode 0: Dynamic quality mode, change between low quality and high quality based on whether the user is actively interacting with the panorama
There is a minor bug in QTVR decoder when zooming out when Tilt Angle != 0, in warp mode 2, it causes distorion of the panorama, in warp mode 1 and 0, it causes panorama image to go out of bounds and the upper/lower (depending on whether tilt angle is positive or negative) part of the image is invalid Check for out of bound values of tilt angle and pan angle when setFOV() function is called during zooming in or out which fixes the bug
Add the swing Transition functionality using the transitionMode variable as described in the original QTVR Xtra documentation provided by Apple. In the swing transition mode, make the video decoder internally handle the animation of "swinging" panorama video from the current position (described by _fov, _tiltAngle, _panAngle) to the new position while taking the shortest path
Fix a minor logical error in swing transition function Remove Unnecessary whitespace and formatting
sev-
left a comment
There was a problem hiding this comment.
Added a few notes. We are really close to completion, good job!
Previous approach used two Surface Objects to store the 1D and 2D upscaled panorama used while projecting the panorama in higher quailty respectively causing higher memory usage Instead use only one Surface object to store the upscaled panorama which stores both 1D and 2D upscaled panorama as and if needed. Minor fixes and formatting
|
Thank you! |
Please refer to the pull request #6548 Set the corner origin point in the QTVR decoder from QTVR Xtra in order to make sure during the swing transition the QTVR video decoder sets the image at the correct position
Please refer to the pull request scummvm#6548 Set the corner origin point in the QTVR decoder from QTVR Xtra in order to make sure during the swing transition the QTVR video decoder sets the image at the correct position
Please refer to the pull request scummvm#6548 Set the corner origin point in the QTVR decoder from QTVR Xtra in order to make sure during the swing transition the QTVR video decoder sets the image at the correct position
Add the following missing features in QTVR panorama as described in the original director QTVR documentation