Unity3d 动态生成具有圆柱段形状的对象

Unity3d 动态生成具有圆柱段形状的对象,unity3d,Unity3d,有没有可能生成这样一个统一的动态形状的对象 我需要对象的角度能够从一条细条变为一个完整的类似甜甜圈的部分,因此建模每个可能的版本将非常耗时,而且很难使用 您可以通过编程方式生成网格,如注释所示 但是,如果角度是动态的,即经常变化,那么这样做会浪费CPU时间和GPU带宽,最好是花在其他事情上。更好的选项是,对180°或270°形状进行建模(或在启动时以编程方式生成),并编写顶点着色器以围绕中心向上或向下滚动形状 为了保持简单,对形状进行建模,使圆柱体轴为Z,中心XY为{0,0}(Z不重要),形状的

有没有可能生成这样一个统一的动态形状的对象

我需要对象的角度能够从一条细条变为一个完整的类似甜甜圈的部分,因此建模每个可能的版本将非常耗时,而且很难使用


您可以通过编程方式生成网格,如注释所示

但是,如果角度是动态的,即经常变化,那么这样做会浪费CPU时间和GPU带宽,最好是花在其他事情上。更好的选项是,对180°或270°形状进行建模(或在启动时以编程方式生成),并编写顶点着色器以围绕中心向上或向下滚动形状

为了保持简单,对形状进行建模,使圆柱体轴为Z,中心XY为
{0,0}
(Z不重要),形状的开口朝向
-X
,形状围绕Y=0平面对称。我说的是对象的局部坐标,然后可以根据需要定位/旋转模型。 以下是顶点着色器代码(未测试):


这样,只需更新单个常量变量
rollFactor
,即可将形状转换为任意角度。如果初始形状为270°,则将常数设置为1.33334以卷起一个完整的甜甜圈,将其设置为1.0以保持270°,将其设置为0.33333以卷起90°,如屏幕截图上所示,等等。

就目前而言,这个问题对于本网站的范围来说有点广泛。这会很难,但你可以考虑。这需要学习如何对多边形进行数学建模(例如,如何沿圆的一段放置点)。然后,需要了解如何将其转化为顶点和三角形(如何将形状分解为渲染网格所需的三角形)。试一试,如果你在编程时遇到了具体问题,那么在这个网站上写一个更具体的问题。祝你好运不要认为它太宽了。。很清楚他想要什么。我以前用圆环做过类似的事情,也许你也可以用它来做圆柱体
float len = length( float2( position.x, position.y ) );
float newAngle = atan2( position.y, position.x ) * rollFactor;
float3 newPosition = float3( len * cos( newAngle ), len * sin( newAngle ), position.z );
output.position = UnityObjectToClipPos( newPosition );