我想知道,从数学上来说,您如何在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] 删除。
我来说两句