在Unity3D的着色器图形中,使用UV上的权重贴图围绕轴心点旋转选定的顶点

在Unity3D的着色器图形中,使用UV上的权重贴图围绕轴心点旋转选定的顶点,unity3d,rotation,vertex,shader-graph,Unity3d,Rotation,Vertex,Shader Graph,TLDR:无法找出正确的着色器图形设置,以便使用UV和顶点置换廉价地为未缩放网格设置动画 我正在尝试基于UV坐标旋转网格的一部分,例如:fromX 0 toX 0.4,fromY 0 toY 0.6。创建网格时,请记住这一点 我在获取此区域中受影响的顶点时没有问题。问题是,我想使用权重为可自定义轴(例如axisX:1、Y:0、Z:1)旋转这些顶点,以便围绕枢轴点旋转。我希望底部选择与网格的其余部分保持连接,同时其他受影响的顶点围绕该点整齐地旋转。 如图所示,可以使用分割UV通道绘制重量: 我用

TLDR:无法找出正确的着色器图形设置,以便使用UV和顶点置换廉价地为未缩放网格设置动画

我正在尝试基于UV坐标旋转网格的一部分,例如:fromX 0 toX 0.4,fromY 0 toY 0.6。创建网格时,请记住这一点

我在获取此区域中受影响的顶点时没有问题。问题是,我想使用权重为可自定义轴(例如axisX:1、Y:0、Z:1)旋转这些顶点,以便围绕枢轴点旋转。我希望底部选择与网格的其余部分保持连接,同时其他受影响的顶点围绕该点整齐地旋转。 如图所示,可以使用分割UV通道绘制重量:

我用一个旋转节点乘以加权面积来旋转它。 我把它和其他顶点的负相乘位置相加,不包括旋转区域,得到最终的输出位移。 但是旋转的网格是弯曲的。我需要它是僵硬的,因为在整个部分旋转重量=1,除了非常旋转的顶点。

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

如何才能正确地执行此操作?
“我已经使用Unity好几天了,请帮忙:”

我大约一个月前开始使用Unity,这是我面临的第一个问题之一

正在使用的节点将始终围绕原点变换顶点

我想你有两个选择:

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

使用骨骼并在选定的三维包中绘制权重。通过这种方式,可以录制动画,并使用Unity的蒙皮网格着色器进行渲染

希望能有所帮助。

试试这个:

我使用了你的例子中的UV范围应用于单位大小的球体。球体原始枢轴位于中心,其调整枢轴在Y轴上移动0.5

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

我没有在图中实现你的权重,因为我只是想向你展示这个过程。你可以很容易地把它插上

颜色输出仅用于调试目的

第一个图像使用默认的对象轴。 第二个图像是调整后的轴。 最后一个图像是图形。注意,逻辑组基于UV遮罩驱动顶点旋转

我希望这有帮助


谢谢你的回复。我曾考虑过这两种选择,尽管我希望有更好的办法。另一种方法是对齐网格,使机翼枢轴成为origo 0,0,0。。仍然在等待另一个答案,因为可能会有一些我不知道的着色器图形技巧很抱歉迟了答复。在过去的几天里,我一直在尝试你的图表,虽然我看到它如何很好地处理枢轴,但我在精确定位枢轴本身时遇到了问题。我现在正在研究将UV坐标转换为重心3D坐标,以便在UV壳中定义轴。你对这种方法有何看法?