Feature request – enabling C0-to-G1 continuity upgrade for geometries

Roman Lygin's picture

Problem statement:
Unlike other modeling kernels (e.g. Parasolid), Open CASCADE has more relaxed requirements to geometry underneath topology in terms of continuity. While OCC accepts C0 pcurves, 3D curves and surfaces, other kernels require at least G1 continuity. G1 continuity requires smoothness of tangent/normal direction (whereas C1 continuity additionally strengthens that requirement to magnitude of the tangent or the normal). Therefore when exporting 3D models to other kernels, it is required to upgrade the geometry to G1.

Proposal:
The proposal is to design an algorithm for C0-to-G1 upgrade for 2D/3D curves and surfaces that would apply less significant modifications than for C0-to-C1 upgrade.

OCC does have utilities to upgrade to Cn continuity (e.g. ShapeUpgrade_ShapeDivideContinuity et al). These tools either reduce multiplicity of the knot which is equal to degree (i.e. where the geometry has C0 continuity) or make split at that knot. Thus, this upgrade C0-to-C1 continuity is done using more significant modifications than might be required for C0-to-G1 upgrade. For instance, Parasolid does not modify knots of G1 continuity (i.e. where multiplicity is degree but tangents are collinear within a tolerance) and readjusts knot multiplicities where G1 is not initially provided.

The proposal is to design an algorithm for C0-to-G1 upgrade for 2D/3D curves and surfaces that would apply less significant modifications than for C0-to-C1 upgrade. The new functionality might reside in ShapeUpgrade_Split*Continuity classes that would specifically recognize G1 requirement.

This functionality might be used in own OCC exporters (to STEP, IGES, etc) or in customer projects where such requirement might be relevant.

Roman Lygin's picture

Mantis link

www.opencascade.com

Copyright 2011-2019
OPEN CASCADE SAS
Contact us