【发布时间】:2019-08-01 08:23:34
【问题描述】:
我在运行时创建了一个带有特殊共享的网格。共享具有以下属性:
1.第一次上色时颜色为蓝色
2.第二次上色时颜色为黄色
3.第三次上色时颜色为红色
4.当它被着色为第四个或更多时,颜色变为绿色
以下是彩色区域的示例:
在上图中,绿色区域有很多层。我无法通过对网格中的三角形求和来计算面积,因为有很多重叠。
编辑!我正在更新问题,提供更多信息
网格是使用以下代码生成的(它不是整个代码,足以大致了解网格是如何生成的)
for (int i = start; i<colorUntil; i++)
{
parent.position = currentPosition;
Vector3 relativePos = points[i + 1] - points[i];
if (relativePos.magnitude > 0.5)
{
parent.rotation = Quaternion.LookRotation(relativePos);
}
currentPosition = points[i];
Vector3 offset = parent.right * width / 2f;
vertices.Add(currentPosition - offset);
vertices.Add(currentPosition + offset);
uvs.Add(new Vector2(0, 1));
uvs.Add(new Vector2(1, 1));
if (vertices.Count< 4)
{
return;
}
int c = vertices.Count;
triangles.Add(c - 1);
triangles.Add(c - 2);
triangles.Add(c - 3);
triangles.Add(c - 3);
triangles.Add(c - 2);
triangles.Add(c - 4);
Vector3[] v = new Vector3[c];
Vector2[] uv = new Vector2[c];
int[] t = new int[triangles.Count];
vertices.CopyTo(v, 0);
uvs.CopyTo(uv, 0);
triangles.CopyTo(t, 0);
mesh.vertices = v;
mesh.triangles = t;
mesh.uv = uv;
}
现在我必须计算每种颜色的面积。鉴于上面的网格是否可以计算每种颜色的面积?欢迎提出任何建议。
编辑 2!
显然,没有办法使用 mash 信息计算彩色区域(至少根据我的研究)。我如何寻找一种创造性的方式来实现我想要的。我会欢迎并感谢任何建议。
【问题讨论】:
-
您可以添加用于着色它们的代码吗?一般来说:遍历
MeshFilter.mesh->Mesh.trinagles,计算每个triangles area并将相应的区域相加 -
如果您可以访问网格,那么您可以访问三角形吗?你知道每个三角形的颜色吗?如果是,就循环遍历它们。
-
哦,好吧..您应该使用该信息更新问题,因为尚不清楚这是关于重叠网格的。再说一遍:您问题中的图像是如何生成的?首先是什么负责为网格着色?
-
你也看到this了吗?您是否尝试过我们之前提到的任何事情?
-
恕我直言,由于区域不规则,几乎不可能获得准确的结果,如果近似结果还可以,您可以将此场景渲染为大纹理,然后计算绿色像素。