Commit Graph

27 Commits

Author SHA1 Message Date
barry
9832e11939 A few bug fixes and minor improvements for inf-sharp patches:
- updated face-varying VTag conversion to set VTag::_corner correctly
    - updated adaptive refinement to prevent over-isolation of inf-sharp features
    - fixed patch regularity test when inf-sharp and xord features not separated
      at level 0 or 1
    - generalized BSpline end-cap factory boundary test to defer to Gregory patch
      for any non-smooth corner
2016-09-26 19:14:42 -07:00
barry
c17b241293 Improved internal span types for better non-manifold support:
- changed Level::VSpan start member from edge to face local index
    - added additional Level::VSpan members for non-manifold cases
    - updated existing usage of Level::VSpan for new members and methods
    - moved and updated definition of FVarLevel::ValueSpan for clarity
2016-09-19 14:18:51 -07:00
barry
89c1765c73 Minor updates to tags for face-varying and inf-sharp topology:
- removed unused tag for inf-sharp features from Vtr::Level::VTag
    - added tags for inf-sharp features to Vtr::FVarLevel::ValueTag
    - updated the conversion from ValueTag to VTag
    - removed awkward and little used tagging methods from Vtr::FVarLevel
    - replaced obsolete methods in face-varying adaptive refinement
2016-09-15 23:03:48 -07:00
barry
653801588e Improved topology inspection and construction of face-varying patches:
- changes mainly involve Far::PatchTableFactory
    - treatment of patches more clearly separated into regular and irregular
    - patch identification now determines regularity and defers classification
    - topology inspection specialized for regular vs irregular patches
    - face-verying patches re-use patch information when topology matches
    - added Vtr::Level methods to improve access to tags for face-varying values
    - improved initial tagging of face-varying values in Vtr::FVarLevel
2016-09-02 20:53:24 -07:00
Thomas Thomassen
c422a79031 Rename and, or and not to &&, || and ! to address compilers that don't support them out of the box without extra headers. 2016-02-21 15:47:11 +01:00
barfowl
13e0850ac6 Re-protected members of all major Vtr classes:
- change public status of members back to protected/private
    - mimized friends (primarily Refinements as builders for Levels)
    - added any missing accessors to prevent member access (mainly Tags)
    - added the Tri/Quad refinement subclasses to private header list
2015-06-01 17:38:11 -07:00
barfowl
85b65bd2ef Moved Vtr classes within internal namespace:
- moved all major Vtr classes within namespace internal
    - updated all Vtr class access with Far
2015-05-25 20:34:50 -07:00
barfowl
b64eb5e2e0 Removing friends from Vtr classes and making more accessible internally:
- removed all friend declarations (no more Far declarations with Vtr)
    - all protected methods made public
    - intent is to move these into namespace internal
    - access between Vtr classes is under review
2015-05-22 15:52:47 -07:00
Takahito Tejima
a7c5179ef9 renaming (2/2) PatchTables and StencilTables to PatchTable and StencilTable
replace all occurrences reffering PatchTables, StencilTables, and their factories.
2015-05-22 11:50:01 -07:00
jcowles
392e5e8bed Remove #pragma once
While this may be worth revisiting, we should first quantify the benefits and
identify the compilers that support it. Ultimately, we may never use pragma
once in favor of strictly using standard C++.
2015-05-20 09:59:18 -07:00
jcowles
9d32712ec4 Prefix header guards and add pragma once. 2015-05-19 11:22:37 -07:00
Takahito Tejima
74b78b3d17 Refactor again FarPatchTableFactory.
- rename "Regular end cap" to "BSplineBasis end cap"
- revert templating and add EndCapType into PatchTablesFactory::Options.
- make EndCapFactories internal in PatchTablesFactory.
- move end cap stencils into PatchTables, keep them relative to the max level.
- add a utility StencilTablesFactory::AppendEndCapStencilTables to splice and factorize endcap stencil tables.
2015-04-23 16:58:56 -07:00
Takahito Tejima
43aa2500c4 Refactor far factories.
This change moves all gregory patch generation from Far::PatchTablesFactory
so that we can construct patch tables without stencil tables as well as client
can chose any end patch strategies (we have 3 options for now: legacy 2.x style
gregory patch, gregory basis patch and experimental regular patch approximation).

Also Far::EndCapGregoryBasisPatchFactory provides index mapping from patch index
to vtr face index, which can be used for single gregory patch evaluation on top
of refined points, without involving heavier stencil tables generation.
2015-04-20 18:59:07 -07:00
manuelk
d0a624f373 Add "smooth UVs" to Far
- extend Far::PatchTables data structures & interfaces to store requisite
  information for channels of face-varying bi-cubic patches
