为什么在 Cinema 4D 中,rnd() 会为多个选中的对象应用相同的数值?

Sibo
Sibo
  • 更新

在 Cinema 4D 中,几乎所有数值输入框不仅可以输入固定数值,还可以直接输入数学公式。 同时选中多个对象或标签时,还能通过公式为每个对象生成不同的结果。本文将说明如何为每个对象生成真正不同的随机值,以及为什么看似理所当然的写法反而会让所有对象得到相同的数值。

为什么单独使用 rnd() 会让所有对象得到相同的值

选中多个对象,然后在属性管理器的数值输入框中输入如下表达式:

x+rnd(100)

其中,x 代表该输入框中原本的数值,rnd(100) 则会生成一个 0 到 100 之间的随机数。如果没有指定种子,Cinema 4D 只会生成一次随机数,然后将同一结果应用到所有选中的对象。因此,所有对象都会移动相同的距离:


如何为每个对象生成不同的随机值

为 rnd() 添加第二个参数。第二个参数就是随机种子,它可以让每个对象得到不同的结果:

x+rnd(value; num)

  • value 是随机数范围的上限。请将其替换为你希望添加的最大数值。
  • num 是每个选中对象的索引。Cinema 4D 会按照对象管理器中的顺序,从 0 开始为选中的对象编号。这样一来,每个对象都会向 rnd() 传入不同的种子,从而得到各自的随机值。

例如:

x+rnd(100; num)

在位置 X 输入框中输入该表达式后,每个选中的对象都会分别移动 0 到 100 之间的一个随机距离:

函数参数之间需要使用分号,而不是逗号。逗号无法使用,因为 Cinema 4D 仅支持使用点号作为小数点。也可以改用方括号,因此 rnd(100; num) 和 rnd([100][num]) 的作用完全相同。


可以在哪里使用

只要是属性管理器中可以输入数值的地方,通常都可以使用公式,对象和标签均适用。常见示例包括:

  • 位置、旋转和缩放
  • 灯光强度
  • 纹理标签中的纹理偏移和纹理长度
  • 半径、高度或倒角半径等对象参数

选中对象或标签,单击相应的输入框,输入表达式,然后按 Enter 键即可。需要注意的是,该参数必须是所有选中项共有的,也就是说,每个选中的项目都必须具备相同的输入字段,公式才能应用。
 

多选时还可以使用的其他变量

随机值只是其中一种用法。
选中多个项目时,Cinema 4D 提供了以下三个变量:

变量   示例
x 该对象在当前输入框中原本的数值 x+200 会在每个对象原有数值的基础上加 200
num 每个选中对象的索引,按照对象管理器中的顺序从 0 开始计数 对 10 盏灯使用 num*20,会依次得到 0、20、40 等强度值
tot 选中对象的总数 100*(num/(tot-1)) 会在所有选中对象之间均匀分配 0 到 100 的数值

💡提示:
结果可以重复生成。由于 num 是固定索引,而不是不断变化的值,因此对相同的选择范围输入同一个表达式,每次都会得到同一组结果。当你需要可预测的数值分布时,这一点非常实用;但这也意味着,如果想得到不同的结果,就需要更改随机范围或对象的排列顺序。
 

需要了解的语法规则

  • 使用点号作为小数点。不支持逗号和千位分隔符。
  • 每个左括号都必须有对应的右括号。
  • 空格会被忽略,因此可以适当添加空格,让表达式更易读。
  • 同一个表达式中可以混用不同单位。例如,无论首选项中设置的基础单位是什么,1m + 10in 的计算结果都是 1.254 m。
+专业提示:对颜色值使用公式

颜色参数默认只显示一个色块,并没有可以直接输入数值的字段。要显示各通道的数值,请右键单击颜色参数,然后从快捷菜单中选择显示子通道。这样,色块就会展开为各个独立的通道输入框,并且可以在其中使用相同的公式和变量。

例如,同时选中多个材质,右键单击颜色参数并选择显示子通道,然后在其中一个通道的输入框中输入 rnd(1; num),即可让每个材质在该通道中得到不同的数值。


要点总结

  • 问题: 多选时使用 x+rnd(100),只会生成一个随机数,并将其应用到所有选中的对象。
  • 解决方法: 添加随机种子。使用 x+rnd(100; num),可以让每个选中的对象分别得到一个 0 到 100 之间的随机值。
  • 可用变量: x 代表当前值,num 代表从 0 开始的对象索引,tot 代表选中对象的总数。
  • 适用范围: 属性管理器中的所有数值输入框,对象和标签均适用,包括位置、旋转、缩放、灯光强度和纹理偏移等参数。
  • 分隔符: 参数之间使用分号,而不是逗号。也可以使用方括号。

 

如有任何疑问或需要进一步协助,请提交支持工单,我们的团队将竭诚为您提供帮助。

 

这篇文章有帮助吗?

/

评论

0 条评论

文章评论已关闭。