从此

设计、美工、3D建模(Blender)

综述

  Blend Shapes(Shape Keys) - 将Mesh部分形变的起止定义在0-1范围内,基于网格顶点控制,跟骨骼无关,且比骨骼方式更加细腻。

集成

3D模型:
  通常包含可见的Mesh、PBR(Physically Based Rendering)材质、可控的SK,以及能动的动画。
  材质 - 首选工业标准的 ORMMaterial3D(单张混合属性图),次选 StandardMaterial3D(三张png属性图/Godot)、ShaderMaterial(Godot)。 
  骨骼 - Godot 中由 Skeleton3D 节点描述。
    动力学 - 默认为正向动力学,就是父骨骼带动子骨骼,但IK 反向动力学则可指定个带头大哥(独立骨头),通过这个动力源头来反着牵动父骨头,牵动多少根由你指定的链条长度(Chain Length)决定;如果启用了IK的骨头还有子骨头,则依然走正向动力学而被IK的骨头牵动。
      反向动力学使用场景有:地面倾斜脚趾头骨骼挑头来控制贴合,避免脚底总是处于水平面;手部自动贴合持枪动作。
  动画 - Godot 中由 AnimationPlayer 节点描述。

  其他概念:
    全局光照(GI) - 即Mesh反射光泽。
    辉光(Glow) - 即Mesh周边泛光。

Godot 3D

3D:
  全局中心点 + 离地1米:GlobalPosition = Vector3.Zero with { Y = Vector3.Zero.Y + 100.0f }; // 或 Vector3.Up * 100.0f;
  让Player持续向某方向走:Vector3 direction = Vector3.Forward;
  数字越大鼠标转速越快: new Vector2(-_InputEventMouseMotion.Relative.Y, -_InputEventMouseMotion.Relative.X) * 0.003f;

  // 执行顺序影响最终姿态;XxxObjectLocal(...) 后缀为基于模型自身方向,而非全局。
  _Node3D.TranslateObjectLocal(new Vector3(0, 0, -100)); // 离地N厘米
  _Node3D.RotateX(Mathf.DegToRad(-90)); // 前后倾倒角度;左右倾倒用RotateZ;贴地转圈用RotateY。
  _Node3D.RotateObjectLocal(Vector3.Down, Mathf.DegToRad(180)); // 面向地面(Down)顺时针(正数)旋转
  global_rotate(axis, angle)

  动画:
    设置循环和总长度(影响AnimationTree?):_Animation.LoopMode = LoopModeEnum.None; _Animation.Length = 1;

  动画树:
    流程图从 output 节点向前反查;active=false 全局停止,而 AnimationNodeEndState 则只结束子状态机,并返回父状态机。
    AnimationNodeTransition - 类似枚举,手动切换,可后挂多个 AnimationNodeStateMachine 来自动决策。
    AnimationNodeStateMachine - 根据连线自动化切换状态,也可调用 travel("StateName") 手动切换。
    AnimationNodeOneShot - 手动播放“shot”端口动画后,将回落到“in”端口并持续播放。

  骨骼:
    3D模型内骨架导入 Godot 后会通过 Skeleton3D 描述,动画用 AnimationPlayer 描述。
    将3D模型内嵌动画导出后,其骨骼名通常与骨架一致,可直接导入 AnimationLibrary 驱动。
    查看所有骨骼名: player.GetNode("Armature/Skeleton3D").GetConcatenatedBoneNames();
    高级技术:骨架重定向

    节点绑至骨骼:
	var sk = GetNode<Skeleton3D>("PlayerOwner/Armature/Skeleton3D");
	var ba = new BoneAttachment3D();
	ba.BoneName = "neck_Armature";

	var c = new Node3D();
	c.Name = "ChineseLantern";
	c.UniqueNameInOwner = true;
	var ws = GD.Load<PackedScene>("res://ChineseLantern.tscn");
	var wsNode = ws.Instantiate();
	c.AddChild(wsNode);

	ba.AddChild(c);
	//c.Owner = GetNode<Node3D>("MyOwner");
	sk.AddChild(ba);

Blender

Blender官方教程:
  https://docs.blender.org/manual/zh-hans/latest/

  Blender、Maya之3D建模哪家强?

新:
  术语 - 骨架(Skeleton/Armature)由骨头(Bones)组成、绑定(Rigging/或叫装配)、蒙皮(Skinning)
  模型来源 - 雕刻、3D扫描、4D扫描、动捕等。
  Blender 4.1已支持UDIM,修复报错:tiled image path must contain a valid UDIM marker.

素材:
  人体骨骼3D模型 - https://www.blender.org/download/demo-files/#assets

必知:
  工作区每个窗口的左上角均存在1个下拉框,用于切换编辑器,3D Viewport和动画摄影表(Dope Sheet)编辑器比较常用,后跟的下拉框则为次级模式切换。
  Ctrl+PageUp和Ctrl+PageDown可前后逐个切换工作区。
  标题栏右侧的Workspace是用于各场合工作时的窗口布局,切换时会影响窗口的次级下拉框,但次级下拉框的切换并不会切换Workspace。
  3D Viewport的Object Mode即整体操作,而Edit Mode则为按(次级下拉框后)顶点、边、面分别操作。
  挖孔 - Edit Mode用鼠标选中面后按Delete并选Faces;有厚度的面可用投影切割。
  IDE重置:File->Defaults->Load Factory Settings
  Viewport Shading视图着色 - 图标为四个圆球,位于3D视图右上角,切换“线框、实体(仅基础色)、上材质、实际渲染”。
  勾掉3D视图右上角的Show Gizmo后将无法移动,且XYZ轴不再可见。

