You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Blender中生成3D转盘序列(球面多视角渲染图片)

在3D球面上布局62个点位并批量朝向球心渲染图片的方案

一、手动关键帧自动化渲染(无代码基础适用)

1. 创建球心参考与初始拍摄点位

  • 添加UV球(Shift+A → 网格 → UV球),调整半径作为球心基准体
  • 添加空物体(Shift+A → 空物体 → 轴),作为首个拍摄点位
  • 选中空物体,按Ctrl+Alt+0将相机对齐到该空物体视角(需提前开启侧边栏视图标签的「锁定相机到视图」)

2. 批量生成球面网格点位

  • 选中UV球进入编辑模式,手动选择62个顶点(或用「选择→随机选择」调整数量,精准控制可配合顶点组)
  • 按Shift+S → 光标到选中项,选中初始空物体后按Ctrl+Shift+Alt+C → 复制到选中顶点,自动生成62个对应顶点位置的空物体

3. 设置关键帧批量渲染

  • 选中相机,在属性面板的约束选项中添加「跟踪约束」,目标选择第一个空物体,跟踪轴设为-Z(确保相机朝向球心)
  • 移动到第1帧,选中跟踪约束的「目标」选项,按I插入关键帧
  • 依次切换到第2至62帧,修改跟踪约束的目标为对应空物体,每帧插入关键帧
  • 在渲染属性面板设置输出路径、图片格式(推荐PNG),执行「渲染动画」即可批量导出每帧对应点位的图片

二、Python脚本批量处理(灵活修改布局)

以下脚本可直接在Blender的脚本编辑器中运行,支持自定义点位数量、分布与渲染参数:

import bpy
import mathutils

# 清除默认场景物体(按需保留可注释此行)
bpy.ops.object.select_all(action='SELECT')
bpy.ops.object.delete()

# 创建球心参考球,可修改radius调整球面大小
bpy.ops.mesh.primitive_uv_sphere_add(radius=5, location=(0, 0, 0))
sphere = bpy.context.active_object

# 生成62个球面网格点位(经纬度分布,可替换为其他布局逻辑)
points = []
# 调整经纬度步数以接近62个点,最后截断到62
lat_steps = 8
lon_steps = 8
for lat_idx in range(lat_steps):
    # 计算纬度(从-90°到90°)
    lat_rad = mathutils.math.radians(-90 + (180 / (lat_steps - 1)) * lat_idx)
    for lon_idx in range(lon_steps):
        if len(points) >= 62:
            break
        # 计算经度(从0°到360°)
        lon_rad = mathutils.math.radians((360 / lon_steps) * lon_idx)
        # 转换为笛卡尔坐标
        x = sphere.radius * mathutils.math.cos(lat_rad) * mathutils.math.cos(lon_rad)
        y = sphere.radius * mathutils.math.cos(lat_rad) * mathutils.math.sin(lon_rad)
        z = sphere.radius * mathutils.math.sin(lat_rad)
        points.append((x, y, z))
    if len(points) >= 62:
        break

# 创建相机并设置为场景活跃相机
bpy.ops.object.camera_add(location=(0, 0, 10))
camera = bpy.context.active_object
bpy.context.scene.camera = camera

# 配置渲染参数
scene = bpy.context.scene
scene.render.image_settings.file_format = 'PNG'
# 输出路径://表示相对当前blend文件的目录,需提前创建render_output文件夹
scene.render.filepath = "//render_output/frame_"

# 批量渲染每个点位
for idx, point in enumerate(points):
    # 移动相机到目标点位
    camera.location = point
    # 计算朝向球心的旋转角度
    target = mathutils.Vector((0, 0, 0))
    direction = target - camera.location
    # 转换为欧拉角设置相机旋转
    rot_quat = direction.to_track_quat('-Z', 'Y')
    camera.rotation_euler = rot_quat.to_euler()
    # 设置当前帧编号
    scene.frame_set(idx + 1)
    # 渲染并保存图片
    scene.render.filepath = f"//render_output/frame_{idx:03d}.png"
    bpy.ops.render.render(write_still=True)

print(f"渲染完成,共生成{len(points)}张图片")

脚本自定义说明

  • 调整点位布局:替换points生成逻辑即可,比如改用正二十面体细分后的顶点(更均匀的球面分布),或直接传入自定义坐标列表
  • 修改输出参数:调整scene.render.image_settings可修改图片格式、压缩率;修改scene.render.filepath可更改输出路径
  • 保留场景物体:注释掉清除默认物体的代码,即可在现有场景基础上执行渲染

注意事项

  • 手动方法适合快速验证效果,脚本方案适合需要反复调整点位布局的场景
  • 渲染前确保场景中已添加需要展示的3D物体(脚本默认清除场景,需自行添加或在脚本中加入加载逻辑)
  • 若要生成「3D转球」动画,可将渲染后的图片导入视频编辑软件,设置合适帧速率后导出视频

内容的提问来源于stack exchange,提问作者fiqcerzvgm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 08:43:21