- implement gather function in Far::PatchTablesFactory to populate face-varying
  channels with adaptive patches
- extend accessor interface in Vtr::Level
- propagate code fall-out throughout OpenSubdiv code base, examples & tutorials
- extend vtrViewer code to visualize tessellated bi-cubic face-varying patches
2015-02-26 13:57:47 -08:00
barfowl
2213d86a59 Fixed bug retrieving and merging tags for FVar values:
- added Vtr::FVarLevel method to resolve correct index in level 0 case
    - updated tag retrieval methods that used face-value array as input
    - changed signatures to accept face-verts when needed and updated usage
2015-02-25 11:02:53 -08:00
barfowl
588c3060b3 Added Vtr::FVarLevel method to merge FVar edge tags with Vtr::Level::Etags 2015-02-17 14:16:35 -08:00
barfowl
7152b1b1bf More support for feature-adaptive consideration of face-varying topology:
- added methods to FVarLevel to combine FVar tags with vertex tags
    - use composite of combined tag to find FVar features needing isolation
    - added more tagging related to the "linear borders" interpolation case
2015-02-11 20:51:00 -08:00
barfowl
5d868200db Introduction of face-varying channels influencing feature adaptive refinement:
- added FVar channel consideration to TopologyRefiner's feature selection
    - added more simple access methods to FVarLevel
    - added _xordinary tag to FVarLevel::ValueTag; initialize and refine
    - added composite tag method for FVarLevel::ValueTag similar to Level::VTag
    - parameterize FVar topology initialization with regular valence
2015-02-09 17:41:19 -08:00
barfowl
6115eb9c4d Moved <sdc/type.h> to <sdc/types.h> 2015-01-06 14:26:20 -08:00
manuelk
48cf4b6528 Refactor Vtr::Array for better "const" safety
Const' declared instances of Vtr::Array do not protect the pointer held
privately by the class properly. In order to force the compiler to
protect this pointer, we removed all non-const accessors from Vtr::Array
(now renamed Vtr::ConstArray) and moved them to a child class (Vtr::Array),
which requires const_cast<> operators internally to allow access.

The change & renaming is then propagated to all internal dependencies.
2014-12-15 10:23:13 -08:00
barfowl
5ccd94c6d2 Reordered refined face-varying values so those for each vertex are sequential:
- added array accessors to properties of vertex values in vtr::FVarLevel
    - updated construction of base level face-varying topology
    - simplified population of face-varying properties in vtr::FVarRefinement
    - updated Far::TopologyRefiner::Interpolate/LimitFaceVarying() accordingly
2014-11-03 17:31:24 -08:00
barfowl
69e6da8fab Fixed face-varying cases where the sharpness of values are inter-dependent:
- added ValueTag indicating sharpness dependency on another value
    - updated base level tagging to identify dependent semi-sharp values
    - updated refinement to consider dependency when reassessing semi-sharpness
    - updated interpolation to use dependent fractional weight when necessary
2014-10-24 16:15:22 -07:00
barfowl
df23812759 Added proper fractional weighting for semi-sharp FVar boundaries:
- semi-sharp edges interior to FVar regions now properly recognized
    - added clear() method to FVar tags and reworked their initialization
2014-10-13 12:17:25 -07:00
barfowl
4d84dfd7be Redefined face varying "boundary interpolation" to "linear interpolation":
- redefined and documented Sdc::Options::FVarLinearInterpolation
    - included "corners only" mode not possible with Hbr
    - updated usage within Vtr::FVarLevel
2014-10-09 19:36:25 -07:00
barfowl
f706062ab1 Added support for semi-sharp features along face-varying boundaries:
- added semi-sharp tag to FVar ValueTags and applied in base FVarLevel
    - re-assess status of tagged semi-sharp values in each FVarRefinement
    - detect and apply fractional weighting in InterpolateFaceVarying()
2014-10-06 12:07:44 -07:00
barfowl
606e8fc1b9 Added support for face-varying boundary interpolation options:
- "propagate corners" added as new enumeration to Sdc::Options
    - topology tags within FVar channel initialized and propagated
    - face-varying Interpolate() method updated to deal with creases
2014-09-29 18:46:33 -07:00
manuelk
c399655dcc Landing 3.0.0.alpha
Sync'ing the 'dev' branch with the 'feature_3.0dev' branch at commit 68c6d11fc36761ae1a5e6cdc3457be16f2e9704a

The branch 'feature_3.0dev' is now locked and preserved for historical purposes.
2014-09-05 15:07:46 -07:00