我想从剪影创建网格
I want to create a mesh from a silhouette
我在 Unity 工作,因此使用 C# 编码,但欢迎任何想法或起点。
我真的不知道如何描述我的问题,如果有 'simple' 解决方案,但我会尝试。
我有一个投射 2 个阴影的对象(可能仅限于简单的形状)。
我想生成一个具有该阴影形状的网格。
如下图所示,我用绿色绘制了所需的网格。
我一直在改变我的初始网格的顶点,在某些特定情况下(没有旋转的对象)找到了解决方案,但我还没有找到足够好的解决方案。
有没有人有可行的想法?
提前致谢,
巴特
我花时间创建了一个完全符合您所说的项目:
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
如果您能做出任何改进来帮助社区,那就太好了。您可以免费将此项目用于商业和非商业用途。
我在 Unity 工作,因此使用 C# 编码,但欢迎任何想法或起点。
我真的不知道如何描述我的问题,如果有 'simple' 解决方案,但我会尝试。 我有一个投射 2 个阴影的对象(可能仅限于简单的形状)。 我想生成一个具有该阴影形状的网格。 如下图所示,我用绿色绘制了所需的网格。
我一直在改变我的初始网格的顶点,在某些特定情况下(没有旋转的对象)找到了解决方案,但我还没有找到足够好的解决方案。 有没有人有可行的想法?
提前致谢, 巴特
我花时间创建了一个完全符合您所说的项目: 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
如果您能做出任何改进来帮助社区,那就太好了。您可以免费将此项目用于商业和非商业用途。