blender表面细分不处理边缘_c++输出方块


先上结果:


blender表面细分不处理边缘_关键帧_02

Blender方块动画效果https://www.zhihu.com/video/1232333427569262592

老规矩:


blender表面细分不处理边缘_关键帧_03




blender表面细分不处理边缘_关键帧_04


一、设置基本Wave Mesh(波浪面)

  1. 创建Plane,S 8,这样宽度就是2*8=16m了。
  2. Ctrl+A/Object菜单->Apply->Apply Scale——作用:归一化Scale。


blender表面细分不处理边缘_c++输出方块_05


3.世界大纲中重命名Plane为 "Wave Mesh"波浪网格


blender表面细分不处理边缘_ide_06


二、细分Wave Mesh

  1. Tab进入Edit Mode
  2. A选中全部面
  3. 右键 Subdivide细分
  4. 将Number of Cuts设置为 30
  5. Tab进入Object Mode
  6. 可以选中模型空格键入Shade Smooth,来让平面变得更加平滑一些。

如果你没有操作这一步的话,也就是模型没有细分,这个Plane在第三步中只会上下地进行晃动(所以一定要细分啊)


blender表面细分不处理边缘_ide_07


blender表面细分不处理边缘_ide_08


三、添加Wave Modifier(长得像Wifi信号)


blender表面细分不处理边缘_关键帧_09


Shift+空格播放动画
【提示】世界的小方格一个是1m哦


blender表面细分不处理边缘_线性插值与矢量线性插值动画_10

Size为2m的Plane

提示】最终的模型长宽是【基准的Size*缩放Scale=最终的尺寸Dimensions】(只是提醒一下大家,前面我们已经归一化Scale了)

如这个就是

  • Size=2m(带单位)
  • Scale=3(没有单位,是常量)
  • Dimensions=6m(带单位)


blender表面细分不处理边缘_blender表面细分不处理边缘_11


【3.1】Wave Constraint参数详解

  • Speed——摇晃的速度(范围-1~1、-1~0不晃动、0~1晃动)【Default 0.25】
  • Height——摇晃的高度范围(范围-2~2m、负为反方向摇晃)【Default 0.5m】


blender表面细分不处理边缘_ide_12


  • Width——每个波浪谷之间的距离(范围0~5m)【Default 1.5m】


blender表面细分不处理边缘_线性插值与矢量线性插值动画_13


  • Narrowness:狭窄度【默认1.5】


blender表面细分不处理边缘_blender表面细分不处理边缘_14


blender表面细分不处理边缘_c++输出方块_15

Blender Wave 动画https://www.zhihu.com/video/1232048024920596480

blender表面细分不处理边缘_c++输出方块_16


四、制作波浪无限循环动画(无卡帧)

  1. 使用Matcap的法线贴图
  2. Z切换至 顶视图,来制作我们的无限循环动画。(更好地观察变化效果)


blender表面细分不处理边缘_blender表面细分不处理边缘_17


3.Shift+F12 进入Timeline(如果你没有的话)

设置起始末尾关键帧:

  • 我们可以用快捷键P选择我们的播放范围
  • 或用Ctrl+C/V复制当前关键帧到开始帧或末尾帧
  • 当然你也可以直接输入开始关键帧和结束关键帧(我这里是 33~45)

当然如果你看不出来的话,你可以用Snipaste 截屏,并玩一玩 找不同 的游戏。(GZ1)


blender表面细分不处理边缘_线性插值与矢量线性插值动画_18


五、设置方块的跟随运动效果

【5.1】添加Cube

【5.2】设置中心枢轴点

  • 进入Edit Mode挪动Cube,GZ1(注意不是Object Mode注意不是Object Mode,注意不是Object Mode,要不然移动的结果是你的Cube的枢轴中心还在体积中心,而不是底面的中心处
  • 或者是在Object Mode下GZ1,然后Object->Set Origin->Origin to 3D Cursor(Origin to Geometry可以切换回来)


blender表面细分不处理边缘_关键帧_19


我们在向游戏引擎当中导入模型的时候经常遇到这样的问题,旋转的基准点不对导致旋转不到位就是枢轴坐标的问题,大家注意一下。

【5.3】添加Shrink Wrap Object Constraint

注意不是Modifer当中的,注意不是Modifer当中的,注意不是Modifer当中的),,两个界面完全不一样好嘛,一个是约束器(Constraint),一种是修改器。(Modifier)


