如何在 Blender 中使用 python 创建无缝背景?

Posted

技术标签:

【中文标题】如何在 Blender 中使用 python 创建无缝背景?【英文标题】:How can I create a seamless backdrop with python in Blender? 【发布时间】:2019-09-17 20:07:28 【问题描述】:

我想为我的搅拌机项目创建一个无缝背景。它是在脚本中完成的,我想将背景添加到该脚本中。

问题是我不知道如何仅在边缘挤出平面,因此我可以稍后将其斜切并使其无缝。使用 GUI 很容易做到,但我不知道如何在脚本中做到这一点。

我正在尝试一些事情,但目前我只有这段代码(显然未完成且做得不好):

bpy.ops.mesh.primitive_plane_add(radius=1, view_align=False, enter_editmode=False, location=(0, 0, 0), layers=(True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False))
plane2 = bpy.data.objects['Plane']

dims = plane2.dimensions
plane2.dimensions = 100, 70, 35

bpy.ops.object.editmode_toggle()

bpy.ops.mesh.select_mode(use_extend=False, use_expand=False, type='EDGE')

bpy.context.scene.objects[0].data.edges[0]

me = bpy.context.object.data
"""
# Get a BMesh representation
bm = bmesh.new()   # create an empty BMesh
bm.from_mesh(me)   # fill it in from a Mesh


# Modify the BMesh, can do anything here...
for e in bm.edges:
    e.co.x += 1.0
"""
bpy.context.tool_settings.mesh_select_mode = (False, True, False)

bpy.ops.mesh.extrude_region_move(MESH_OT_extrude_region="mirror":False, TRANSFORM_OT_translate="value":(0, 0, 88.1553), "constraint_axis":(False, False, True), "constraint_orientation":'GLOBAL', "mirror":False, "proportional":'DISABLED', "proportional_edit_falloff":'SMOOTH', "proportional_size":1, "snap":False, "snap_target":'CLOSEST', "snap_point":(0, 0, 0), "snap_align":False, "snap_normal":(0, 0, 0), "gpencil_strokes":False, "texture_space":False, "remove_on_cancel":False, "release_confirm":False, "use_accurate":False)

bpy.ops.object.editmode_toggle()

我希望背景看起来像这样,以防有助于更好地理解目标: https://www.youtube.com/watch?v=Ycz1wQY_7KI

【问题讨论】:

【参考方案1】:

由于您只需要两个面作为背景,我会从 python 列表中制作网格。然后添加斜角修饰符以圆化后角。

import bpy
from bpy_extras.object_utils import object_data_add
from mathutils import Vector

verts = [
    Vector(( 50,-35,  0)),
    Vector(( 50, 35,  0)),
    Vector((-50, 35,  0)),
    Vector((-50,-35,  0)),
    Vector((-50, 35, 35)),
    Vector(( 50, 35, 35)),
]
faces = [[2,3,0,1], [5,4,2,1]]

mesh = bpy.data.meshes.new(name="Backdrop")
mesh.from_pydata(verts, [], faces)
object_data_add(bpy.context, mesh)
backdrop = bpy.context.object
bpy.ops.object.shade_smooth()

bev_mod = backdrop.modifiers.new('bevel', 'BEVEL')
bev_mod.width = 12
bev_mod.segments = 5

mat = bpy.data.materials.new('back_mat')
if bpy.app.version[1] < 80:
    mat.diffuse_color = [1,1,1] # white
else:
    # 2.80 needs alpha value in colour
    mat.diffuse_color = [1,1,1,1]
backdrop.active_material = mat

【讨论】:

好的,我稍后再试,我会告诉你,抱歉回复晚了,谢谢!

以上是关于如何在 Blender 中使用 python 创建无缝背景?的主要内容,如果未能解决你的问题,请参考以下文章

在 Blender python 中创建一个网格的哈希

Blender程序化设置材质Python

Blender程序化设置材质Python

在 Blender 中运行 python 脚本

如何在 Blender 中从 Unity 重新创建模型的姿势?

Blender自动化建模入门