在 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 之间的一个随机距离:
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 条评论
文章评论已关闭。