buildMesh method

  1. @override
ShapeMesh buildMesh([
  1. ShapeUv uv = ShapeUv.natural
])
override

Its triangles, textured by uv.

Implementation

@override
ShapeMesh buildMesh([ShapeUv uv = ShapeUv.natural]) {
  final r = Primitive3D.size(radius),
      h = Primitive3D.size(height),
      hy = h / 2;
  final s = Primitive3D.count(segments, 3, 128);
  final slant = math.sqrt(r * r + h * h);
  final nr = h / slant, ny = -r / slant;
  final along = uv.anyway(slant);
  final b = MeshBuilder(uv)
    ..lathe(
      [(0, -hy, nr, ny, 0), (r, hy, nr, ny, along)],
      s,
      aroundLength: uv.around(r),
      profileLength: along,
    )
    ..disc(r, hy, s, up: false);
  final mesh = b.build();
  return smooth ? mesh : mesh.faceted();
}