Skip to content

v1.2.0

Compare
Choose a tag to compare
@patrikhuber patrikhuber released this 01 Aug 19:01
· 141 commits to master since this release

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 the eos::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 the Rasterizer 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, moved v2::SoftwareRenderer to the render 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.
  • 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-major Image class (dc0fce8). (The Image 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 to SoftwareRenderer and Rasterizer to clear the colour- and depth buffers (1e8a875)
  • Set the colourbuffer's clear color to fully transparent (fc1465e)
  • Added project(...) function to PcaModel (4694d6f) (see #295 for a potential issue)
  • Moved render/draw_utils.hpp to render/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).