Proyectar un punto 3D al espacio de pantalla 2D utilizando una matriz de cámara en perspectiva

Estoy intentando proyectar una serie de puntos 3D en la pantalla usando una matriz de cámara en perspectiva. No tengo espacio mundial (o considero que es una matriz de identidad) y mi cámara no tiene espacio de cámara (o lo considero una matriz de identidad), tengo una matriz 4x4 para mi espacio de objetos.

Estoy tomando la matriz de objetos y multiplicándola por la matriz de perspectiva de la cámara, generada con el siguiente método:

Matrix4 createPerspectiveMatrix( Float fov, Float aspect, Float near, Float far )
{
    Float fov2 = (fov/2) * (Math.PI/180);
    Float tan = Math.tan(fov2);
    Float f = 1 / tan;

    return new Matrix4 ( 
        f/aspect, 0, 0, 0,
        0, f, 0, 0,
        0, 0, -((near+far)/(near-far)), (2*far*near)/(near-far),
        0, 0, 1, 0 
    );
}

Luego tomo mi punto [x, y, z, 1] y lo multiplico por la multiplicación resultante de la matriz de perspectiva y la matriz de objeto.

La siguiente parte es donde me estoy confundiendo, estoy bastante seguro de que necesito obtener estos puntos dentro de los rangos de -1 y 1, o 0 y 1, y, en el caso de tener el primer conjunto de valores , Luego multiplicaría los puntos por el ancho y la altura de la pantalla para las coordenadas de la pantalla x e y respetuosamente o multiplicaría los valores por la altura / 2 y el ancho / 2 de la pantalla y agregaría los mismos valores a los puntos respectivos.

¡¡Se agradecería enormemente cualquier paso a paso que me diga cómo se podría lograr esto o dónde podría estar yendo mal con todo esto !! :RE

Saludos cordiales a todos!

PD En el ejemplo de una matriz de identidad / traducción, mi formato de matriz en mi modelo es:

[1, 0, 0, tx,
 0, 1, 0, ty,
 0, 0, 1, tz,
 0, 0, 0, 1 ]

Respuestas a la pregunta(2)

Su respuesta a la pregunta