Cinema 4Dでrnd()を使用すると、選択した複数のオブジェクトに同じ値が適用されるのはなぜですか?

Sibo
Sibo
  • 更新

Cinema 4Dでは、ほぼすべての数値入力フィールドに固定値を入力できるだけでなく、数式を直接入力することもできます。 複数のオブジェクトやタグを同時に選択している場合、数式を使ってそれぞれに異なる結果を設定することも可能です。この記事では、オブジェクトごとに異なるランダム値を設定する方法と、一見正しそうな入力方法ではすべてのオブジェクトに同じ値が適用される理由について説明します。

rnd()だけでは、すべてのオブジェクトに同じ値が適用される理由

複数のオブジェクトを選択し、属性マネージャの数値入力フィールドに次の数式を入力します。

x+rnd(100)

x はそのフィールドにすでに設定されている値を表し、rnd(100) は0から100までのランダムな値を生成します。シードを指定しない場合、Cinema 4Dはランダム値を一度だけ生成し、その同じ結果を選択中のすべてのオブジェクトに適用します。そのため、すべてのオブジェクトが同じ距離だけ移動します。


オブジェクトごとに異なるランダム値を設定する方法

rnd() に2つ目の引数を追加します。この2つ目の引数がランダムシードとなり、オブジェクトごとに結果を変えることができます。

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では次の3つの変数を使用できます。

変数 意味
x そのオブジェクトの入力フィールドに現在設定されている値 x+200 を使用すると、各オブジェクトの現在の値に200が加算されます
num 選択した各オブジェクトのインデックス。オブジェクトマネージャ内の並び順に従って0から数えます 10個のライトに num*20 を使用すると、強度が0、20、40のように順番に設定されます
tot 選択しているオブジェクトの総数 100*(num/(tot-1)) を使用すると、選択したオブジェクト全体に0から100までの値が均等に割り当てられます

 

💡ヒント:
同じ結果を再現できます。num は変動する値ではなく固定されたインデックスであるため、同じ選択内容に同じ数式を入力すると、毎回同じ一連の値が得られます。予測可能な値の分布が必要な場合には便利ですが、別の結果を得たい場合は、値の範囲またはオブジェクトの並び順を変更する必要があります。


構文上の注意点

  • 小数点にはピリオドを使用してください。カンマや桁区切り記号は使用できません。
  • 開き括弧には、必ず対応する閉じ括弧が必要です。
  • スペースは無視されるため、数式を読みやすくする目的で自由に追加できます。
  • 1つの数式内で異なる単位を組み合わせることもできます。たとえば、環境設定で指定している基本単位にかかわらず、1m + 10in の計算結果は1.254 mになります。
+プロ向けヒント:カラー値に数式を使用する

カラーパラメータは、初期状態では1つのカラースウォッチとして表示されるため、数値を直接入力できるフィールドは表示されていません。各チャンネルの数値を表示するには、カラーパラメータを右クリックし、コンテキストメニューからサブチャンネルを表示を選択します。これにより、カラースウォッチが個別のチャンネル入力フィールドに分かれ、同じ数式や変数を使用できるようになります。

たとえば、複数のマテリアルを選択し、カラーパラメータを右クリックしてサブチャンネルを表示を選択します。いずれかのチャンネル入力フィールドに rnd(1; num) と入力すると、各マテリアルのそのチャンネルに異なる値を設定できます。


要点まとめ

  • 問題: 複数選択時に x+rnd(100) を使用すると、ランダム値が一度だけ生成され、選択したすべてのオブジェクトに同じ値が適用されます。
  • 解決方法: ランダムシードを追加します。x+rnd(100; num) を使用すると、選択したオブジェクトごとに0から100までの異なるランダム値を設定できます。
  • 使用できる変数: x は現在の値、num は0から始まるオブジェクトのインデックス、tot は選択したオブジェクトの総数を表します。
  • 使用できる場所: 属性マネージャ内のすべての数値入力フィールドで、オブジェクトとタグのどちらにも使用できます。位置、回転、スケール、ライトの強度、テクスチャオフセットなどが含まれます。
  • 区切り記号: 引数の区切りにはカンマではなくセミコロンを使用します。角括弧を使用することもできます。


ご不明な点がある場合や、さらにサポートが必要な場合は、サポートチケットを送信してください。弊社サポートチームが対応いたします。

この記事は役に立ちましたか?

/

コメント

0件のコメント

記事コメントは受け付けていません。