blender表面细分不处理边缘_线性插值与矢量线性插值动画_20

Modifier修改器当中的ShrinkWrap

blender表面细分不处理边缘_线性插值与矢量线性插值动画_21

Constraint控制器当中的Modifier

约束(Constraint)对象的 原点并使其移到其目标对象的表面。 (就是包裹在一起跟随父类运动)

相关操作:

  • 选择父类目标:Wave Mesh
  • Project投影,Z轴
  • S->Shift+Z (在XY轴上缩放我们的Cube)
  • Ctrl+A->Apply Scale(跟上面提到过的Plane一样)


blender表面细分不处理边缘_ide_22


六、利用Array Modifier 复制成群的Cube。

  1. 添加Array Modifier
  2. 设置Relative offset-X=1.1——以造成一定的间隙
  3. 设置Count数量为我们刚才说过的30
  4. 复制一份Array Modifier
  5. 并将Cube GZ移动到边缘处。


blender表面细分不处理边缘_线性插值与矢量线性插值动画_23


这样弄完我们可以清楚地看到我们的枢轴还有一点小问题(这是一个大Cube的枢轴中心)


blender表面细分不处理边缘_线性插值与矢量线性插值动画_24


下面我们需要将这些复制化的Cube分割成单块


blender表面细分不处理边缘_ide_25


七、将Cube分割成单块

【7.1】Edit Mode选中所有面 Separate By Loose Parts

  1. 进入Edit Mode,A选中所有面
  2. P 分离 By Loose Parts

【7.2】挪动我们的Wave Mesh坐标以产生方块动画的效果

  1. Tab退出Edit Mode,进入Object Mode(因为这个是单个的Cube,外面还有好几百个Cube Object呢,这好几百个Cube的枢轴中心全部都在这个最边边的Cube上,我们需要进行一些改动)
  2. 然后上方 Object->Set Origin->Origin to Geometry


blender表面细分不处理边缘_线性插值与矢量线性插值动画_26


blender表面细分不处理边缘_线性插值与矢量线性插值动画_27


【7.3】挪动我们的Wave Mesh坐标以产生方块动画的效果

  1. 切换前视图,将我们的Wave Mesh 往Z轴上方挪动一些。(GZ1)
  2. 切换顶视图,挪动Wave Mesh 的XY坐标至这些小方块组成的大方块平面中央位置。

可以先看一下效果


blender表面细分不处理边缘_关键帧_28

Blender音乐可视化效果[1]https://www.zhihu.com/video/1232278729483276288

blender表面细分不处理边缘_blender表面细分不处理边缘_29


八、添加材质并设置Shader蓝图

【8.1】选中任意单个的Cube创建新材质,设置表面为Diffuse颜色贴图。

【8.2】将材质球给到所有的Cube

  1. A 选中所有的Cube
  2. Ctrl+L,将材质球给到所有的Cube


blender表面细分不处理边缘_线性插值与矢量线性插值动画_30


【8.3】进入Shading Panel 设置相关蓝图

  1. Shift F3进入Shading Mode,或者鼠标上方滑动菜单栏可切换(如果你的窗口太小的话)
  2. 填写下面的相应蓝图(我已经标明得很详细了,哈哈)


blender表面细分不处理边缘_blender表面细分不处理边缘_31


【8.4】挪动相关Wave Mesh 的位置

将场景中的所有模型选中,向下方挪动一点,来跟我们蓝图中的Location.Z相互配合,创建底色。Z进入前视图,A选中所有模型,向下方移动一点,然后差不多Cube刚好被3D Cursor切分两半的位置。


blender表面细分不处理边缘_c++输出方块_32


【8.5】调节蓝图中的Multiply值

(适当调节Multiply中的Value值,使达到这种多彩的颜色)


blender表面细分不处理边缘_blender表面细分不处理边缘_33