快捷键:
  Spacebar=播动画;此时无法编辑,应再摁回车停播后操作;
  W=选取工具,再按W则切至套索选取;
  Shift+Spacebar(空格)+G(或鼠标点)=移动,Shift+Spacebar+R=旋转。

渲染:
  整体亮度 - 属性面板->World>Surface->Strength:20
  查看或定位缺失材质等文件路径 - File > External Data > Report missing files、Find missing files
  Render->Render Animation后默认会写入/tmp/*.png,可通过Rendering属性窗口Output面板的File Format修改为FFmpeg Video,Container选择MPEG-4(*.mp4)等。
  拖拽到3D视图的视频不会渲染,需要用Plane+Material(Base Color->Image Texture->Open *.mp4)方式;
    或 Edit->Preferences->Add-ons->Import Image as Planes勾上后File->Import->Image as Planes。
  选上RGBA后会渲染出透明背景,视频格式要用支持RGBA的FFmpeg Video+MPEG-4+Video Codec选WebM/VP9,同时勾上“渲染->Film->Transparent”。

骨架:
  Object Mode下Add->Armature,Edit Mode下骨头添加用右键挤出(Extrude)或不相连方式Add->Single Bone。
  连接多根骨头 - Ctrl+p -> Connected; 断开用 Alt-P -> Disconect Bone
  蒙皮 - 先选Mesh后选骨架,按Ctrl-p -> Armature Deform With Automation Weight,最后进入Pose Mode用鼠标拖拽测试效果。

用法:
  Blender Image+Plane存为USD时会变为UsdUVTexture+MP4路径(报不支持)
=======================

基础:
  data-block - Blender以 数据块(3D物体、材质等) 为基本操作对象。
  缩放(Scale) - 按s进入等比例缩放模式,鼠标远离或接近进行调整。

关联材质:
  选中物体 -> 属性 -> 材质属性Tab:
    [已存在材质则可跳过] +(添加材质槽) -> 新建 -> 保存
    材质图标 下拉 -> 选中材质 -> 保存; 若该材质多处在用则会后跟“使用数儿”

语言切换:File》User Preferences》System》International Fonts》Simplified Chinese (简体中文)》选中:Interface(界面)和Tooltips(工具提示)》Save User Settings

3D场景至少需要三个关键构件:模型,材质(为模型穿衣服贴图)和光照

3D流程:
  建模 - 创建三维对象、形状的数学表示形式的过程;贴图三维模型本身是不可见的
  UV贴图 - 模型被解开铺平后进行纹理制作(平面图像)
  纹理 - 覆盖在3D模型上的肌理
  材质设置 - 材料被分配给模型的不同部分和色调(例如,木门与金属柄)
  装配 - 控制单元(骨架骨头)附着在模型之中控制模型运动
  动画 - 让模型的运作动作可视化,比如角色动画
  输出 - 可以在任何阶段来显示3D模型的最终形态,例如在网页上

基本:
  工作区 - 顶部右侧默认为Layout选项卡,后跟Modeling、雕刻、UV编辑等
  主区域全屏 - Ctrl-Alt-Space,右上角有浮动退出按钮; 
  激活区域最大化 - Ctrl-Space,再次则还原
  模式种类 - Tab; “物体模式”用于整体操作,而“编辑模式”则可细化控制顶点/边/面

  选择键 - 左键
  全选 - A
  视图控制 - 旋转用MMB,平移用Shift-MMB, 缩放用Ctrl-MMB
  居中至光标 - Alt-MMB
  视图切换 - Alt-MMB右上角XYZ方向滑动
  物体操作 - 旋转物体的单个点无效,至少2个点起,可Shift多选
  视图裁剪框 - Alt-B
  添加物体 - 菜单第三排“添加”下拉“网格”选中立方体等
  3D游标 - 用作任何新加物体的原点
  飞行/步行导航 - Shift-波浪键

  渲染 - F12
  动画播放 - Space,再次则暂停

编辑模式:
  挤出选取 - 选择2-3个顶点挤出面,选4个顶点挤出体
  内插面 - 只用于面,向内中心点缩小
  倒角 - 削边、斜切面
  多边形建形 - 拖顶点自由拉伸


面板最左侧上下箭头可选择“编辑器”;右上“大纲视图”可选择“物体”
“信息编辑器”菜单“帮助”右边第一个下拉为“各种屏幕布局”
鼠标右键通常用于选择,加Shift多选;鼠标左键用于初始化或者确认操作。
输出设置区在右下角;可在png下拉框选择影片格式ogg;渲染默认输出路径:C:\tmp\
加载初始设置:点击 文件/File》加载初始设置/Load Factory Settings 并且进入 用户偏好设定 编辑器来保存设置。
快捷键:
  Tab 对象模式/编辑模式切换
  T 显示/隐藏工具
  N 显示/隐藏属性
  R 旋转
  D+左键 蜡笔划线
  F12 渲染
  Ctrl+F12 渲染动画
  Alt+A 播放动画
  Home 适应窗口
  shift+c  将游标置于中心,并适应窗口
  中键拖曳   旋转场景
  shift+中键拖曳  平移场景
  ctrl+左键拖曳  圈选多个模型

动画:
  底部”时间线“区最右两个钥匙图标下拉选择记录形式(如LocRotScale、按位置Location、按旋转Rotation等);
  操作好3D模型后按I插入关键帧;或按下红色录制按钮,拖动模型即会自动插入关键帧;