我想通过脚本变形网格

Posted

技术标签:

【中文标题】我想通过脚本变形网格【英文标题】:I want to deform the mesh by script 【发布时间】:2020-04-14 15:04:47 【问题描述】:

在雕刻模式下看不到原木变形。 由于这个原因,它被比例编辑的“球体”部分变形了。

bpy.ops.transform.translate(value=(4.95114, 0, 0), constraint_axis=(True, False, False), constraint_orientation='GLOBAL', mirror=False, proportional='ENABLED', proportional_edit_falloff='SPHERE', proportional_size=15.8631, release_confirm=True, use_accurate=False)

当我运行这个脚本时,选定的部分不会膨胀成球体,但整个原始模型会移动。 我认为它正在发生,因为脚本中没有指定中心点的部分。 但我无法指定中心或其他解决方案。

通过脚本进行比例编辑的方法是什么?让我知道是否还有其他方法可以在脚本中进行。

【问题讨论】:

如果您需要脚本搅拌机的帮助,您会在blender.stackexchange 找到更好的支持。 好的,我会在那里提问。谢谢。 【参考方案1】:

bpy.ops.transform.translate 用于对象和编辑模式,对象需要处于编辑模式才能移动选定的顶点。

在雕刻模式下,使用的运算符是bpy.ops.sculpt.brush_stroke。在脚本中使用它需要设置一个OperatorStrokeElement,其中包括鼠标位置...

如果你想通过脚本变形网格,你应该考虑使用bmesh。

【讨论】:

谢谢您的回答。是否可以通过在脚本中指定Median来进行比例编辑?【参考方案2】:

您可以像这样在雕刻模式下使用“DRAW”或“CLOTH”笔刷:

def sculpt(coordinates, strength=0.5):
    bpy.ops.paint.brush_select(sculpt_tool="DRAW", toggle=False)
    bpy.data.brushes["SculptDraw"].strength = strength
    strokes = []
    for i, coordinate in enumerate(coordinates):
        stroke = 
            "name": "stroke",
            "mouse": (0,0),
            "pen_flip" : False,
            "is_start": True if i==0 else False,
            "location": coordinate,
            "size": 50,
            "pressure": 1,
            "time": float(i)
        
        strokes.append(stroke)
    bpy.ops.sculpt.brush_stroke(context_override(), stroke=strokes)
    print("Finished sculpting")

sculpt([(0,0,1),(0,0,0.5),(0,0,1)])

取自here。

【讨论】:

以上是关于我想通过脚本变形网格的主要内容,如果未能解决你的问题,请参考以下文章

三维变形

Blender通过脚本绘制列表,添加网格:额外对象

如何在Patran中将计算结果变形网格转换成CAD模型

使用vue学习three.js之创建动画-变形动画-通过设置morphTargetInfluences属性创建动画

如何通过搅拌机 python 脚本更新网格数据?

abaqus变形后的网格怎么导出来