将2D绘图从一个画布(源)转移到另一个画布(目标),并应用透视变换来重建像素在3D空间中的位置。该操作用于在3D空间中绘制2D草图,其中2D绘图通常由手工绘制或扫描图像创建。
bpy.ops.gpencil.reproject(
overwrite=True,
project_to_3d=True,
use_linked_brush=False
)
overwrite
(bool, optional) - 如果源画布和目标画布中存在名称匹配的图层,则覆盖目标图层。默认为True
。project_to_3d
(bool, optional) - 是否将输入图层投影到3D空间中,以便在3D场景中浏览。默认为True
。use_linked_brush
(bool, optional) - 如果目标画布中不存在匹配的笔刷,则使用关联笔刷。默认为False
。{'FINISHED'}
- 操作成功完成。RuntimeError
- 如果源和目标画布中没有选定的图层,则抛出异常。以下示例将选定的2D绘图从源画布转移到目标画布,并应用透视变换来重建像素在3D空间中的位置,该位置用于在3D空间中绘制2D草图。
import bpy
# 获取源和目标画布的引用
source_canvas = bpy.data.grease_pencil[<source_canvas_name>]
target_canvas = bpy.data.grease_pencil[<target_canvas_name>]
# 获取选定图层的引用
source_layer = source_canvas.layers.active
target_layer = target_canvas.layers.active
# 转移2D绘图
bpy.ops.gpencil.reproject(overwrite=True, project_to_3d=True, use_linked_brush=False)
# 将目标图层的颜色设置为白色
target_layer.color = (1.0, 1.0, 1.0)
# 在3D空间中绘制重建的2D图形
bpy.ops.gpencil.draw(mode='DRAW_POLYLINE', stroke=tmp_stroke)