0

TLDR:无法找出正确的 Shader Graph 设置以使用 UV 和顶点置换来廉价地为(未绑定的)网格设置动画。

我正在尝试根据 UV 坐标旋转网格的一部分,例如:从 X 0 到 X 0.4,从 Y 0 到 Y 0.6。考虑到这一点,创建网格的 uv 映射。

我在这个区域获得受影响的顶点没有问题。问题是我想使用权重为可自定义的轴旋转这些顶点,例如轴(X:1,Y:0,Z:1),以便旋转围绕枢轴点进行。我希望底部选择保持连接到网格的其余部分,而其他受影响的顶点整齐地围绕该点旋转。如图所示,可以使用拆分 UV 通道来绘制权重: 在此处输入图像描述

我将加权区域与旋转节点相乘以旋转它。我将其添加到负相乘位置(其余顶点,不包括旋转区域)以获得最终输出位移。 在此处输入图像描述 但是旋转的网格是弯曲的。我需要它是僵硬的,因为除了非常旋转的顶点之外,整个部分以 weight=1 旋转。 启用零旋转的网格 加权不良旋转和枢轴点

我可以使用基于 weight=1 的旋转来获得它,但枢轴点成为网格的中心,而不是所需的点。

所需的旋转但缺少所需的枢轴点

我怎样才能正确地做到这一点? 好几天了,请帮忙:')

4

2 回答 2

1

我大约一个月前开始使用 Unity,这是我遇到的第一个问题。

您使用的节点将始终转换原点周围的顶点。

我认为您有两种选择:

  1. 通过要旋转翅膀的位置的偏移量平移顶点。这需要以某种方式将机翼的枢轴点存储在网格中 - 这可以通过使用备用 UV 通道或使用顶点颜色通道来完成。

  2. 使用骨骼并在您选择的 3D 包中绘制权重。这样,您可以录制动画,并使用 Unity 的蒙皮网格着色器进行渲染。

希望有帮助。

于 2020-05-31T16:40:22.710 回答
1

尝试这个:

我已将您示例中的紫外线范围应用于单位大小的球体。球体的原始枢轴位于中心,其调整后的枢轴在 Y 轴上移动了 0.5。

着色器唯一不知道的变量是调整后的枢轴位置;所以我通过这个材料。

我没有在图表中实现你的体重,因为我只是想向你展示这个过程。您可以轻松地将其插入。

颜色输出仅用于调试目的。

第一个图像是默认的对象轴。第二张图片是调整后的枢轴。最后的图像是图表。(注意逻辑组是基于 UV 遮罩驱动顶点旋转)。

默认对象枢轴

调整后的枢轴位置

图形

于 2020-06-01T14:14:07.543 回答