v1.2.0
This release updates the renderer and texture extraction, with full support for perspective projection (along with orthographic projection), and contains various other smaller improvements and fixes.
New / major improvements:
- Improved
v2::extract_texture(...)
to support texture coordinates with seams (63243b2) - Moved
v2::extract_texture(...)
to theeos::render
namespace and made it the new default (08cba28). Calling code needs to be adjusted slightly, but the function's parameters are very similar. This new texture extraction uses theRasterizer
of the new renderer, and supports both orthographic and perspective projection. - Removed the old
extract_texture(...)
function, which only supported affine cameras (8fd1735) - Improved
SoftwareRenderer::render(...)
to correctly deal with texture maps with seams (c1defba) - Removed the old
render(...)
function, movedv2::SoftwareRenderer
to therender
namespace, and added a convenience function for the new renderer that can be called (almost) like the old renderer (12a4120) - calling code needs slight adjustments. The core of the new renderer is the same, but the architecture has been changed to mirror more closely the hardware (or OpenGL) pipeline, with vertex- and fragment shaders. Results should be exactly the same, and they have the same parameters.- Note: Whereas previously, meshes without vertex colour would be rendered with the colour
(0.5, 0.5, 0.5)
, in the new renderer, they will have default colour black (bd01644). In any case, it does not make sense to try and render a mesh without vertex colours or texture.
- Note: Whereas previously, meshes without vertex colour would be rendered with the colour
- Added vertex visibility check function that supports both orthographic and perspective projection (0db88d3). Introduced an
enum class
ProjectionType
, which specifies whether orthographic or perspective projection should be used.
Fixes:
- Changed strides in
Image
python bindings to account for row-majorImage
class (dc0fce8). (TheImage
class was changed to row-major in a commit a while ago, but the python bindings were never updated to accommodate this.) - Updated
mpark::variant
to their latest master (bd590bf). This should fix a few compile errors with certain compilers when compiling eos in C++14 mode.
Minor improvements/changes:
- Improved
v2::extract_texture(...)
to not crash when the projected model is partially outside the image (442497e) - Added
clear_buffers()
function toSoftwareRenderer
andRasterizer
to clear the colour- and depth buffers (1e8a875) - Set the colourbuffer's clear color to fully transparent (fc1465e)
- Added
project(...)
function toPcaModel
(4694d6f) (see #295 for a potential issue) - Moved
render/draw_utils.hpp
torender/opencv/
(914fdd5) - Added new
draw_wireframe(...)
function that doesn't need OpenCV (7303b39) and added python binding for it (f1f83d0) - Renamed "isomap" to "texturemap" throughout, and the
<filename>.isomap.png
output of the example apps to<filename>.texture.png
(174a2c2) - Various other minor improvements.
Removed:
- Removed
render::detail::interpolate_black_line(...)
(it was only needed for #4, which was fixed, and also it was for the old texture extraction) (35abed8) - Removed
estimate_affine_camera(...)
. See the commit message, for people that were still using this. (507eb77) - Removed
render_affine(...)
, this was used in the old texture extraction and is no longer needed (aee7984).