嗨,大家好,我是新发。 最近工作需要用到ProBuilder在Unity中搭建场景原型,网上教程也不是很多,有的教程是旧版的。我之前学过Blender,所以上手ProBuilder很快,今天我就写篇稍微详细点的ProBuilder教程吧。
ProBuilder
Unity
Blender
注:本文我使用的Unity版本为2021.2.17f1c1,ProBuilder插件版本为5.0.4
2021.2.17f1c1
5.0.4
打开PackageManager,搜索ProBuilder,即可安装,目前最新版本是5.0.4, 如果你的工程使用的是URP通用渲染管线或者HDRP高清渲染管线,记得导入对应的Support包,
PackageManager
URP
HDRP
Support
安装完毕后,可以在Tools菜单下看到ProBuilder的菜单,如下
Tools
我们点击Tools/ProBuilder/ProBuilder Window菜单,即可打开ProBuilder编辑器窗口,如下
Tools/ProBuilder/ProBuilder Window
我们在ProBuilder编辑器窗口空白处鼠标右键,可以切换窗口模式,
选择Open as Floating Window,会以悬浮窗口的形式显示编辑器, 这种方式一般是我们把Scene窗口以Maximize最大化显示的时候使用,方便操作,
Open as Floating Window
Scene
Maximize
如下
选择Open as Dockable Window,我们可以把窗口以标签页的形式嵌入到编辑器界面中,这样编辑器布局会简洁一些,但这种模式下,如果把Scene窗口最大化,就得先把ProBuilder窗口独立移出来才能操作,
Open as Dockable Window
这种模式,菜单以文字形式显示,(个人更喜欢文字显示)
这种模式,菜单以图标的形式显示,记不住单词的可以使用图标模式,
点击New Shape, 在Scene窗口中会出现一个Create Shape小窗口, 有12种基础模型可以选择, 下面我们挨个进行讲解。
New Shape
Create Shape
12
我们先点选第一个按钮,它是一个拱门模型,把鼠标移动到Scene视图的空白处,先水平面拉出一个平面,然后鼠标往上移动即可在竖直方向上拉出拱门模型,最后点击鼠标左键即可完成,
我们也可以按住Shift键不放,当鼠标在Scene窗口中悬停时就可以看到有个浅蓝色的模型出现,我们在合适的位置点击鼠标左键即可创建出模型,如下
Shift
我们可以选中某个面调整拱门的形状,如下
如果想精确设置大小,可以在Inspector窗口中的Pro Builder Shaper组件下设置Size的值,
Inspector
Pro Builder Shaper
Size
注:不建议修改Transform的Scale来调整模型大小
Transform
Scale
在Create Shape小窗口中,有模型的基础参数,
我们可以调节拱门的厚度:Thickness参数
Thickness
修改拱门的边数:Side Count参数
Side Count
调整拱门的环形角度:Arch Circumference参数,
Arch Circumference
设置拱门的地面是否缝合:End Caps参数,
End Caps
设置是否进行法线平滑:Smooth参数, 如果我们已经设置好参数了,就可以按Esc键退出创建模式了, 接着我们就可以像操作普通物体那样对它进行平移、缩放、旋转等操作了。 如果想要重新设置模型参数,可以点击Edit Shape按钮, 此时在Scene窗口中就会出现模型参数窗口了,我们可以重新对模型参数进行调整,
Smooth
Esc
Edit Shape
同理,我们创建Cone圆锥体, 参数很简单,一个Sides Count边数,一个Smooth法线平滑,
Cone
Sides Count
立方体效果如下,参数只有基本的Size,
圆柱体效果如下, 参数如下
其中高度切分是指把圆柱从横截面环切成N份,如下 环切会产生新的点线面,我们可以根据需要对点线面进行操作,下文会讲解点线面的操作。
N
门效果如下, 参数如下
管道效果如下, 参数与圆柱体基本一样
平面是最简单的了, 我们可以调整Height Cuts和Width Cuts来对平面进行细分,如果你想做一个表面起伏的水面,就需要这个表面有足够的顶点数量,然后通关噪声对顶点做偏移,
Height Cuts
Width Cuts
棱柱效果如下, 只有基础的Size参数调整, 我们可以另外通过点线面的操作来对它进行编辑,下文会讲点线面的操作。
球体效果如下, 想要调整球的大小,建议不要直接修改Transform的Scale,而是调整模型的Size参数, 球的参数如下 其中表面细分越高,球的表面越精细,但顶点数也越多,建议不要设置得太高
Sprite平面和Plane平面差不多,只不过Sprite平面不能进行细分,它只有四个顶点,两个三角面,
Sprite
Plane
楼梯效果如下, 我们可以调整楼梯台阶的数量:Steps Count参数, 我们也可以把台阶模式切换为Height,然后设置台阶的高度:Steps Height参数,它会自动计算台阶的数量, 我们可以调整Circumference参数来调整楼梯的环绕角度,如下 Sides参数可以决定是否要有楼梯侧面,
Steps Count
Height
Steps Height
Circumference
Sides
甜甜圈效果如下, 调节Tube Radius可以调整内圈大小 Raws参数可以控制横向环切的数量 同理,Columes参数控制竖向环切数量 Hor. Circ.参数可以调整水平环绕角度 同理,Vert. Circ.控制竖直方向的环绕角度
Tube Radius
Raws
Columes
Hor. Circ.
Vert. Circ.
演示完12个基础模型的创建效果,可以看到,他们其实都是由点、线、面组成,我们可以对这些点线面进行编辑,来改变模型的形状。我们可以在Scene窗口的顶部看到四个按钮,分别是对象按钮、点按钮、线按钮、面按钮,如下
点、线、面
对象按钮、点按钮、线按钮、面按钮
点击对象按钮,进入对象操作模式,我们可以对模型整体进行移动、旋转、缩放等,这些基础操作相信大家都非常熟悉了,
如果我们想让物体以0.25米为间隔进行移动,可以按住Ctrl键不放进行移动,这样可以方便对齐物体,如下 需要说一下,在Unity中1米的长度是多长呢?我们可以靠近模型表面,看到默认纹理是一个一个的正方形,每个正方形的边长就是1米,我们可以看到纹理中有个1METER的字样, 我们设置Transform的Position的时候,XYZ的单位也是米, 当我们创建一个Cube时,默认创建的就是一个边长为1米的立方体,
0.25米
Ctrl
1
1METER
Position
XYZ
Cube
同理,按住Ctrl键,旋转物体会以15度为间隔进行旋转
15
注:一般不建议直接对模型进行缩放,容易造成尺度不统一,引起不必要的麻烦~
按住Ctrl不放,缩放时会按1米的尺度进行缩放,如下
我们移动物体时,需要把鼠标移动到物体的中心轴上才能控制物体,默认情况下,物体的中心轴在角落里,如下 我们可以按住V键不放,这样就会根据鼠标的位置吸附到一个控制点进行操作了,如下
V
进入点编辑模式, 我们可以选中模型的顶点,进行移动
如果想选中多个点,可以先选中模型整体,然后框选顶点进行操作,如下,不过像下面这样的操作其实就等效于操作线了,我们可以直接使用线操作模式,
我们也可以选中某个点之后,按住Shift不放,然后点击新的顶点来进行加选,如下
我们可以选中多个点,然后点击Collapse Vertices进行顶点合并,如下
Collapse Vertices
进入线操作模式
可以对线进行移动、旋转、缩放等操作,如下
同样,我们可以框选 或 按住Shift键加选来选中多条线进行操作,
我们可以选中某个边,然后点击Bevel添加倒角,如下 我们可以点击Bevel按钮旁边的+号按钮进行设置,可以设置倒角的距离,
Bevel
+
吐槽:不能像Blender那样设置倒角的进度,只能手工倒角,有点费手
我们可以选中线,然后点击Subdivide Edges进行细分,
Subdivide Edges
注:为了方便看清线,我把Scene视图的Shading Mode设置为WireFrame模式(网格模式)
Shading Mode
WireFrame
选中某条线,然后点击Insert Edge Loop,可以对这条线所在的垂直面进行环切(相当于新增一圈的线,可以对新增的这圈线进行编辑),如下
Insert Edge Loop
我们可以点击Cut Tool按钮,像刀子一样在面上进行切割(切割会新增线,形成新的三角面),如下
Cut Tool
假设现在有一个面是有一个洞,我们想把它不上,可以选中这个洞的某条边,然后点击Fill Hole即可填充这个面,
Fill Hole
我们可以选中某条线,然后点击Extrude Edges,挤出这条线,如下 我们也可以选中线然后按住Shift不放,移动鼠标直接挤出线,如下
Extrude Edges
选中两条线,然后点击Connect Edges按钮,即可连接这两条线的中心位置,可以调整新增出来的连接线,如下
Connect Edges
选中某条线,然后点击Select Edge Loop即可环选相连的线,如下
Select Edge Loop
选中某条线,点击Select Edge Ring即可环选不相连的线,如下
Select Edge Ring
进入面操作模式,
选中面之后,可进行移动、旋转、缩放,如下
我们选中面,它并不是一个三角面,我们可以点击Triangulate Faces把它细分为三角面,如下
Triangulate Faces
与线倒角一样,面也可以进行倒角,选中面,然后点击Bevel按钮即可进行面倒角,如下
选中面,点击Extrude Faces即可基础面,如下 我们也可以选中面然后按住Shift不放直接基础面,如下 我们可以点击Extrude Faces按钮旁边的+号,设置挤出的参数 individural Faces表示按每个面独立挤出; Vertex Normal表示按顶点法向方向挤出; Face Normal表示按面法线方向挤出。 我给大家演示一下Individural Faces挤出和Face Normal挤出的区别。 先看一下Individural Faces挤出
Extrude Faces
individural Faces
Vertex Normal
Face Normal
Individural Faces
接着看Face Normal挤出,
选中面,然后点击Duplicate Faces即可复制面,如下
Duplicate Faces
选中面,然后点击Detch Faces即可把面剪切出来,如下
Detch Faces
选中面,然后点击Delete Face(或者按Backspace回退键)即可删除面,如下
Delete Face
Backspace
选中面,缩放时按住Shift键不放,即可在平面内挤出面,如下
选中面,然后点击Select Face Loop即可在数值方向上环选多个平面,点击Select Face Ring即可在水平方向环选多个平面,如下
Select Face Loop
Select Face Ring
我们创建的模型默认是白色的,
现在我们给它们上色。
切换到对象模式, 选中物体,然后点击Vertex Colors按钮, 此时会弹出调色盘, 选择自己喜欢的颜色,点击Apply按钮,即可给物体所有顶点上色,如下
Vertex Colors
Apply
我们可以切换到顶点模式, 选中要上色的顶点,然后选择喜欢的颜色,点击Apply按钮即可,
ProBuilder创建的模型默认使用ProBuilderDefault材质球, 我们可以自己新建材质球,替换为我们自己的材质球,如下
ProBuilderDefault
建议把材质球添加到ProBuilder工具中,点击Material Editor, 把材质球添加到列表中, 这样我们可以通过快捷键快速设置物体材质,比如按Alt + 2即可给物体设置Green材质球,
Material Editor
Alt + 2
Green
场景有时候需要一些空气墙或者碰撞触发器,我们可以点击Set Trigger将模型设置为触发器材质,点击Set Collider将模型设置为碰撞体材质, 如下
Set Trigger
Set Collider
上面我们提到,ProBuilder会给模型自动设置一个ProBuilderDefault材质球,我们在设置中修改ProBuilder的默认材质。 点击菜单Edit/Preferences...,然后点击ProBuilder按钮,找到Mesh Settings下的Material参数,设置你自己的材质球即可,
Edit/Preferences...
Mesh Settings
Material
创建模型是,默认Pivot是在物体的角落,如下 我们可以点击Center Pivot按钮,修改中心到物体的几何中心位置,如下 我们也可以在顶点模式下,选中某个点,然后点击Set Pivot按钮将选中的顶点设置为Pivot, 我们还可以在边模式下,选中某条边,点击Set Pivot按钮,把边的中心点设置为Pivot 一般我们做门的时候就会用到这个技巧,这样物体旋转就是绕着这个边旋转,
Pivot
Center Pivot
Set Pivot
我们创建好模型后,想要让物体沿着某个轴镜像对称,可以点击Mirror Objects按钮, 效果如下 我们可以设置对称的轴, 比如改为沿着Y轴镜像对称, 效果如下
Mirror Objects
Y
假设我现在有这么一个模型,我只想给某一个侧面做法线平滑,如下 我们可以选中这个侧面的几个面, 然后点击Smoothing按钮,然后设置一个平滑分组即可 可以看到,我们这个侧面看起来变得平滑了
Smoothing
注:这里只是通过法线来影响光的反射方向从而达到平滑的错觉,实际上模型的边还是硬边
当我们制作好了模型,比如我制作了一个泳池模型,现在想把它导入到其他三维建模软件中修改, 我们可以点击Export按钮 将模型导出 导出格式我们可以点击Export按钮旁边的+号进行设置, 默认是obj格式 我们可以使用Blender打开导出的obj模型文件,
Export
obj
好了,我是林新发,https://blog.csdn.net/linxinfa 一个在小公司默默奋斗的Unity开发者,希望可以帮助更多想学Unity的人,共勉~