使用Unity3D的Shader Graph中围绕轴点的UV上的权重图选择旋转顶点

问题描述 投票:-1回答:2

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

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

我在该区域获得受影响的顶点没有问题。问题是我想旋转这些顶点以用于可自定义的轴,例如轴(X:1,Y:0,Z:1)使用重物,以便围绕枢轴点旋转。我希望底部选择保持连接到网格的其余部分,而其他受影响的顶点围绕该点整齐地旋转。可以使用拆分的UV通道绘制重量,如图所示:enter image description here

我将加权区域与旋转节点相乘以对其进行旋转。然后将其添加到负相乘位置(其余的顶点,不包括旋转区域),以获得最终的输出位移。enter image description here但是旋转的网格是弯曲的。我需要它变得刚硬,因为整个零件都随着weight = 1旋转,除了非常旋转的顶点。the mesh with zero rotation enabledweighted poor rotation and pivot point

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

desired rotation but lacking needed pivot point

我该如何正确执行此操作?待了好几天,请帮忙:')

unity3d rotation vertex shader-graph
2个回答
1
投票

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

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

我认为您有两种选择:

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

  2. 使用骨头并在您选择的3D包装中绘制砝码。这样,您可以记录动画,并使用Unity蒙皮的网格着色器对其进行渲染。

希望有所帮助。


1
投票

尝试一下:

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

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

我尚未在图表中实现您的权重,因为我只是想向您展示该过程。您可以轻松地将其插入。

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

第一张图片具有默认的对象轴。第二个图像具有调整后的枢轴。最终的图像是图形。 (请注意,逻辑组正在基于UV蒙版驱动顶点旋转)。

我希望这会有所帮助。

Default object Pivot

Adjusted pivot position

Graph

© www.soinside.com 2019 - 2024. All rights reserved.