抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

Blender使用笔记

建模

移动模型

快捷键G

网格合并

选中模型,按快捷键ctrl+J

网格按材质切分

  1. 选中模型
  2. 进入Edit Mode
  3. Mesh——Separate——By Material

Modify

布尔建模

Object Mode——选中物体——Add Modifier——Boolean——Apply

有Difference、Union等选择

曲面细分

如果要制作圆弧形模型,可以先创建一些整N边形,然后添加Modifier曲面细分(注意要在Object Mode)

Remesh

一些模型的拓扑非常糟糕,可以用Remesh进行重新拓扑,不过这对模型的破坏非常严重

Object Mode——选中物体——Add Modifier——Remesh——Apply

减面

减面是一个非常普遍的需求

Object Mode——选中物体——Add Modifier——Decimate——Apply

模型添加材质

模型材质

吸附

Object Mode——选中物体——Add Modifier——Shrinkwrap——选择Target——选择顶点组——Apply

如果不选择顶点组,就会整个模型全部吸附

UV

UV接缝

在自动展开前,先选中面,Mark Seam(会有红色的线)

比如一个圆柱,可以把环形切一下,然后在竖边切一条

自动展UV2

点击Mesh,在Data处添加UV Maps

添加uv集

选择要修改的uvmap(看不见的话向右拉)

选择uvmap

点击UV Editor——按Table开启编辑模式——全选模型——设置Select Mode为面——对模型按右键——UV Unwrap Faces——Smart UV Project

自动展开UV

左侧栏工具

斜边

快捷键Ctrl+B

进入Edit Mode——选择边——Edge——Bevel Edges——拖动鼠标

抬升面

渐入Edit Mode——选中面——Shrink/Fatten(在左侧栏)

环切

快捷键Ctrl+R

插入面

快捷键 I,可以在一个圆面里切一个小圆

进入Edit Mode——选择面——Inset Face——拖动鼠标

拓展区域

快捷键 E,可以选中一个圈后复制一份,然后缩放、拖拽

选中一圈边

按住shift alt后用鼠标点击一条边

进入Edit Mode——选择一条边——Select——Select Loops——Edge Loops

点吸附

将一个点吸附到另一个点上,可以实现填补三角形的作用

进入Edit Mode——选择两个点——按M——选择末端点

桥接面

进入Edit Mode——选择两条边——Edge——Bridge Edge Loops

Cursor

游标,一个有红白相间的圆,可以用于控制旋转、缩放中心,也可以指定新添加物体的位置

设置游标

Mesh——Snap——Cursor to Selected

使用游标为物体控制中心

选中物体——Object——Set Origin——Origin to 3D Cursor

吸附

让一个物体按规则吸附在其他物体上

snap

顶点组

在Vertex Group中新建组,选择顶点,设置权重,Assign到组中

PCG

PCG的核心是几何节点

vrm

一组包含blendshape的模型

最近在找带有脸部Blendshape的角色模型,尤其是使用了苹果ARKit标准,于是我发现了很多vrm模型

Blender不原生支持vrm模型,于是需要下一个插件

VRM Add on

安装后直接import模型

导出到Unity

之前遇到一个问题,vrm模型导出fbx再导入Unity,却在Skin mesh renderer中看不到Blendshape

解决方案:在Blender中删掉多余的Modify,剩下Armature,再重新导出

删除modifier

MMD

安装

blender_mmd_tools插件下载地址

blenderMMD1

Edit > Perferences > Add-ons > Install > 选择第二步下载的压缩包
  1. 激活插件,找到导入的插件,点亮左边的checkbox即可

blenderMMD2

  1. 当你看到如下内容,说明安装成功(这个小箭头确实不明显,容易找不到)

blenderMMD3

  1. 点击下图的Import即可导入模型和动画,在mmd面板可以导出mmd信息,使用blender的File可以导出fbx模型,后续在Unity、AccuRog软件使用

blenderMMD4

关闭IK

有时我们发现MMD角色的腿不动,很有可能是因为定位到一个非常远的IK,关掉即可(变为灰色)

mmd_ik

渲染视频

调整camera位置

使用选择的相机为View

选择一个相机——View——Cameras——Activate Camera

再次执行可以恢复自由相机

调整输出

设置分辨率、Frame Rate、将渲染结果为FFmpeg Video,Encoding为MPEG-4就能输出mp4视频

blender保存视频

渲染动画

播放Frame Range的动画,并保存相机渲染结果为视频

Render——Render Animation

Auto Rig Pro

插件购买地址Auto Rig Pro,脚本开发建议使用bpy==3.6

自动棒骨

Auto Rig Pro可以绑定生成控制器,便于手动制作动画。如果单纯为了自动绑定人型骨骼,比如MMD2FBX,更适合AccuRig

  1. 准备模型

准备模型

  1. Smart模型

SmartRig

  1. 添加点

添加脖子

添加点

  1. 点击GO!完成

Go

Rig效果

  1. 点击Match to Rig

Match2Rig

  1. 进入Edit模式,点击Mesh,点击Bind

Bind

模型导出

导出为Unity能使用的骨骼模型

导出fbx

Remap动画

将动画Remap到骨架上,是的Target骨架播放Source骨架的动画

如果你没有remap.bmap,那么你需要在Object Mode同时选择动画骨架和模型骨架,进入Pose Mode,依次填写Target Bones内容,制作完成后可以Export bmap,以便后续使用

动画Remap

如果原始动画的初始状态和目标模型的初始状态不同,比如一个是A-Pose,一个是T-Pose,我们需要使用第6步,依次点击动画骨架,点击Copy Selected Bones Rotation,即可将动画的初始姿态转为目标模型的初始姿态

copy_bone_rot

脚本

Blender Python 简易参考

指Python bpy脚本,可以在Blender中使用,也可以在Python中作为一个Headless库使用

pip3 install bpy

Windows和Linux下bpy版本不同,Windows下python3.11对应bpy==4.3

打开提示

在偏好设置中打开Python Tooltips,将鼠标停滞在按钮、属性上时,都会提示要如何调用,在info窗口可以看到几乎每一次操作对应的命令,便于脚本开发

blenderPythonTooltips

pythonTooltips

安装插件

blender有很多好用的插件,也可以用在bpy脚本中

如果不知道插件的名称,可以先UI启动Blender,安装并开关对应插件,在python窗口输入print(bpy.context.preferences.addons.keys()),变化的那一个包,就是你想要的插件的名称

bpy.ops.preferences.addon_install(filepath=f"{os.getcwd()}/xxx.zip")
bpy.ops.preferences.addon_enable(module="yyy")
print(bpy.context.preferences.addons.keys())

输出场景内容

for obj in bpy.context.scene.objects:
print(f"- {obj.name} ({obj.type})")

删除初始状态

# 输出python脚本所在位置
print(os.getcwd())
# 删除初始状态的几个物体
bpy.ops.object.select_all(action='SELECT')
for obj in bpy.data.objects:
print("Name: ", obj.name)
print("Delete all objects")
bpy.ops.object.delete(use_global=False, confirm=False)

打开项目

bpy.ops.wm.open_mainfile(filepath="template/tapmo.blend")

渲染视频

output_path = "output/"
os.makedirs(output_path, exist_ok=True)
bpy.context.scene.frame_start = 1 # 动画开始帧
bpy.context.scene.frame_end = 120 # 动画结束帧
bpy.context.scene.render.engine = 'BLENDER_EEVEE'
bpy.context.scene.render.filepath = output_path
bpy.ops.render.render(animation=True)

评论