Rendering a Spherical Sector

I want to create a spherical sector from a sphere game object whose dimensions (Area) can be modified in real time (runtime) using it’s azimuth and elevation angles.

I tried to create a shader that does so but cannot get any where, all I am doing is distorting the shape of the sphere to a ellipsoid.

Any idea on how to achieve this?

Thanks

Its done. Here is the code

using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using UnityEngine;
using UnityEngine.UI;
using UnityEditor.UIElements;
  
public class Please : MonoBehaviour
{
    public int ThetaUpper = 30;
    public int ThetaLower = 40;
    public int PhiUpper = 30;
    public int PhiLower = 10;
    public bool edit = true;
    private int ThetaU;
    private int ThetaL;
    private int PhiU;
    private int PhiL;
    public float size = 0.001f;
    private readonly int res = 2;
    private Mesh mesh;
    private MeshFilter meshFilter;
    public float radius = 5.0f;
    private GameObject[] points;
    private Vector3[] vertices;
  
    // Start is called before the first frame update
    void Start()
    {
        this.gameObject.AddComponent<MeshFilter>();
        this.gameObject.AddComponent<MeshRenderer>();
        meshFilter = this.gameObject.GetComponent<MeshFilter>();
        meshFilter.sharedMesh = new Mesh();
        mesh = meshFilter.sharedMesh;
        Create();
        Assign();
    }
  
    bool check()
    {
        if (ThetaLower == ThetaL && ThetaUpper == ThetaU && PhiLower == PhiL && PhiUpper == PhiU)
            return true;
        else return false;
    }
    void Assign()
    {
        ThetaU = ThetaUpper;
        ThetaL = ThetaLower;
        PhiL = PhiLower;
        PhiU = PhiUpper;
    }
  
    void Create()
    {
        int index1 = (ThetaLower - ThetaUpper) * 2;
        int index2 = (PhiUpper - PhiLower) * 2;
        vertices = new Vector3[index1 * index2];
        int[,] temp = new int[index1, index2];
        int no = 0;
        for (int i = 0; i < index1; i++)
        {
            float theta = ((0.5f * i) + ThetaUpper) * Mathf.Deg2Rad;
            for (int j = 0; j < index2; j++, no++)
            {               
                float phi = ((0.5f * j) + PhiLower) * Mathf.Deg2Rad;
                float x = radius * Mathf.Sin(theta) * Mathf.Cos(phi);
                float z = radius * Mathf.Sin(theta) * Mathf.Sin(phi);
                float y = radius * Mathf.Cos(theta);
                vertices[no] = new Vector3(x, y, z);
                temp[i, j] = no;
            }
        }
        int[] triangles = new int[(index1 - 1) * (index2 - 1) * 6];
        int triIndex = 0;
        for (int i = 0; i < index1-1; i++)
        {
            for (int j = 0; j < index2-1; j++)
            {
                triangles[triIndex] = temp[i, j];
                triangles[triIndex + 1] = temp[i + 1, j + 1];
                triangles[triIndex + 2] = temp[i, j + 1];
  
                triangles[triIndex + 3] = temp[i, j];
                triangles[triIndex + 4] = temp[i + 1, j];
                triangles[triIndex + 5] = temp[i + 1, j + 1];
  
                triIndex += 6;
            }
        }
  
        mesh.Clear();
        mesh.vertices = vertices;
        mesh.triangles = triangles;
        mesh.RecalculateNormals();
    } 
}

This Works

Hello @LionWare I have exactly the same problem, however the sphere does not render any visible segments when using your solution.
When I select it in the scene view I can see that it creates the segments, but even when I assign a material to it, it stays invisible.

Do you have any further instructions on how to use the script?