2

数学的に言えば、3D サーフェスを構成する三角形ポリゴンの数 (寸法、位置、法線など) を知って、3D サーフェス上のランダムな位置に x ポイントをどのように生成するのでしょうか? 何段階で進めますか?

Maya で (Python と API を使用して) 「スキャッタ」を作成しようとしていますが、コンセプトの点でどこから始めればよいかさえわかりません。最初にポイントを生成してから、それらがサーフェスに属しているかどうかを確認する必要がありますか? ポイントをサーフェス上に直接作成する必要がありますか (この場合はどのように作成しますか)?

編集:可能な限り、2D プロジェクションや UV を使用せずにこれを実現したいと考えています。

4

4 に答える 4

2

すべての出力ポイントがサーフェス上にあるという制約がある場合は、ポイントの 3d > サーフェス変換について心配するよりも、サーフェス自体を処理する一貫した方法が必要です。

これを行うハックタスティックな方法は、3D オブジェクトの UV マップを作成し、ポイントを 2 次元でランダムに散布することです (有効な UV シェル内にたまたま着地しなかったポイントを破棄します)。UV シェルが必要なだけ満たされたら、UV ポイントを重心座標 に変換して、それらの 2 次元ポイントを 3 次元ポイントに戻すことができます。効果的には、「私は 30% 頂点 A、30 です」と言うことができます。 % 頂点 B、40% 頂点 C なので、私の位置は (.3A + .3B + .4C) です。

簡単さ以外に、UV マップを使用するもう 1 つの利点は、メッシュのさまざまな部分の密度と相対的な重要性をカスタマイズできることです。UV 面が大きいほど多くの点が散らばり、小さいほど点が少なくなります。それが物理的なサイズまたは顔と一致しない場合。

2D に移行すると、いくつかのアーティファクトが導入されます。おそらく、ストレッチと継ぎ目のない UV マップを作成することができないためです。そのため、散乱の密度にばらつきが生じます。ただし、多くのアプリケーションでは、アルゴリズムが非常に単純で、結果を手動で簡単に調整できるため、これで問題ありません。

私はこれを使用していませんが、これはこの一般的なアプローチに基づいているようです: http://www.shanemarks.co.za/uncategorized/uv-scatter-script/

より数学的に厳密な方法が必要な場合は、メッシュのパラメーター化のより洗練された方法が必要になります。これは、三角形の 3 次元コレクションを一貫した空間に変換する方法です。その分野には興味深い仕事がたくさんありますが、アプリケーションを知らずに特定の道を選ぶのは難しいでしょう.

于 2016-03-04T18:17:18.453 に答える
2

各三角形の面積を計算し、それらを重みとして使用して、各ランダム ポイントの目的地を決定する必要があります。これをバッチ操作として実行するのがおそらく最も簡単です。

def sample_areas(triangles, samples):
  # compute and sum triangle areas
  totalA = 0.0
  areas = []
  for t in triangles:
    a = t.area()
    areas.append(a)
    totalA += a

  # compute and sort random numbers from [0,1)
  rands = sorted([random.random() for x in range(samples)])

  # sample based on area
  area_limit = 0.0
  rand_index = 0
  rand_value = rands[rand_index]
  for i in range(len(areas)):
    area_limit += areas[i]
    while rand_value * totalA < area_limit:
      # sample randomly over current triangle
     triangles[i].add_random_sample()

      # advance to next sorted random number
      rand_index += 1;
      if rand_index >= samples:
        return
      rand_value = rands[rand_index]

隆起した領域やしわのある領域は、より小さなスペースで表面積が大きいため、点密度が高く見える場合があることに注意してください。

于 2016-03-04T19:25:18.813 に答える