本文主要基于Blender创建一个简单的机器人,并基于此机器人来了解骨骼动画的制作流程。制作骨骼动画主要包含以下步骤:
- 建模
- 构建骨骼
- 蒙皮和权重绘制
- 动画制作
Done is better than perfect
Unity实现序列帧动画主要有两种方式,一个是通过Unity自带的Animation进行制作,二是根据序列帧动画原理通过代码按固定帧率切换显示的图片即可实现序列帧动画效果。
为什么要使用协程?,先来看段代码: 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27using System.Collections;
using UnityEngine;
public class TestCoroutine : MonoBehaviour
{
void Start()
{
StartCoroutine(CoroutineFunc());
}
IEnumerator CoroutineFunc()
{
var wfeof = new WaitForEndOfFrame()
//1000次循环大概1s
for(int i = 0; i < 1000; i++)
{
//假设做大量的工作,大概CPU耗时:0.1s
DoManyWork();
yield return wfeof;
}
}
void DoManyWork()
{
Debug.Log("DoManyWork is called.");
}
}
上面的CoroutineFunc函数里面消耗了大量的CPU时间,在没有协程的开发环境中,比如像C/C++这样的开发语言,一般会创建一个线程来执行这种耗时的操作,多线程开发也会牵扯到各种数据和资源的互斥访问和线程同步的问题,这也导致在其他线程访问Unity引擎相关的组件会出现问题,因为我们没法控制其他的线程在访问操作一个对象时Unity引擎不去访问它,所以在Unity中其他线程一旦访问Unity引擎相关的组件就可能回出错。因此为让Unity的主线程不被这种耗时的操作给卡住,就只有将这种耗时的操作分到多帧里去执行,所以就出现了这种伪线程即协程。
什么是委托?委托与事件有什么关系呢?先来看一下委托的定义,代码如下: 1
2
3
4
5
6
7
8
9
10
11
12
13namespace DotnetExample
{
//定义一个委托
public delegate void VoidCallback();
// Console必须要一个Main函数才能编译通过
class Program
{
static void Main(string[] args)
{
}
}
}
.Net是什么呢?.Net是1998年微软剑桥研究院的技术人员研究的下一代开发技术,并将其制定的规范(CLI)提交到了ECMA,形成了ECMA335规范, 随后被ISO采纳为国际标准ISO/IEC 23271:2012。到2002微软正式发布了.NET Framework 1.0。.NET Framework是.Net开发技术规范的第一个实现,所以在初期.Net和.Net Framework指的是同一个东西,但它们本质上是完全不同的。由于当时只有微软的.Net Framework实现了.Net标准所以也仅限于Windows开发栈。.Net Framework平台的内容包含很多组件和库,像WinForm, WebForm, WPF,Asp.net等。直到2004年Mono让其可以在Linux上运行了,慢慢的Mono也开始支持Android, iOS,MacOSx让.Net实现跨平台。
Mathjax是一种支持在所有浏览器上显示数学公式的Javascript引擎,它支持绝大部分的Tex/LaTex语法,并且有三种输出HTML/CSS, SVG(矢量图)和MathML(Firefox支持的数公式标记语言)。本文主要介绍如何在将Mathjax整合进入Hexo中,在整合之前先介绍一下Tex/LaTex。
官方下载地址:https://www.centos.org/download/,根据自己的情况选择下载什么镜像,阿里云和网易的镜像地址下载速度很快。本文下载的是CentOS-8.2.2004-x86_64最小化版,如果需要带GUI的系统可以下载完整版,各个版本的下载地址:
AI(artificial intelligence)即人工智能,游戏中的AI是让游戏里的对象具有一定的智能化,能够思考和决策,比如RPG游戏中的怪物知道有玩家攻击自己时进行反击,当玩家逃跑时会进行追击,当玩家远离自己时则放弃追击,这一系的决策和动作就是游戏中的AI要做的。和现下流行的人工智能不一样的是游戏里的AI还不能那么智能,不过现在已经在尝试将机器学习和游戏结合,让游戏对象更智能。
正如其命,有自治动作的智能体称之为“自治智能体”。在《看门狗》《GTA》里,街上走路的人群或者开动的汽车 就是一种自治智能体。主角开车如果冲向它们,这些自治智能体能够自行判断并做出躲开的动作。
如其名,与自治智能体相对,“群体智能”一般用于编队的AI或者集群的AI。例如足球游戏里,AI操控一方所有球员互相配合传球踢球。又或者射击游戏里,AI操控一支小队通过战术进攻据点。
矩阵是3D数学的重要基础,它主要用来描述两个坐标系之间的关系,通过定义一种运算将一个坐标系中的向量转换到另一个坐标系中。
在线性代数中,矩阵就是以行和列形式组织的矩形数字块。例如下列的一个3x4的矩阵:
\[\begin{bmatrix} 0&-1&1&1 \\ 1&0&1&4 \\ 2&1&3&-4 \end{bmatrix}\]向量就是一个数列,是一个只有大小和方向的一个数学量,和标量不同,标量是一个只有大小的量。向量的记法如下:
行向量:a=\(\begin{bmatrix}1&2&3\end{bmatrix}\)
列向量:a=\(\begin{bmatrix}1\\2\\3\end{bmatrix}\)
向量是有大小和方向的有向线段。向量和点不同点表示了一个固定的位置然而向量是没有位置的,你画在任何地方都行,因为向量表示它在各个方向上的位移关系。向量的几何表示如下图: