出场演员 —— 自由高达
![](https://i-blog.csdnimg.cn/blog_migrate/1a8bebf0b9d57c0f3c7185c2a762b0aa.png)
细分表面(Subdivision Surface)
效果图
- 细分前
![](https://i-blog.csdnimg.cn/blog_migrate/69faada570e36f2738bd7057afb8bea6.png)
- 细分后
![](https://i-blog.csdnimg.cn/blog_migrate/6be1b07bbae6846dab0786eb10131d8b.png)
Python 代码和注释
import bpy
def subSurf(level = 2):bpy.ops.object.modifier_add(type='SUBSURF') # 添加细分修改器bpy.context.object.modifiers["Subdivision"].levels = level # 设置修改器细分级别bpy.ops.mesh.primitive_monkey_add()subSurf()
以上代码的效果相当于手动添加了以下修改器,并设置了 Levels Viewport
为 2
阵列(Array)
效果图
![](https://i-blog.csdnimg.cn/blog_migrate/6cf78de400224a1318bcfc4e05a37a91.png)
Python 代码与注释
import bpy
def array(num = 5,o_x = 2,o_y = 0,o_z = 0):bpy.ops.object.modifier_add(type='ARRAY') # 添加阵列修改器array = bpy.context.object.modifiers["Array"] # 设置修改器的参数array.count = num # 阵列的个数# 分别在 x/y/z 方向上进行偏移array.relative_offset_displace[0] = o_xarray.relative_offset_displace[1] = o_yarray.relative_offset_displace[2] = o_z
bpy.ops.mesh.primitive_cube_add()
array(o_x = 0.,o_y = 0.25,o_z = 0.25)
以上代码的效果相当于设置了如下修改器,并设置了 Count
为 5 ,Factor X
、 Y
、 Z
分别为 0., 0.25, 0.25
![](https://i-blog.csdnimg.cn/blog_migrate/3718c2d3cf481e2a47e0a6171cb939e2.png)
倒角(Bevel)
效果图
- 倒角前
- 倒角后
Python 代码与注释
import bpy
def bevel(_amount = 0.3,_segments = 1):bpy.ops.object.modifier_add(type='BEVEL') # 添加倒角修改器bevel = bpy.context.object.modifiers["Bevel"] # 设置倒角参数bevel.width = _amountbevel.segments = _segments
bpy.ops.mesh.primitive_ico_sphere_add()
bevel()
以上代码的效果相当于设置了如下修改器,并设置了 Amount
为 0.3,Segments
为 1
![](https://i-blog.csdnimg.cn/blog_migrate/6fda68be51e18adb42882de9f5ca1220.png)
创建过程(Build)
效果图
![](https://i-blog.csdnimg.cn/blog_migrate/1a8ffe1e783cb6bb811ddfcad3587943.gif)
Python 代码与注释
import bpy
def build(f):bpy.ops.object.modifier_add(type='BUILD') # 添加 Build 修改器build = bpy.context.object.modifiers["Build"] # 设置修改器参数build.frame_start = f # 起始帧build.use_random_order = False # 不随机build.seed = 0
bpy.ops.mesh.primitive_monkey_add()
build(f = 0)
相当于手动设置了如下修改器(默认长度 100)
![](https://i-blog.csdnimg.cn/blog_migrate/5fba0941728db63fc331f3adc4800da4.png)
部分减面(Decimate)
效果图
- 减面前
import bpy
def decimate(limit_num):bpy.ops.object.modifier_add(type='DECIMATE') # 添加修改器decim = bpy.context.object.modifiers["Decimate"] # 设置该修改器相应参数decim.decimate_type = 'DISSOLVE'decim.delimit = {'NORMAL'}decim.angle_limit = limit_num
bpy.ops.mesh.primitive_monkey_add()
decimate(limit_num = 0.8)
相当于手动设置了如下修改器
![](https://i-blog.csdnimg.cn/blog_migrate/5fa539583ecca4890873d6b605bc1c91.png)
结合下图可见,面数从原来得 8700 面减少到了 291 面
![](https://i-blog.csdnimg.cn/blog_migrate/1578d4c8e9862bb7bb16b2373b7682a6.png)
- 减面前网格线
- 减面后网格线
镜像(Mirror)
效果图
- 在立方体的 X 轴方向两侧进行镜像
Python 代码与注释
import bpy
def mirror(obj):bpy.ops.object.modifier_add(type='MIRROR') # 添加修改器mir = bpy.context.object.modifiers["Mirror"] # 设置修改器参数mir.use_axis[0] = True # 以 X 轴为方向mir.mirror_object = bpy.data.objects[obj]
bpy.ops.mesh.primitive_monkey_add()
bpy.ops.mesh.primitive_cube_add(location = (3,0,0))
bpy.context.view_layer.objects.active = bpy.data.objects["Suzanne"]
mirror("Cube")
以上代码相当于手动添加了如下修改器
![](https://i-blog.csdnimg.cn/blog_migrate/f7dd248db39b869b2b9db8c9b4feef22.png)
螺旋(Screw)
效果图
![](https://i-blog.csdnimg.cn/blog_migrate/36ea2c23b52d850d06017f7997158f0f.png)
Python 代码与注释
import bpy
# 细分修改器
def subSurf(level = 3):bpy.ops.object.modifier_add(type='SUBSURF')bpy.context.object.modifiers["Subdivision"].levels = level
# 螺旋修改器
def screw(angle = 6.28,screw = 3,itr = 1,ax = 'X'):bpy.ops.object.modifier_add(type='SCREW') # 添加修改器scr = bpy.context.object.modifiers["Screw"] # 设置修改器参数scr.angle = anglescr.screw_offset = screwscr.iterations = itrscr.axis = ax # 绕指定轴进行螺旋卷绕
bpy.ops.mesh.primitive_grid_add()
screw(itr = 2)
subSurf()
以上代码相当于手动添加了如下修改器
![](https://i-blog.csdnimg.cn/blog_migrate/1396ff90f219dc5d0a3a2e288784572b.png)
实体化(Solidify)
效果图
- 实体化前
![](https://i-blog.csdnimg.cn/blog_migrate/93a41f70e6d4dc98c07b315f17e90af7.png)
- 实体化后
![](https://i-blog.csdnimg.cn/blog_migrate/52ed23dde92a0bc76880f44c5b357b64.png)
Python 代码与注释
import bpy
def solid(thick = -0.15,ofs = -1):bpy.ops.object.modifier_add(type='SOLIDIFY') # 添加修改器solid = bpy.context.object.modifiers["Solidify"] # 设置修改器参数solid.thickness = thicksolid.offset = ofs
bpy.ops.mesh.primitive_monkey_add()
solid()
以上代码相当于手动添加了如下修改器
![](https://i-blog.csdnimg.cn/blog_migrate/6a5445b932543592a4e80d3da1475740.png)
收缩包装(ShrinkWrap)
效果图
其实这效果更像是 “包装充气膨胀”
![](https://i-blog.csdnimg.cn/blog_migrate/8d37f41934db2a4ae90247409b8e7221.gif)
Python 代码与注释
import bpy
# 表面细分
def subSurf(level = 1):bpy.ops.object.modifier_add(type='SUBSURF')bpy.context.object.modifiers["Subdivision"].levels = level
# 收缩包装
def shrinkWrapAnim(obj):bpy.ops.object.modifier_add(type='SHRINKWRAP') # 添加修改器bpy.context.object.modifiers["Shrinkwrap"].target = bpy.data.objects[obj] # 设置修改器的目标参数bpy.ops.object.modifier_apply_as_shapekey(keep_modifier=False, modifier="Shrinkwrap") # 应用修改器(的形态键)
# 插入形态键关键帧
def shapeKeyInsert(frame_num = 10,shape_value = 1):obj = bpy.context.objectobj.active_shape_key_index = 1for i in range(0,2):obj.active_shape_key.value = shape_value # 记录形态键值obj.active_shape_key.keyframe_insert(data_path = "value",frame = frame_num) # 插入关键帧frame_num += 50 # 更新帧数shape_value -= 1 # 更新形态键值
s = 0.1
bpy.context.scene.frame_set(0)
bpy.context.scene.frame_end = 50 # 总共 50 帧的动画
bpy.ops.mesh.primitive_cube_add(location=(0,0,0), scale = (s,s,s))
bpy.ops.mesh.primitive_monkey_add()
subSurf()
shrinkWrapAnim("Cube") # 指定目标为 Cube
shapeKeyInsert()
以上代码相当于应用了以下修改器(但由于代码中 “应用” 了它,所以你是看不到它的)
![](https://i-blog.csdnimg.cn/blog_migrate/9ddf7b4a72debd9c82e62ebd858fe8e9.png)
但是可以看到其对应生成的动画(Timeline)关键帧,如下所示
![](https://i-blog.csdnimg.cn/blog_migrate/ba1a5d544dd9cae7062af8f90556c8fa.png)
![](https://i-blog.csdnimg.cn/blog_migrate/21660406e82bab8175422c0bac90670b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/027e98890aa8c0362187f411b931f88a.png)
(完)
plv-k3u1fbpfcp-zoom-in-crop-mark:4536:0:0:0.image?" style=“margin: auto” />
![](https://i-blog.csdnimg.cn/blog_migrate/027e98890aa8c0362187f411b931f88a.png)
最后
最近还整理一份JavaScript与ES的笔记,一共25个重要的知识点,对每个知识点都进行了讲解和分析。能帮你快速掌握JavaScript与ES的相关知识,提升工作效率。
有需要的小伙伴,可以点击下方卡片领取,无偿分享