Как я могу создать бесшовный фон с питоном в Blender? - PullRequest
0 голосов
/ 29 апреля 2019

Я хочу создать цельный фон для моего проекта блендера.Это сделано в сценарии, и я хочу добавить фон к этому сценарию.

Проблема в том, что я не понимаю, как выдавливать плоскость только по краю, чтобы потом я мог наклонить ее и сделать ее бесшовной.Это действительно легко сделать с графическим интерфейсом, но я не знаю, как это сделать в сценариях.

Я пробую несколько вещей, но пока у меня есть только этот код (который, очевидно, не завершен и неочень хорошо сделано):

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 Ответ

0 голосов
/ 09 мая 2019

Поскольку для фона требуются только две грани, я бы сделал меш из списка питонов. Затем добавьте модификатор скоса, чтобы закруглить задний угол.

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
...