mirror of
https://github.com/PixarAnimationStudios/OpenSubdiv
synced 2024-11-24 04:20:21 +00:00
2dc8520938
The Chaikin crease interpolation mode seems to be broken: - Catmark / Loop / Bilinear are passing the wrong halfedge vertex to the SubdivideCreaseWeight function which results in sub-edge crease weights being swapped - the loop that iterates over adjacent edges needs to check against both the original edge and its opposite, otherwise it may be incorrectly accumulated into summation of these adjacent edges (with a 0.25 weight) The proposed fix: - Swaps the Dest/Org vertex passed to the SubdivideCreaseWeight (and we probably want Julian to confirm that this the correct fix) - Checks against both the original edge and its opposite in the iteration over adjacent edges - Replaces the std::vector based query with an HbrHalfedgeOperator for better performance (hopefully) The similar fix to OpenSubdiv been reviewed by Tony DeRose. Also in the fix: - fix "obj" tag parsing of the smooth triangle tag that was incorrectly associated with the crease method (and reporting the wrong errors) - add regression shapes for both Loop & Catmark schemes to hbr_regression - add same shapes to the glViewer - improve hbr_regression output to be more readable - add command-line argument parsing to hbr_regression - add functionality to dump an obj file when regression fails for comparison fixes #235 |
||
---|---|---|
.. | ||
bilinear_cube.h | ||
catmark_bishop.h | ||
catmark_car.h | ||
catmark_chaikin0.h | ||
catmark_chaikin1.h | ||
catmark_cube_corner0.h | ||
catmark_cube_corner1.h | ||
catmark_cube_corner2.h | ||
catmark_cube_corner3.h | ||
catmark_cube_corner4.h | ||
catmark_cube_creases0.h | ||
catmark_cube_creases1.h | ||
catmark_cube.h | ||
catmark_dart_edgecorner.h | ||
catmark_dart_edgeonly.h | ||
catmark_edgecorner.h | ||
catmark_edgeonly.h | ||
catmark_fan.h | ||
catmark_flap2.h | ||
catmark_flap.h | ||
catmark_gregory_test1.h | ||
catmark_gregory_test2.h | ||
catmark_gregory_test3.h | ||
catmark_gregory_test4.h | ||
catmark_helmet.h | ||
catmark_hole_test1.h | ||
catmark_hole_test2.h | ||
catmark_pawn.h | ||
catmark_pyramid_creases0.h | ||
catmark_pyramid_creases1.h | ||
catmark_pyramid_creases2.h | ||
catmark_pyramid.h | ||
catmark_rook.h | ||
catmark_square_hedit0.h | ||
catmark_square_hedit1.h | ||
catmark_square_hedit2.h | ||
catmark_square_hedit3.h | ||
catmark_square_hedit4.h | ||
catmark_tent_creases0.h | ||
catmark_tent_creases1.h | ||
catmark_tent.h | ||
catmark_torus_creases0.h | ||
catmark_torus_creases1.h | ||
catmark_torus.h | ||
loop_chaikin0.h | ||
loop_chaikin1.h | ||
loop_cube_creases0.h | ||
loop_cube_creases1.h | ||
loop_cube.h | ||
loop_icosahedron.h | ||
loop_saddle_edgecorner.h | ||
loop_saddle_edgeonly.h | ||
loop_triangle_edgecorner.h | ||
loop_triangle_edgeonly.h |