Estoy tratando de hacer un visor de nubes de puntos con webgl, cada tutorial que he encontrado explica cómo funciona la proyección con objetos como un cubo.
pero esa proyección/perspectiva no funciona con puntos porque el tamaño del punto no cambia.
¿Cómo cambio el tamaño de mi punto según el eje Z?
var vertCode = 'attribute vec3 coordinates;' + 'uniform mat4 rMatrix;' + 'void main(void) {' + ' gl_Position = rMatrix * vec4(coordinates, 1.0);' + 'gl_PointSize = 5.0;'+ '}';[...]
const matrix = glMatrix.mat4.create(); const projectionMatrix = glMatrix.mat4.create(); const finalMatrix = glMatrix.mat4.create(); glMatrix.mat4.perspective(projectionMatrix, 75 * Math.PI/180, // vertical field of view ( angle in radian) canvas.width/canvas.width, //aspect ratio 1e-4, // near cull distance ... aka null plane 1e4 // fat cull distance ); //glMatrix.mat4.translate(matrix, matrix,[-.5,-.5,-.5]); function animate(){ requestAnimationFrame(animate); glMatrix.mat4.rotateY(matrix, matrix, Math.PI/6) glMatrix.mat4.multiply(finalMatrix, projectionMatrix, matrix); gl.uniformMatrix4fv(uniformLocations.matrix, false, matrix); gl.drawArrays(gl.POINTS, 0, vertices.length/3); }subpregunta: en este momento mi código es una rotación constante, cualquier recurso donde buscar cómo obtener el evento del mouse y crear una o 2 matrices de rotación basadas en el arrastre del mouse (no estoy seguro si puedo codificar la rotación x e y en el misma matriz)
subpregunta 2: ¿alguna idea sobre cómo tener puntos redondos en lugar de uno cuadrado? ¿Tengo que crear una esfera pequeña?