c# - 计算阴影的大小

标签 c# unity3d shadow

我创建了一个 Unity3d 项目,并在物体后面使用了一些聚光灯来获得它们的阴影。一旦反射到地板上,我试图获得阴影的真实大小(使用我的比例)。有没有办法做到这一点?

最佳答案

我相信您的问题主要属于 Mathematics Stack Exchange但我希望这里有一种方法可以引导您走向正确的方向。

我在这里做出的假设是:

  • 当 scale = 1 时你知道你的物体高度
  • 你的对象在它的顶部不是太大(或者你必须将它的一半宽度包括在数学中)
  • 你的对象枢轴被放置在它的底部(在人身上:在它的脚下)
  • 你的物体被放置在地板上(因此不是在空中:否则计算起来会有点复杂,但想法是一样的)

这是一个快速的情况示意图: enter image description here

现在您可以使用如下方法计算阴影的大小:

Vector3 topPoint = YOUR_OBJECT.transform.position + YOUR_OBJECT.transform.lossyScale.y * YOUR_OBJECT_HEIGHT;
Vector3 lightFlatPoint = new Vector3(YOUR_LIGHT.transform.position.x, topPoint.y, YOUR_LIGHT.transform.position.z);

float lightDeltaY = YOUR_LIGHT.transform.position.y - topPoint.y;
float lightFlatToTopPointDistance = Vector3.Distance(lightFlatPoint, topPoint);

float shadowSize = ((YOUR_OBJECT.transform.lossyScale.y * YOUR_OBJECT_HEIGHT) / lightDeltaY) * lightFlatToTopPointDistance;

希望这对您有所帮助,

关于c# - 计算阴影的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43653184/

相关文章:

c# - 拒绝为 C# (Unity) 推送基于 Git 提交代码的样式检查?

ios - 如何确定 "z-index of a shadow"

css - 图像的透明度与框阴影不能很好地协同工作

c# - 我如何删除字符串 C# WPF 中的前导零

c# - 根据条件运行 NUnit 测试

c# - 带有 Web 引用的 OperationContextScope

c# - Visual Studio 自动完成对 Unity 过于激进

c# - 防止静态库被初始化

swift - SceneKit – 来自定向光的阴影取决于相机角度

c# - ASP.NET - 单一解决方案、MVC 和 WebApi 项目,每个项目都有单独的模型?