【拓展1】RGB、HSV、HSL、HEX

  1. RGB——是通过对红(Red)、绿(Green)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各种各样的颜色的,这个标准几乎包括了人类视力所能感知的所有颜色,是运用最广的颜色系统之一,基于笛卡尔坐标系
  2. HSV——色调(Hue),饱和度(Saturation),明度(Value),是根据颜色的直观特性而创建的,也称六角锥体模型
  3. HEX(Hexadecimal)十六进制颜色——如#000000表示黑色,#FFFFFF表示白色,(0123456789ABCDEF),我们的网页端(Cascading Stylesheet,CSS)运用得比较多
  4. HSL——色相(Hue)【颜色名称】,饱和度(Saturation)【色彩纯度,越高越纯,低则变灰】,亮度(Lightness)【跟明度一个意思】,将RGB色彩模型中的点在圆柱坐标系中的表示法。


blender表面细分不处理边缘_关键帧_34

RGB笛卡尔坐标体系

blender表面细分不处理边缘_ide_35

HSV六角锥体系

blender表面细分不处理边缘_关键帧_36

HSL圆柱坐标体系


A选中所有蓝图节点,然后S可以缩放这些节点的大小位置。

【拓展2】材质球随机颜色制作


blender表面细分不处理边缘_c++输出方块_37


注意事项:

  1. RGB(不管是R=1.0还是 G=1.0,B=1.0都可以,因为它的颜色我们在蓝图当中设置是跟随位置变化的,这里取的就是单个颜色值,主要是RGB这红绿蓝三个颜色,当然你也可以混合设置,设置红+绿(R=1.0、G=1.0)=黄或者是 绿+蓝(G=1.0、B=1.0)=青等等)
  2. 下方输出结果Color Ramp这里,这里测试的时候使用HSV(六角锥)和HSL(圆锥)是一样的效果,注意线性插值改为Far,这样色相(颜色名称)就会像圆一样从Hue(0.001~0.009)循环一圈


blender表面细分不处理边缘_线性插值与矢量线性插值动画_38

Blender七彩色运动效果https://www.zhihu.com/video/1232309824987680768

blender表面细分不处理边缘_blender表面细分不处理边缘_39


九、添加音乐,让方块跟着音乐一起运动(加强版)

其实到第八步就可以了,但是感觉少了点什么,对,就是音乐的伴奏。让我们方块的高低起伏(高度)跟着音乐一块走。

Blender当中默认25帧是1s,大家注意一下,你可以在Timeline这里设置(如1500就是60s一分钟)


blender表面细分不处理边缘_关键帧_40


【9.1】添加音乐

Shift+F8 进入Video Sequencer,添加我们的预览声音(音乐)。


blender表面细分不处理边缘_ide_41


【9.2】我们变化中间方块的高度有三种方法:

  1. Wave Mesh当中Wave Modifier的 Height高度参数。
  2. 单个Wave Mesh
  3. 设置所有方块(Cube)的Location.Z(全选除了Wave Mesh之外)

由于给所有方块添加关键帧比较麻烦,我们这里就给Wave Mesh的单个Height高度参数添加关键帧。(第一种方法)

【9.3】给Wave Modifier的Height高度参数添加关键


blender表面细分不处理边缘_blender表面细分不处理边缘_42


【9.4】烘培音乐曲线

然后Shift+F6(或者十字加号分屏也可以的),烘培音乐曲线。


blender表面细分不处理边缘_blender表面细分不处理边缘_43


【9.5】更改其他参数方法

  • 改速度:Wave Mesh 当中的Wave Modifier 的Speed 参数。
  • 改中间区域方块的颜色:更改蓝图当中Multiply的值Value
  • 变换底盘(四周)的颜色,A全部选中,GZ进行移动

最终结果:


blender表面细分不处理边缘_c++输出方块_44


另外:我记得虚幻官方好像也有一个这个新闻,我忘了链接了,是在Unreal当中用材质球Absolute World Position实现这个效果的。

温馨小提示:忙了一天了,千万晚上也不要加班搞了。晚上的效率是极其低下的。昨天写这个,就因为那个Modifier跟Constraint让我搞了很长时间,特别不细心,效果出不来,越来越急。晚上还是以娱乐放松为主的,看看书,听听歌,弹弹琴这样不需要太费脑细胞的娱乐活动。大家,注意哦。