Three.js顶点着色器渲染所有几何体三角形,使其面向摄影机

Three.js顶点着色器渲染所有几何体三角形,使其面向摄影机,three.js,vertex-shader,Three.js,Vertex Shader,我想在Three.js中创建一个顶点着色器来渲染纹理几何体的面,以便所有三角形都面向摄影机 这是为了模拟Three.js Points的功能和性能,但不受gl_PointSize的大小限制 我不确定在顶点着色器中执行什么计算。非常感谢您的帮助。您必须为几何体添加自定义属性,最容易使用的属性是指向三角形中心的向量 在顶点着色器中,您必须计算如何移动每个顶点,现在 顶点位置 矢量对中心 顶点法线==面法线 摄影机方向(来自矩阵) 由此,您可以计算三角形中心,该中心是静态的,并且计算旋转顶点必须围

我想在Three.js中创建一个顶点着色器来渲染纹理几何体的面,以便所有三角形都面向摄影机

这是为了模拟Three.js Points的功能和性能,但不受gl_PointSize的大小限制


我不确定在顶点着色器中执行什么计算。非常感谢您的帮助。

您必须为几何体添加自定义属性,最容易使用的属性是指向三角形中心的向量

在顶点着色器中,您必须计算如何移动每个顶点,现在

  • 顶点位置
  • 矢量对中心
  • 顶点法线==面法线
  • 摄影机方向(来自矩阵)
由此,您可以计算三角形中心,该中心是静态的,并且计算旋转顶点必须围绕三角形中心绕垂直于向量到中心的轴,这样法线将作为相机方向的逆方向出现


数学不是很复杂,但编写着色器代码很乏味,因为不存在调试-我建议您首先编写一个代码来旋转几何体的位置(仅使用相同的参数)并将其移植到着色器

您必须向几何体添加自定义属性,最容易使用的是指向三角形中心的向量

在顶点着色器中,您必须计算如何移动每个顶点,现在

  • 顶点位置
  • 矢量对中心
  • 顶点法线==面法线
  • 摄影机方向(来自矩阵)
由此,您可以计算三角形中心,该中心是静态的,并且计算旋转顶点必须围绕三角形中心绕垂直于向量到中心的轴,这样法线将作为相机方向的逆方向出现


数学不是很复杂,但是编写着色器代码很乏味,因为不存在调试-我建议您首先编写一个代码来旋转几何体的位置(仅使用相同的参数)并将其移植到着色器

使用lookAt感谢,但是,对于单独的对象,lookAt是可以的——我需要一个对象中潜在的数千个三角形来面对摄影机,因此需要顶点着色器。使用lookAt谢谢,但是lookAt对于单独的对象是可以的-我需要一个对象中潜在的数千个三角形来面对摄影机,因此需要顶点着色器。太好了-谢谢这一点,完全有意义。这是一个好主意,可以先在JS中工作,然后再转换为GLSL。你曾经工作过吗?我需要做一些类似的事情和任何示例代码将不胜感激!太好了-谢谢你,这完全有道理。这是一个好主意,让它先在JS中工作,然后再转换成GLSL。你有过这样的工作吗?我需要做一些类似的事情和任何示例代码将不胜感激!