如何将网格的每个顶点绘制成圆形?
答案 0 :(得分:1)
假设你在谈论2D网格:
创建一个圆形游戏对象(或带有圆形纹理的游戏对象),并将其导出为预制件:
var meshFilter = GetComponent(typeof(MeshFilter)) as MeshFilter;
var mesh = meshFilter.mesh;
foreach(var v in mesh.vertices)
{
var obj= Instantiate(circlePrefab, v, Quaternion.identity);
}
答案 1 :(得分:1)
您可以使用geometry shaders在GPU上创建billboarding geometry from each vertex。然后,您可以将圆形创建为几何体,或创建四边形并使用圆形纹理绘制它们(我建议稍后使用)。 但几何着色器尚未得到广泛支持,在iOS中则更少。如果你确定你将运行它的计算机支持它,那就去吧。
如果几何着色不是一个选项,那么您最好的两个选项是:
Particle System
。要在每个顶点位置创建粒子,请使用ParticleSystem.Emit。您系统的模拟空间应为Local
。如果顶点移动,请使用SetParticles更新它们。Mesh
。如果摄像机和点不移动,您可以创建固定形状的网格。否则,您需要在程序网格或着色器上为广告牌设置动画。 更新:5,000,000分是批次。虽然Particle Systems
可以通过创建大量内部网格来处理大数字,但是大量的处理确实会占用CPU。即使这些点在空间中是静态的,也必须每帧更新一个没有特殊着色器的程序网格,以实现广告效果。
我的建议是创建许多网格(单个网格无法处理那么多的几何体)。网格将每个点组成一个四边形(如果你敢,则为三角形,以使其更快),但四个顶点将位于同一点。然后在顶点程序中使用纹理坐标将其展开为广告牌四元组。