gpt4 book ai didi

python - Maya python 地形生成器

转载 作者:太空宇宙 更新时间:2023-11-03 21:29:21 24 4
gpt4 key购买 nike

对于一个学校项目,我正在尝试编写一个地形生成器。我是一个Python菜鸟,但一直在研究很多关于地形生成的知识。这是我现在的代码:

#imports
import maya.cmds as cmds
import random
#variables
landsub = 100 #number of subdivisions on the plane
landsize = 400 #size of the plane
maxheight = 100
land = cmds.polyPlane( sx=landsub, sy=landsub, w=landsize, h=landsize)
vtxCount = cmds.polyEvaluate(v=True)
print land
values = [random.triangular(0,1,0) for i in xrange(10)]

#code
for x in range(vtxCount):
cmds.select(cl=True)
cmds.select(land[0] + '.vtx[' + str(x) + ']')
cmds.move(values[x] * maxheight, y=True, absolute=True)

cmds.select(land[0])
#cmds.polySmooth(dv = 1)

我正在尝试(并努力)使 maxheight 和 vtxCount 变量相互依赖;最大高度上的顶点数量应该是最少的,不断增加,直到最多的顶点位于最小高度上。在我目前的代码中,大多数顶点似乎都在中间高度,很少有在最小高度。我长期以来一直在寻找解决方案,但我不熟悉在 python 中可以做什么,因此很难为我的代码找到正确的命令。

我真的希望有人能帮助我并为我指明正确的方向!感谢您的阅读

最佳答案

你可以做这样的事情

#imports
import maya.cmds as cmds
import random
#variables
landsub = 100 #number of subdivisions on the plane
landsize = 400 #size of the plane
maxheight = 100
land = cmds.polyPlane( sx=landsub, sy=landsub, w=landsize, h=landsize)
vtxCount = range(cmds.polyEvaluate(v=True))
random.shuffle(vtxCount)
values = [random.triangular(0,1,0) for i in xrange(10)]
values_count = len(values)
SEED = 448
random.seed(SEED)
optimize_setter = []

#code
for x in vtxCount:
mod = x % values_count
# cmds.move(values[mod-1] * maxheight, land[0] + '.vtx[' + str(x) + ']',y=True, absolute=True)
optimize_setter += [float(0),values[mod-1]*maxheight,float(0)]
cmds.setAttr('pPlane1.vtx[:]', *optimize_setter)
cmds.select(land[0])

如果您想要更多 0 左右的值,您可以更改值以获得更多 0.1 的值。我不确定你的问题是什么。

values = []
high_values = [random.triangular(0,1,0) for i in xrange(3)]
low_values = [random.uniform(0, .2), for i in xrange(7)]
values = low_values + high_values

编辑

#imports
import maya.cmds as cmds
import random
#variables
landsub = 100 #number of subdivisions on the plane
landsize = 400 #size of the plane
maxheight = 15
land = cmds.polyPlane( sx=landsub, sy=landsub, w=landsize, h=landsize)
vtxnb = cmds.polyEvaluate(v=True)
vtxCount = range(vtxnb)

values = []
high_values = [random.triangular(0,1,0) for i in xrange(vtxnb/10)]
low_values = [random.uniform(0, .3) for i in xrange(vtxnb/2)]
values = low_values + high_values
values_count = len(values)
SEED = 448
random.seed(SEED)
random.shuffle(vtxCount)
random.shuffle(values)
optimize_setter = []

#code
for x in vtxCount:
mod = x % values_count
# cmds.move(values[mod-1] * maxheight, land[0] + '.vtx[' + str(x) + ']',y=True, absolute=True)
optimize_setter += [float(0),values[mod-1]*maxheight,float(0)]
cmds.setAttr('pPlane1.vtx[:]', *optimize_setter)
cmds.select(land[0])

关于python - Maya python 地形生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53632937/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com