我想从剪影创建网格

I want to create a mesh from a silhouette

我在 Unity 工作,因此使用 C# 编码,但欢迎任何想法或起点。

我真的不知道如何描述我的问题,如果有 'simple' 解决方案,但我会尝试。 我有一个投射 2 个阴影的对象(可能仅限于简单的形状)。 我想生成一个具有该阴影形状的网格。 如下图所示,我用绿色绘制了所需的网格。

desired meshes drawn in green

我一直在改变我的初始网格的顶点,在某些特定情况下(没有旋转的对象)找到了解决方案,但我还没有找到足够好的解决方案。 有没有人有可行的想法?

提前致谢, 巴特

我花时间创建了一个完全符合您所说的项目: Preview it here

方法

使用 raycasts 我从光源计算了特定对象的投影顶点。该方法可能看起来效率低下,但只要指定的网格具有低顶点数,一切都应该没问题。

然后通过取投影顶点的平均值,我计算出投影立方体的位置。 Vector3 averagePosition = new Vector3(verticies.Average(vector => vector.x), verticies.Average(vector => vector.y), verticies.Average(vector => vector.z));

然后通过获取每个投影顶点位置分量 (x,y,z) 的范围,我计算了立方体的比例。Vector3 averageScale = new Vector3(verticies.Max(vector => vector.x) - verticies.Min(vector => vector.x), verticies.Max(vector => vector.y) - verticies.Min(vector => vector.y), normalScale);

注意:我没有生成全新的网格。我只是在操纵带有脚本的预制立方体的转换。

缺点是目前这种方法仅限于一个轴。可以修复。

从 Github

下载项目

GitHub link: https://github.com/MyIsaak/Shadow-Mesh/tree/master

如果您能做出任何改进来帮助社区,那就太好了。您可以免费将此项目用于商业和非商业用途。