一、绳/杆渲染
在每一帧结束时,绳子模拟完成后,渲染就开始了。有几个渲染组件可用,具有不同的外观和性能特征。它们中的大多数并不直接使用基于原始粒子的 rope 表示。相反,一个名为 ObiPathSmoother 的附加组件生成一个基于帧的绳子的中间表示(可选择抽取(decimated),平滑(smoothed )或扭曲(smoothed )),渲染器将其作为输入进行渲染。
你不需要手动添加 ObiPathSmoother 组件,所有需要的渲染器都会自己添加它。
1.1 Obi路径平滑器(ObiPathSmoother)
三个重要的属性
1.1.1 抽取(Decimation)
阈值用于根据其曲率自适应地减少绳帧的数量。在内部,它使用了Rmer - Douglas - Peucker抽取算法的迭代变体。将decimation设置为零不会执行任何缩减。更高的值将从绳子的直线部分移除帧,使渲染更轻便。
下面的图片显示了在线框模式下使用 ObiRopeExtrudedRenderer 渲染的绳子,可以清楚地看到抽取的效果:
1.1.2 平滑(Smoothing)
平滑迭代应用于抽取后的绳几何。在内部,它使用了 Chaikin 的切角算法的封闭形式变体。将平滑设置为0将不执行任何平滑。更高的值将在现有帧之间插入额外的帧。将低“分辨率(粒子密度)”蓝图值与高“平滑”值相结合,可以生成由很少颗粒组成的视觉上令人愉悦的绳索。
1.1.3 部分捻/扭度(Section twist)
每个绳段的捻度。例如,如果您想制作一个链,其中每个链接相对于前一个扭曲90度,则此值应该为90。
1.2 四种Rope renderers(绳的渲染组件)
在路径平滑组件生成基于帧的绳子表示后,渲染器使用它来输出可见的几何形状。绳索和杆都支持4种不同的渲染组件:
- ObiRopeExtrudedRenderer:沿着绳子的主轴挤压ObiRopeSection资源。这是默认的渲染器。
- ObiRopeLineRenderer:沿着绳子的主轴生成一个面向摄像机的三角形带,类似于Unity的TrailRenderer。这通常比ObiRopeExtrudedRenderer更加节省性能。
- ObiRopeChainRenderer:沿绳段生成预制件。
- ObiRopeMeshRenderer:沿着绳子的路径变形网格的多个实例。这是最昂贵的渲染器,不支持调整大小或撕裂。
1.2.1 ObiRopeExtrudedRenderer (默认)
通过挤压 ObiRopeSection,沿着构成绳子的粒子生成光滑的连续网格。不需要手动创建网格或几何图形。所有这些都是自动生成的。
使用过程模式和默认绳索部分渲染绳索。
渲染器的参数:
- UV锚(UV Anchor):纹理坐标原点所在的绳子上的点。它用标准化坐标表示:0是绳子的起点,1是绳子的终点。
- UV缩放(UV Scale):缩放绳网格中的纹理坐标。
- Normalize V(Normalize V):强制V纹理坐标在绳子开始处为0,在绳子结束处为V刻度。如果你不想让你的纹理沿着绳子平铺,而是与它一起拉伸,请启用此选项。比使用ObiRopeCursor来改变他们的长度有用。
- 截面(Section):用于为网格横截面提供自定义形状。默认资源是一个8段圆,但您可以定义自己的形状。
- 截面厚度刻度(Section thickness scale):根据颗粒半径缩放实际网格厚度。值为1将生成一个完全符合粒子半径的网格。较大的值将使网格比粒子表示更厚,较小的值将使网格更薄。
1.2.2 ObiRopeLineRenderer
生成一个面向摄像机的三角形条,类似于轨迹渲染。这比其他方法更加节省性能,但缺点是必须为每个渲染它的摄像机生成一次绳索网格(而不是为所有摄像机生成一次)。
使用线模式渲染的绳索。
该渲染器的参数:
- UV锚(UV Anchor):纹理坐标原点所在的绳子上的点。它用标准化坐标表示:0是绳子的起点,1是绳子的终点。
- 截面厚度比例(Section thickness scale):根据颗粒半径缩放实际网格厚度。值为1将生成一个完全符合粒子半径的网格。较大的值将使网格比粒子表示更厚,较小的值将使网格更薄。
- UV缩放(UV Scale):缩放绳网格中的纹理坐标。
- Normalize V(Normalize V ):强制V纹理坐标在绳子开始处为0,在绳子结束处为V刻度。如果你不想让你的纹理沿着绳子平铺,而是与它一起拉伸,请启用此选项。特别有用的绳索比使用ObiRopeCursor来改变他们的长度。
1.2.3 ObiRopeChainRenderer
在粒子之间的空间实例化自定义预制件。这就形成了一条由刚性链环组成的链条。您必须提供至少一个预制件作为链条。
绳索渲染使用链模式与链接形状的网格和节扭曲45度。
该模式的参数:
- UV锚(UV Anchor):沿着绳子开始预制循环的点。它用标准化坐标表示:0是绳子的起点,1是绳子的终点。
- 链接比例(Link scale):沿绳索实例化的预制件的比例。
- 随机链接(Randomize links):启用此选项可以从链链接列表中随机选择每个链接。禁用它以按照列表中提供的顺序生成链接。
- 链扣(Chain links):用于构建链扣的链扣预制件列表。
-
节捻度(Section twist):施加于每一节绳上的捻度,以度表示
。
1.2.4 ObiRopeMeshRenderer (最昂贵)
这是最灵活的渲染方法,但也是最昂贵的。它将采用自定义网格,并沿着绳索多次布局,使其变形以遵循绳索的形状和运动。此渲染模式不支持调整大小或撕裂绳索。
在运行时修改的任何网格必须在其导入设置中启用读/写。所以如果使用ObiRopeMeshRenderer,确保网格是可读的!
绳索渲染使用自定义网格模式与Unity的默认胶囊网格。文章来源:https://www.toymoban.com/news/detail-786603.html
该模式的参数:文章来源地址https://www.toymoban.com/news/detail-786603.html
- 网格(Mesh):参考将被绳索变形的网格。
- 轴(Axis):网格轴(在模型空间中),将与绳索对齐。
- 体积缩放(Volume scaling):控制当绳子拉伸超过其静止长度时,网格将变形多少以尝试保持体积。
- 与绳子一起拉伸(Stretch with rope):如果启用,网格将与绳子一起挤压/拉伸。如果禁用,当网格长度超过或低于剩余长度时,网格将在绳子上“滑动”。
- 跨越整个长度(Span entire length):如果启用,网格将跨越绳子的整个长度,即使它必须沿着绳子轴拉伸或压缩。如果禁用,网格将沿着绳子轴保持其大小,而不管绳子的长度。
- 实例(Instances):沿绳重复使用网眼的次数。
- 实例间距(Instance spacing):网格实例之间的间隙大小。
- 偏移量(Offset):在第一个网格实例之前留下的初始间隙。
- 缩放(Scale):缩放网格实例。
到了这里,关于【Unity】基于Obi的绳/杆渲染及ObiRopeExtrudedRenderer、ObiRopeLineRenderer、ObiRopeChainRenderer、ObiRopeMeshRende的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!