private void GenerateCapVertices()
    {
        for (var i = 0f; i <= 1.001f; i += 1f / (StemHeightDivisions))
        {
            var baseVertex = _capSplineController.GetHermiteAtTime(i);
            //_stemVertices.Add(vertex);

            for (var theta = 0.0f; theta < 2 * Mathf.PI + 0.001f; theta += 2 * Mathf.PI / StemAxisDivisions)
            {
                var vertex = new Vector3();

                vertex.x = Mathf.Cos(theta) * baseVertex.x;
                vertex.y = baseVertex.y;
                vertex.z = Mathf.Sin(theta) * baseVertex.x;

                _capVertices.Add(vertex);

                var uv = new Vector2(theta / (2 * Mathf.PI) * _uTiling, i * _vTiling);
                _capUvs.Add(uv);
            }
        }

        Debug.Log(string.Format("Vertices Generated: " + _stemVertices.Count));
    }
    private void GenerateStemVertices()
    {
        for (var i = 0f; i <= 1.001f; i += 1f / (StemHeightDivisions))
        {
            for (var theta = 0.0f; theta < 2 * Mathf.PI + 0.001f; theta += 2 * Mathf.PI / StemAxisDivisions)
            {
                var vertex = _stemSplineController.GetHermiteAtTime(i);

                vertex.x += Mathf.Cos(theta) * Mathf.Lerp(StemBaseRadius, StemTopRadius, i);
                vertex.z += Mathf.Sin(theta) * Mathf.Lerp(StemBaseRadius, StemTopRadius, i);

                _stemVertices.Add(vertex);

                var uv = new Vector2(theta / (2 * Mathf.PI) * _uTiling, i * _vTiling);
                _stemUvs.Add(uv);
            }
        }

        Debug.Log(string.Format("Vertices Generated: " + _stemVertices.Count));
    }