在任意3维表面上生成随机点

英国开发计划署

我想知道,从数学上来说,您如何在3D曲面上的任意位置生成x点,知道组成该曲面的三角形多边形的数量(其尺寸,位置,法线等)?您将分几步进行?

我正在尝试在Maya中创建“分散器”(使用Python和API),但我什至不知道从概念上应该从哪里开始。我应该先生成点,然后检查它们是否属于曲面吗?我是否应该直接在曲面上创建点(在这种情况下,如何创建)?

编辑:我想尽可能不使用2D投影或UV来实现这一点。

即将来临的暴风雨

您应该计算每个三角形的面积,并将其用作权重以确定每个随机点的目的地。批处理操作可能最简单:

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]

请注意,仅因为它们在较小的空间中具有更大的表面积,所以隆起或起皱的区域可能看起来具有更高的点密度。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在任意3维表面上生成随机点

来自分类Dev

从随机点获取球体表面上的点

来自分类Dev

我可以使用3维单纯形噪声实现在球形表面上生成噪声吗?

来自分类Dev

在gnuplot中的pm3d表面上绘制点

来自分类Dev

在复杂的二维表面上积分速度

来自分类Dev

在python中的3D表面上覆盖纹理

来自分类Dev

铯表面上方的折线弧

来自分类Dev

检测iPhone在平坦表面上的移动

来自分类Dev

球体表面上的最佳轨迹

来自分类Dev

在表面上循环纹理

来自分类Dev

检测气缸表面上的小针孔

来自分类Dev

平行表面上的漫射照明错误

来自分类Dev

Python3 Memory游戏无法在表面上渲染图像

来自分类Dev

Matplotlib 3d 绘图:在 2 个表面上获取单个颜色图

来自分类Dev

插值表面并找到表面上方的高度

来自分类Dev

球体表面上点的均匀分布?

来自分类Dev

与表面上看来很安全的短期寿命值的混淆

来自分类Dev

如何在表面上绘制平滑运动

来自分类Dev

libGDX表面上的AdMob-标题消失

来自分类Dev

将物体正确放置在行星表面上

来自分类Dev

如何使导入的模块从主脚本散布到表面上?

来自分类Dev

不能使表面上简单的bash函数正常工作

来自分类Dev

非均匀表面上的数据插值

来自分类Dev

libGDX表面上的AdMob-标题消失

来自分类Dev

如何在表面上添加边框?

来自分类Dev

如何在表面上绘制平滑运动

来自分类Dev

svg 路径不为镀铬表面上的单点绘制

来自分类Dev

通过触摸按钮或图像而不是 A-D 键在表面上左右移动 3d 块

来自分类Dev

Pygame:将文本表面连续传输到另一个表面上