首页 文章

我想用剪影创建一个网格

提问于
浏览
1

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

我真的不知道如何描述我的问题,如果有一个“简单”的解决方案,但我会尝试 . 我有一个对象(可能会限制自己简单的形状)投下2个阴影 . 我想生成一个阴影形状的网格 . 正如您在下面的图像中看到的那样,我以绿色绘制了所需的网格 .

desired meshes drawn in green

我已经搞砸了改变我的初始网格的顶点,并且在某些特定情况下(没有旋转的对象)找到了一个解决方案,但是我找不到一个能够运行得很好的解决方案 . 有没有人有一个可行的想法?

在此先感谢,巴特

1 回答

  • 1

    我花时间创建了一个完全符合你所说的项目: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链接:https://github.com/MyIsaak/Shadow-Mesh/tree/master

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

相关问题