MeshRegion
has a "SmoothShading"
PlotTheme
which automatically computes the VertexNormals
to create a nice smooth rendering. For example:
reg = BoundaryDiscretizeRegion[Ball[], PlotTheme -> "SmoothShading",
PrecisionGoal -> 1, MaxCellMeasure -> 0.1]
Suppose that the only data I have available is this:
gr = GraphicsComplex[MeshCoordinates[reg], MeshCells[reg, 2]];
It looks like this:
Graphics3D[{EdgeForm[None], gr}]
Is there built-in functionality which will compute the vertex normals for a mesh like this?
I know that I can make a MeshRegion
called reg
, set "SmoothShading"
on it, convert to Graphics3D
using Show
, then extract the options from the contained GraphicsComplex
: Cases[Show[reg], GraphicsComplex[_, _, opt___] :> opt, Infinity]
. But this is a hack and probably unreliable. What I am looking for is a built-in and easy way to return the vertex normals in a structured form. I am hoping that this functionality is exposed, I just didn't find it yet.
VertexNormals -> Region`Mesh`MeshCellNormals[reg, 0]
is not what you're looking for? Or is it? $\endgroup$