在某宝上找了很久都没找到支持的无线网卡合适的二维动画制作公司,大家推荐一个吧

在某宝上找了很久都没找到合适的MG动画制作公司,大家推荐一个吧_百度知道
在某宝上找了很久都没找到合适的MG动画制作公司,大家推荐一个吧
我有更好的答案
贵州的话目前只知道一家贵州暴雨视界文化传媒有限公司,其余的就不知道了,只有他家的名气大。
采纳率:100%
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。&figure&&img src=&https://pic3.zhimg.com/v2-f156e25e648e42c68ee4db980b950ac6_b.jpg& data-rawwidth=&2880& data-rawheight=&1800& class=&origin_image zh-lightbox-thumb& width=&2880& data-original=&https://pic3.zhimg.com/v2-f156e25e648e42c68ee4db980b950ac6_r.jpg&&&/figure&&p&&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&上一篇&/a&我们实现了一个由时间控制单变量形成的动画。(虽然最终输出的是一个4X4的矩阵,但是这个矩阵是由两个独立的旋转:x轴旋转、z轴旋转合成的)&/p&&p&虽然对于平移和缩放,由于其线性特征,我们可以将其按照坐标轴分解,使得每一步都是一个受时间控制的单变量过程(如:我们可以将“沿着向量{5, 3, 6}的平移”拆解为“沿x轴移动5,沿y轴移动3,沿z轴移动6”这3个步骤,且这3个步骤可以按照任何顺序(包括同时进行)进行而不会影响最终结果),然而对于旋转,我们则不能这么处理了。(如:“绕着x轴旋转90度,然后绕着z轴旋转90度”与“绕着z轴旋转90度,然后绕着x轴旋转90度”所得到的结果是不一样的,并且与“绕着x轴和z轴同时旋转90度”也不是一个结果)&/p&&p&但是另外一方面,无论我们按照什么顺序如何进行旋转,如果只看旋转前的物体朝向(命名为v1)与旋转之后的物体朝向(命名为v2),那么我们都可以通过一次v1到v2的旋转来得到同样的结果。并且,这个v1到v2的旋转可以看成是v1与v2所确定的平面(将v1与v2的起点重合,那么这个起点和v1与v2的两个终点一共3个点确定了一个平面)法线(可以通过v1叉乘v2得到)的旋转。那么如果记开始旋转的时刻为t1,结束旋转的时刻为t2,对于它们之间的任意时刻t&/p&&p&&img src=&https://www.zhihu.com/equation?tex=t_1%5Cleq+t%5Cleq+t_2%5C%5C& alt=&t_1\leq t\leq t_2\\& eeimg=&1&&&/p&&p&此时物体的朝向可以通过内插值v1与v2所形成的夹角得到。这个过程被称为slerp过程。(参考引用1)&/p&&p&因此,对于平移矩阵和缩放矩阵,我们可以直接进行线性内插计算,或者使用&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&从零开始手敲次世代游戏引擎(四十七)&/a&所写一元三次贝塞尔曲线进行内插计算,只不过需要将参数类型从浮点置换为向量类型就可以了。而对于旋转矩阵,我们不能直接进行内插计算,而是需要将其转换到球面坐标系(四元数)之后,再按照线性或者贝塞尔曲线方程来进行内插计算;或者,我们也可以计算出X、Y、Z方向的欧拉角,然后对这个角度进行线性内插计算,最后再用插补后的角度计算出旋转矩阵。&/p&&p&下面的视频给出了一个这样的按照各个分量进行插值的动画。&/p&&a class=&video-box& href=&https://link.zhihu.com/?target=https%3A//www.zhihu.com/video/460608& target=&_blank& data-video-id=&& data-video-playable=&true& data-name=&& data-poster=&https://pic4.zhimg.com/80/v2-d53fc12a1e76c86aedc3_b.jpg& data-lens-id=&460608&&
&img class=&thumbnail& src=&https://pic4.zhimg.com/80/v2-d53fc12a1e76c86aedc3_b.jpg&&&span class=&content&&
&span class=&title&&&span class=&z-ico-extern-gray&&&/span&&span class=&z-ico-extern-blue&&&/span&&/span&
&span class=&url&&&span class=&z-ico-video&&&/span&https://www.zhihu.com/video/460608&/span&
&p&然而,还有一个更为麻烦的情况,那就是动画参数是以一个4X4仿射矩阵(transform matrix)的形式存在,而不是按照缩放平移旋转这样的基本操作分别导出的。比如Blender当中的骨骼动画,在导出为OGEX文件格式之后,就会发现它是以这种方式导出的。&/p&&p&首先,如果我们对于这个4X4矩阵直接进行内插值计算,虽然也可以得到动画效果,但是这个动画是会很奇怪的。动画物体在两个关键帧之间会发生很多形变和扭曲,整个动画过程变得无法预料且不可控制。&/p&&p&这是因为一个4X4的仿射矩阵所能表达的几何变化除了旋转平移缩放这些之外,其实还包括歪斜(如同长方体变平行四边形那样)、透视、镜面反射等情况。而且体现这些操作的矩阵当中的元素与旋转和缩放是重叠的。&/p&&p&正确的做法是需要将这个矩阵进行分解,拆出平移、缩放、旋转这些基本要素之后,再各自进行内插运算,再将它们合起来。然而,就如前面所说,在一个4X4的矩阵当中,左上方的3X3矩阵当中的元素包含了旋转、缩放、歪斜、反射等多种情况,而且我们可以通过不同的步骤去改变一个物体,使其最终状态是一致的。&/p&&p&这就是说,对于一个4X4矩阵的分解,理论上是可以有多数个可能性的。如果仅仅知道这个矩阵,要完全还原出各个基本操作,在理论上是不可能的。&/p&&p&但是对于动画,一般来说我们只需要看起来合理就可以。所谓看起来合理,那就是符合人的经验,至于是否完全还原制作时每一步的操作,其实是不重要,或者说不希望1:1还原的。&/p&&p&所以,我们这里假定4X4矩阵是按照缩放(含反射)旋转和平移这样的步骤按顺序完成的,并且每个步骤至多只有一次。也就是说,如果已知最终的变换矩阵M是由缩放矩阵S、旋转矩阵R和平移矩阵T按顺序相乘得到的,那么是有办法从M反推出S、R和T的。&/p&&p&这个过程称为矩阵的分解(Matrix Decompose)。如上面所述,平移矩阵可以直接从4X4矩阵的第4行得到,所以接下来的就是分解4X4矩阵的左上角的3X3矩阵。在动画当中常用的矩阵分解方法有QR分解法,SVD分解法和Polar分解法。&/p&&p&QR分解法(参考引用4)可以将任意一个方阵分解为一个纯旋转矩阵(Q)和一个上三角矩阵(R),但是问题在于分解出的Q并不是唯一的(也就是说不见得等同于我们原始的旋转矩阵。事实上,当我们的缩放在各坐标轴上是同等的时候,QR分解所得矩阵就是我们的原始旋转矩阵,然而当缩放不同等的时候,所得矩阵就不对了)。而且,QR分解所得的结果不能直接得到缩放矩阵。&/p&&p&SVD分解法(参考引用5)则可以将M分解为一个旋转矩阵,一个按坐标轴方向的缩放矩阵,还有第二个旋转矩阵。采用这个方法分解出的缩放矩阵虽然就是我们原始的缩放矩阵,但是旋转部分被分解为两个矩阵,且因为矩阵乘法不满足交换律,我们不能简单地将这两个位于缩放矩阵一前一后的旋转矩阵相乘来导出原始的旋转矩阵。&/p&&p&Polar分解法(参考引用6)其实是SVD分解法的一个特例,然而当我们按照缩放-&旋转这样的顺序进行操作的时候,Polar分解法得到的两个矩阵UP,U恰巧就是我们原始的旋转矩阵,而P是一个对角矩阵,也就是我们原始的缩放矩阵。&/p&&p&(参考引用8)当中就对这三种分解法进行了理论上的比较,得出了Polar分解法最适合用在3D动画矩阵插补当中的结论。&/p&&p&Polar分解法的理论基础以及数值算法基础在(参考引用6)当中有详细的说明,我这里直接给出其算法的实现:&/p&&div class=&highlight&&&pre&&code class=&language-cpp&&&span&&/span&&span class=&k&&template&/span& &span class=&o&&&&/span&&span class=&k&&typename&/span& &span class=&n&&T&/span&&span class=&o&&&&/span&
&span class=&kr&&inline&/span& &span class=&kt&&void&/span& &span class=&n&&MatrixPolarDecompose&/span&&span class=&p&&(&/span&&span class=&k&&const&/span& &span class=&n&&Matrix&/span&&span class=&o&&&&/span&&span class=&n&&T&/span&&span class=&p&&,&/span& &span class=&mi&&3&/span&&span class=&p&&,&/span& &span class=&mi&&3&/span&&span class=&o&&&&&/span& &span class=&n&&in_matrix&/span&&span class=&p&&,&/span&
&span class=&n&&Matrix&/span&&span class=&o&&&&/span&&span class=&n&&T&/span&&span class=&p&&,&/span& &span class=&mi&&3&/span&&span class=&p&&,&/span& &span class=&mi&&3&/span&&span class=&o&&&&&/span& &span class=&n&&U&/span&&span class=&p&&,&/span&
&span class=&n&&Matrix&/span&&span class=&o&&&&/span&&span class=&n&&T&/span&&span class=&p&&,&/span& &span class=&mi&&3&/span&&span class=&p&&,&/span& &span class=&mi&&3&/span&&span class=&o&&&&&/span& &span class=&n&&P&/span&&span class=&p&&)&/span&
&span class=&p&&{&/span&
&span class=&n&&U&/span& &span class=&o&&=&/span& &span class=&n&&in_matrix&/span&&span class=&p&&;&/span&
&span class=&n&&Matrix&/span&&span class=&o&&&&/span&&span class=&n&&T&/span&&span class=&p&&,&/span& &span class=&mi&&3&/span&&span class=&p&&,&/span& &span class=&mi&&3&/span&&span class=&o&&&&/span& &span class=&n&&U_inv&/span&&span class=&p&&;&/span&
&span class=&n&&Matrix&/span&&span class=&o&&&&/span&&span class=&n&&T&/span&&span class=&p&&,&/span& &span class=&mi&&3&/span&&span class=&p&&,&/span& &span class=&mi&&3&/span&&span class=&o&&&&/span& &span class=&n&&U_pre&/span&&span class=&p&&;&/span&
&span class=&k&&do&/span& &span class=&p&&{&/span&
&span class=&n&&U_pre&/span& &span class=&o&&=&/span& &span class=&n&&U&/span&&span class=&p&&;&/span&
&span class=&n&&U_inv&/span& &span class=&o&&=&/span& &span class=&n&&U&/span&&span class=&p&&;&/span&
&span class=&k&&if&/span& &span class=&p&&(&/span&&span class=&o&&!&/span&&span class=&n&&InverseMatrix3X3f&/span&&span class=&p&&(&/span&&span class=&n&&U_inv&/span&&span class=&p&&))&/span& &span class=&n&&assert&/span&&span class=&p&&(&/span&&span class=&mi&&0&/span&&span class=&p&&);&/span&
&span class=&n&&Matrix&/span&&span class=&o&&&&/span&&span class=&n&&T&/span&&span class=&p&&,&/span& &span class=&mi&&3&/span&&span class=&p&&,&/span& &span class=&mi&&3&/span&&span class=&o&&&&/span& &span class=&n&&U_inv_trans&/span&&span class=&p&&;&/span&
&span class=&n&&Transpose&/span&&span class=&p&&(&/span&&span class=&n&&U_inv_trans&/span&&span class=&p&&,&/span& &span class=&n&&U_inv&/span&&span class=&p&&);&/span&
&span class=&n&&U&/span& &span class=&o&&=&/span& &span class=&p&&(&/span&&span class=&n&&U&/span& &span class=&o&&+&/span& &span class=&n&&U_inv_trans&/span&&span class=&p&&)&/span& &span class=&o&&*&/span& &span class=&p&&(&/span&&span class=&n&&T&/span&&span class=&p&&)&/span&&span class=&mf&&0.5&/span&&span class=&p&&;&/span&
&span class=&p&&}&/span& &span class=&k&&while&/span&&span class=&p&&(&/span&&span class=&n&&U&/span& &span class=&o&&!=&/span& &span class=&n&&U_pre&/span&&span class=&p&&);&/span&
&span class=&n&&P&/span& &span class=&o&&=&/span& &span class=&n&&in_matrix&/span& &span class=&o&&*&/span& &span class=&n&&U_inv&/span&&span class=&p&&;&/span&
&span class=&p&&}&/span&
&/code&&/pre&&/div&&p&算法其实是从要分解的矩阵 &img src=&https://www.zhihu.com/equation?tex=M& alt=&M& eeimg=&1&& 作为起点,采用矩阵平方根的数值迭代算法,计算出与 &img src=&https://www.zhihu.com/equation?tex=M& alt=&M& eeimg=&1&& 最为相似的单位阵 &img src=&https://www.zhihu.com/equation?tex=I& alt=&I& eeimg=&1&& 的平方根 &img src=&https://www.zhihu.com/equation?tex=U& alt=&U& eeimg=&1&& 。然后再将 &img src=&https://www.zhihu.com/equation?tex=M& alt=&M& eeimg=&1&& 乘以 &img src=&https://www.zhihu.com/equation?tex=U%5E%7B-1%7D& alt=&U^{-1}& eeimg=&1&& ,得到P。&/p&&p&下面让我们看看这个分解是否真的可以从 &img src=&https://www.zhihu.com/equation?tex=M& alt=&M& eeimg=&1&& 还原出 &img src=&https://www.zhihu.com/equation?tex=S%E3%80%81R%E3%80%81T& alt=&S、R、T& eeimg=&1&&&/p&&div class=&highlight&&&pre&&code class=&language-cpp&&&span&&/span&&span class=&cp&&#include&/span& &span class=&cpf&&&iomanip&&/span&&span class=&cp&&&/span&
&span class=&cp&&#include&/span& &span class=&cpf&&&iostream&&/span&&span class=&cp&&&/span&
&span class=&cp&&#include&/span& &span class=&cpf&&&random&&/span&&span class=&cp&&&/span&
&span class=&cp&&#include&/span& &span class=&cpf&&&MatrixComposeDecompose.hpp&&/span&&span class=&cp&&&/span&
&span class=&k&&using&/span& &span class=&k&&namespace&/span& &span class=&n&&My&/span&&span class=&p&&;&/span&
&span class=&k&&using&/span& &span class=&k&&namespace&/span& &span class=&n&&std&/span&&span class=&p&&;&/span&
&span class=&kt&&int&/span& &span class=&nf&&main&/span&&span class=&p&&(&/span&&span class=&kt&&int&/span& &span class=&p&&,&/span& &span class=&kt&&char&/span&&span class=&o&&**&/span& &span class=&p&&)&/span&
&span class=&p&&{&/span&
&span class=&n&&default_random_engine&/span& &span class=&n&&generator&/span&&span class=&p&&;&/span&
&span class=&n&&generator&/span&&span class=&p&&.&/span&&span class=&n&&seed&/span&&span class=&p&&(&/span&&span class=&mi&&48&/span&&span class=&p&&);&/span&
&span class=&n&&uniform_real_distribution&/span&&span class=&o&&&&/span&&span class=&kt&&float&/span&&span class=&o&&&&/span& &span class=&n&&distribution_r&/span&&span class=&p&&(&/span&&span class=&o&&-&/span&&span class=&mf&&1.0f&/span& &span class=&o&&*&/span& &span class=&n&&PI&/span&&span class=&p&&,&/span& &span class=&mf&&1.0f&/span& &span class=&o&&*&/span& &span class=&n&&PI&/span&&span class=&p&&);&/span&
&span class=&n&&uniform_real_distribution&/span&&span class=&o&&&&/span&&span class=&kt&&float&/span&&span class=&o&&&&/span& &span class=&n&&distribution_s&/span&&span class=&p&&(&/span&&span class=&mf&&0.1f&/span&&span class=&p&&,&/span& &span class=&mf&&100.0f&/span&&span class=&p&&);&/span&
&span class=&n&&uniform_real_distribution&/span&&span class=&o&&&&/span&&span class=&kt&&float&/span&&span class=&o&&&&/span& &span class=&n&&distribution_t&/span&&span class=&p&&(&/span&&span class=&o&&-&/span&&span class=&mf&&1000.0f&/span&&span class=&p&&,&/span& &span class=&mf&&1000.0f&/span&&span class=&p&&);&/span&
&span class=&k&&auto&/span& &span class=&n&&dice_r&/span& &span class=&o&&=&/span& &span class=&n&&std&/span&&span class=&o&&::&/span&&span class=&n&&bind&/span&&span class=&p&&(&/span&&span class=&n&&distribution_r&/span&&span class=&p&&,&/span& &span class=&n&&generator&/span&&span class=&p&&);&/span&
&span class=&k&&auto&/span& &span class=&n&&dice_s&/span& &span class=&o&&=&/span& &span class=&n&&std&/span&&span class=&o&&::&/span&&span class=&n&&bind&/span&&span class=&p&&(&/span&&span class=&n&&distribution_s&/span&&span class=&p&&,&/span& &span class=&n&&generator&/span&&span class=&p&&);&/span&
&span class=&k&&auto&/span& &span class=&n&&dice_t&/span& &span class=&o&&=&/span& &span class=&n&&std&/span&&span class=&o&&::&/span&&span class=&n&&bind&/span&&span class=&p&&(&/span&&span class=&n&&distribution_t&/span&&span class=&p&&,&/span& &span class=&n&&generator&/span&&span class=&p&&);&/span&
&span class=&n&&Vector3f&/span& &span class=&n&&translation&/span& &span class=&p&&({&/span&&span class=&n&&dice_t&/span&&span class=&p&&(),&/span& &span class=&n&&dice_t&/span&&span class=&p&&(),&/span& &span class=&n&&dice_t&/span&&span class=&p&&()});&/span&
&span class=&n&&Vector3f&/span& &span class=&n&&scale&/span& &span class=&p&&({&/span&&span class=&n&&dice_s&/span&&span class=&p&&(),&/span& &span class=&n&&dice_s&/span&&span class=&p&&(),&/span& &span class=&n&&dice_s&/span&&span class=&p&&()});&/span&
&span class=&n&&Vector3f&/span& &span class=&n&&rotation&/span& &span class=&p&&({&/span&&span class=&n&&dice_r&/span&&span class=&p&&(),&/span& &span class=&n&&dice_r&/span&&span class=&p&&(),&/span& &span class=&n&&dice_r&/span&&span class=&p&&()});&/span&
&span class=&n&&Matrix4X4f&/span& &span class=&n&&matrix&/span&&span class=&p&&;&/span&
&span class=&n&&Matrix4X4fCompose&/span&&span class=&p&&(&/span&&span class=&n&&matrix&/span&&span class=&p&&,&/span& &span class=&n&&rotation&/span&&span class=&p&&,&/span& &span class=&n&&scale&/span&&span class=&p&&,&/span& &span class=&n&&translation&/span&&span class=&p&&);&/span&
&span class=&n&&cerr&/span& &span class=&o&&&&&/span& &span class=&s&&&Scale: &&/span& &span class=&o&&&&&/span& &span class=&n&&scale&/span&&span class=&p&&;&/span&
&span class=&n&&Matrix3X3f&/span& &span class=&n&&A&/span& &span class=&o&&=&/span& &span class=&p&&{{&/span&
&span class=&p&&{&/span&&span class=&n&&matrix&/span&&span class=&p&&[&/span&&span class=&mi&&0&/span&&span class=&p&&][&/span&&span class=&mi&&0&/span&&span class=&p&&],&/span& &span class=&n&&matrix&/span&&span class=&p&&[&/span&&span class=&mi&&0&/span&&span class=&p&&][&/span&&span class=&mi&&1&/span&&span class=&p&&],&/span& &span class=&n&&matrix&/span&&span class=&p&&[&/span&&span class=&mi&&0&/span&&span class=&p&&][&/span&&span class=&mi&&2&/span&&span class=&p&&]},&/span&
&span class=&p&&{&/span&&span class=&n&&matrix&/span&&span class=&p&&[&/span&&span class=&mi&&1&/span&&span class=&p&&][&/span&&span class=&mi&&0&/span&&span class=&p&&],&/span& &span class=&n&&matrix&/span&&span class=&p&&[&/span&&span class=&mi&&1&/span&&span class=&p&&][&/span&&span class=&mi&&1&/span&&span class=&p&&],&/span& &span class=&n&&matrix&/span&&span class=&p&&[&/span&&span class=&mi&&1&/span&&span class=&p&&][&/span&&span class=&mi&&2&/span&&span class=&p&&]},&/span&
&span class=&p&&{&/span&&span class=&n&&matrix&/span&&span class=&p&&[&/span&&span class=&mi&&2&/span&&span class=&p&&][&/span&&span class=&mi&&0&/span&&span class=&p&&],&/span& &span class=&n&&matrix&/span&&span class=&p&&[&/span&&span class=&mi&&2&/span&&span class=&p&&][&/span&&span class=&mi&&1&/span&&span class=&p&&],&/span& &span class=&n&&matrix&/span&&span class=&p&&[&/span&&span class=&mi&&2&/span&&span class=&p&&][&/span&&span class=&mi&&2&/span&&span class=&p&&]}&/span&
&span class=&p&&}};&/span&
&span class=&n&&Matrix3X3f&/span& &span class=&n&&U&/span&&span class=&p&&,&/span& &span class=&n&&P&/span&&span class=&p&&;&/span&
&span class=&n&&MatrixPolarDecompose&/span&&span class=&p&&(&/span&&span class=&n&&A&/span&&span class=&p&&,&/span& &span class=&n&&U&/span&&span class=&p&&,&/span& &span class=&n&&P&/span&&span class=&p&&);&/span&
&span class=&n&&cout&/span&&span class=&p&&.&/span&&span class=&n&&precision&/span&&span class=&p&&(&/span&&span class=&mi&&4&/span&&span class=&p&&);&/span&
&span class=&n&&cout&/span&&span class=&p&&.&/span&&span class=&n&&setf&/span&&span class=&p&&(&/span&&span class=&n&&ios&/span&&span class=&o&&::&/span&&span class=&n&&fixed&/span&&span class=&p&&);&/span&
&span class=&n&&cout&/span& &span class=&o&&&&&/span& &span class=&s&&&Polar Decompose of matrix A: &&/span& &span class=&o&&&&&/span& &span class=&n&&endl&/span&&span class=&p&&;&/span&
&span class=&n&&cout&/span& &span class=&o&&&&&/span& &span class=&n&&A&/span&&span class=&p&&;&/span&
&span class=&n&&cout&/span& &span class=&o&&&&&/span& &span class=&s&&&U:&&/span& &span class=&o&&&&&/span& &span class=&n&&endl&/span&&span class=&p&&;&/span&
&span class=&n&&cout&/span& &span class=&o&&&&&/span& &span class=&n&&U&/span&&span class=&p&&;&/span&
&span class=&n&&cout&/span& &span class=&o&&&&&/span& &span class=&s&&&Orthogonal: &&/span& &span class=&o&&&&&/span& &span class=&p&&(&/span&&span class=&n&&U&/span&&span class=&p&&.&/span&&span class=&n&&isOrthogonal&/span&&span class=&p&&()&/span&&span class=&o&&?&/span&&span class=&s&&&true&&/span&&span class=&o&&:&/span&&span class=&s&&&false&&/span&&span class=&p&&)&/span& &span class=&o&&&&&/span& &span class=&n&&endl&/span&&span class=&p&&;&/span&
&span class=&n&&cout&/span& &span class=&o&&&&&/span& &span class=&s&&&P:&&/span& &span class=&o&&&&&/span& &span class=&n&&endl&/span&&span class=&p&&;&/span&
&span class=&n&&cout&/span& &span class=&o&&&&&/span& &span class=&n&&P&/span&&span class=&p&&;&/span&
&span class=&n&&Matrix3X3f&/span& &span class=&n&&A_dash&/span& &span class=&o&&=&/span& &span class=&n&&P&/span& &span class=&o&&*&/span& &span class=&n&&U&/span&&span class=&p&&;&/span&
&span class=&n&&cout&/span& &span class=&o&&&&&/span& &span class=&s&&&U * P: &&/span& &span class=&o&&&&&/span& &span class=&n&&A_dash&/span&&span class=&p&&;&/span&
&span class=&n&&cout&/span& &span class=&o&&&&&/span& &span class=&s&&&Error: &&/span& &span class=&o&&&&&/span& &span class=&n&&A_dash&/span& &span class=&o&&-&/span& &span class=&n&&A&/span&&span class=&p&&;&/span&
&span class=&k&&return&/span& &span class=&mi&&0&/span&&span class=&p&&;&/span&
&span class=&p&&}&/span&
&/code&&/pre&&/div&&p&上面这个例子首先用伪随机数生成了一个Transform矩阵,然后用Polar分解法对它进行分解。下面是执行的结果:&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&chenwenlideMBP:GameEngineFromScratch chenwenli$ build/Test/PolarDecomposeTest
Scale: ( 0.6,86.5060 )
Polar Decompose of matrix A:
( 0.9,0.1019 )
( 6.8,0.0487 )
( -28.4,75.3926 )
( 0.0,0.4903 )
( 0.4,0.0059 )
( -0.4,0.8715 )
Orthogonal: true
( 0.0,-0.0000 )
( 0.6,0.0000 )
( 0.0,86.5060 )
( 0.9,0.1019 )
( 6.8,0.0487 )
( -28.4,75.3926 )
( -0.0,-0.0000 )
( 0.0,0.0000 )
( 0.0,-0.0000 )
chenwenlideMBP:GameEngineFromScratch chenwenli$
&/code&&/pre&&/div&&p&我们可以看到分解出的P是一个对角矩阵,其中的值正好与我们随机产生的原始矩阵的缩放值相同。而U是旋转矩阵,它的值其实与我们随机产生的旋转所对应的旋转矩阵是一样的。(这个例子里看不太出来)。关于这一点,我们可以在下面这个完整的对变换矩阵进行线性插值的例子当中验证:&/p&&div class=&highlight&&&pre&&code class=&language-cpp&&&span&&/span&&span class=&cp&&#include&/span& &span class=&cpf&&&iostream&&/span&&span class=&cp&&&/span&
&span class=&cp&&#include&/span& &span class=&cpf&&&random&&/span&&span class=&cp&&&/span&
&span class=&cp&&#include&/span& &span class=&cpf&&&Linear.hpp&&/span&&span class=&cp&&&/span&
&span class=&cp&&#include&/span& &span class=&cpf&&&geommath.hpp&&/span&&span class=&cp&&&/span&
&span class=&k&&using&/span& &span class=&k&&namespace&/span& &span class=&n&&My&/span&&span class=&p&&;&/span&
&span class=&k&&using&/span& &span class=&k&&namespace&/span& &span class=&n&&std&/span&&span class=&p&&;&/span&
&span class=&kt&&int&/span& &span class=&nf&&main&/span& &span class=&p&&(&/span&&span class=&kt&&int&/span& &span class=&n&&argc&/span&&span class=&p&&,&/span& &span class=&kt&&char&/span&&span class=&o&&**&/span& &span class=&n&&argv&/span&&span class=&p&&)&/span&
&span class=&p&&{&/span&
&span class=&kt&&int&/span& &span class=&n&&interpolate_count&/span& &span class=&o&&=&/span& &span class=&mi&&100&/span&&span class=&p&&;&/span&
&span class=&k&&if&/span& &span class=&p&&(&/span&&span class=&n&&argc&/span& &span class=&o&&&&/span& &span class=&mi&&1&/span&&span class=&p&&)&/span&
&span class=&p&&{&/span&
&span class=&n&&interpolate_count&/span& &span class=&o&&=&/span& &span class=&n&&atoi&/span&&span class=&p&&(&/span&&span class=&n&&argv&/span&&span class=&p&&[&/span&&span class=&mi&&1&/span&&span class=&p&&]);&/span&
&span class=&p&&}&/span&
&span class=&n&&default_random_engine&/span& &span class=&n&&generator&/span&&span class=&p&&;&/span&
&span class=&n&&generator&/span&&span class=&p&&.&/span&&span class=&n&&seed&/span&&span class=&p&&(&/span&&span class=&mi&&48&/span&&span class=&p&&);&/span&
&span class=&n&&uniform_real_distribution&/span&&span class=&o&&&&/span&&span class=&kt&&float&/span&&span class=&o&&&&/span& &span class=&n&&distribution_r&/span&&span class=&p&&(&/span&&span class=&o&&-&/span&&span class=&mf&&1.0f&/span& &span class=&o&&*&/span& &span class=&n&&PI&/span&&span class=&p&&,&/span& &span class=&mf&&1.0f&/span& &span class=&o&&*&/span& &span class=&n&&PI&/span&&span class=&p&&);&/span&
&span class=&n&&uniform_real_distribution&/span&&span class=&o&&&&/span&&span class=&kt&&float&/span&&span class=&o&&&&/span& &span class=&n&&distribution_s&/span&&span class=&p&&(&/span&&span class=&mf&&0.1f&/span&&span class=&p&&,&/span& &span class=&mf&&100.0f&/span&&span class=&p&&);&/span&
&span class=&n&&uniform_real_distribution&/span&&span class=&o&&&&/span&&span class=&kt&&float&/span&&span class=&o&&&&/span& &span class=&n&&distribution_t&/span&&span class=&p&&(&/span&&span class=&o&&-&/span&&span class=&mf&&1000.0f&/span&&span class=&p&&,&/span& &span class=&mf&&1000.0f&/span&&span class=&p&&);&/span&
&span class=&k&&auto&/span& &span class=&n&&dice_r&/span& &span class=&o&&=&/span& &span class=&n&&std&/span&&span class=&o&&::&/span&&span class=&n&&bind&/span&&span class=&p&&(&/span&&span class=&n&&distribution_r&/span&&span class=&p&&,&/span& &span class=&n&&generator&/span&&span class=&p&&);&/span&
&span class=&k&&auto&/span& &span class=&n&&dice_s&/span& &span class=&o&&=&/span& &span class=&n&&std&/span&&span class=&o&&::&/span&&span class=&n&&bind&/span&&span class=&p&&(&/span&&span class=&n&&distribution_s&/span&&span class=&p&&,&/span& &span class=&n&&generator&/span&&span class=&p&&);&/span&
&span class=&k&&auto&/span& &span class=&n&&dice_t&/span& &span class=&o&&=&/span& &span class=&n&&std&/span&&span class=&o&&::&/span&&span class=&n&&bind&/span&&span class=&p&&(&/span&&span class=&n&&distribution_t&/span&&span class=&p&&,&/span& &span class=&n&&generator&/span&&span class=&p&&);&/span&
&span class=&c1&&// generate start point matrix&/span&
&span class=&n&&Vector3f&/span& &span class=&n&&translation_1&/span& &span class=&p&&({&/span&&span class=&n&&dice_t&/span&&span class=&p&&(),&/span& &span class=&n&&dice_t&/span&&span class=&p&&(),&/span& &span class=&n&&dice_t&/span&&span class=&p&&()});&/span&
&span class=&n&&Vector3f&/span& &span class=&n&&scale_1&/span& &span class=&p&&({&/span&&span class=&n&&dice_s&/span&&span class=&p&&(),&/span& &span class=&n&&dice_s&/span&&span class=&p&&(),&/span& &span class=&n&&dice_s&/span&&span class=&p&&()});&/span&
&span class=&n&&Vector3f&/span& &span class=&n&&rotation_1&/span& &span class=&p&&({&/span&&span class=&n&&dice_r&/span&&span class=&p&&(),&/span& &span class=&n&&dice_r&/span&&span class=&p&&(),&/span& &span class=&n&&dice_r&/span&&span class=&p&&()});&/span&
&span class=&n&&Matrix4X4f&/span& &span class=&n&&matrix_transform_1&/span&&span class=&p&&;&/span&
&span class=&n&&Matrix4X4fCompose&/span&&span class=&p&&(&/span&&span class=&n&&matrix_transform_1&/span&&span class=&p&&,&/span& &span class=&n&&rotation_1&/span&&span class=&p&&,&/span& &span class=&n&&scale_1&/span&&span class=&p&&,&/span& &span class=&n&&translation_1&/span&&span class=&p&&);&/span&
&span class=&n&&Vector3f&/span& &span class=&n&&v&/span& &span class=&p&&({&/span&&span class=&n&&dice_t&/span&&span class=&p&&(),&/span& &span class=&n&&dice_t&/span&&span class=&p&&(),&/span& &span class=&n&&dice_t&/span&&span class=&p&&()});&/span&
&span class=&c1&&// generate end point matrix&/span&
&span class=&n&&Vector3f&/span& &span class=&n&&translation_2&/span& &span class=&p&&({&/span&&span class=&n&&dice_t&/span&&span class=&p&&(),&/span& &span class=&n&&dice_t&/span&&span class=&p&&(),&/span& &span class=&n&&dice_t&/span&&span class=&p&&()});&/span&
&span class=&n&&Vector3f&/span& &span class=&n&&scale_2&/span& &span class=&p&&({&/span&&span class=&n&&dice_s&/span&&span class=&p&&(),&/span& &span class=&n&&dice_s&/span&&span class=&p&&(),&/span& &span class=&n&&dice_s&/span&&span class=&p&&()});&/span&
&span class=&n&&Vector3f&/span& &span class=&n&&rotation_2&/span& &span class=&p&&({&/span&&span class=&n&&dice_r&/span&&span class=&p&&(),&/span& &span class=&n&&dice_r&/span&&span class=&p&&(),&/span& &span class=&n&&dice_r&/span&&span class=&p&&()});&/span&
&span class=&n&&Matrix4X4f&/span& &span class=&n&&matrix_transform_2&/span&&span class=&p&&;&/span&
&span class=&n&&Matrix4X4fCompose&/span&&span class=&p&&(&/span&&span class=&n&&matrix_transform_2&/span&&span class=&p&&,&/span& &span class=&n&&rotation_2&/span&&span class=&p&&,&/span& &span class=&n&&scale_2&/span&&span class=&p&&,&/span& &span class=&n&&translation_2&/span&&span class=&p&&);&/span&
&span class=&k&&auto&/span& &span class=&n&&v1&/span& &span class=&o&&=&/span& &span class=&n&&v&/span&&span class=&p&&;&/span&
&span class=&n&&TransformCoord&/span&&span class=&p&&(&/span&&span class=&n&&v1&/span&&span class=&p&&,&/span& &span class=&n&&matrix_transform_1&/span&&span class=&p&&);&/span&
&span class=&k&&auto&/span& &span class=&n&&v2&/span& &span class=&o&&=&/span& &span class=&n&&v&/span&&span class=&p&&;&/span&
&span class=&n&&TransformCoord&/span&&span class=&p&&(&/span&&span class=&n&&v2&/span&&span class=&p&&,&/span& &span class=&n&&matrix_transform_2&/span&&span class=&p&&);&/span&
&span class=&n&&cout&/span& &span class=&o&&&&&/span& &span class=&s&&&Start Point:&&/span& &span class=&o&&&&&/span& &span class=&n&&v1&/span&&span class=&p&&;&/span&
&span class=&n&&cout&/span& &span class=&o&&&&&/span& &span class=&s&&&End Point:&&/span& &span class=&o&&&&&/span& &span class=&n&&v2&/span&&span class=&p&&;&/span&
&span class=&n&&cout&/span& &span class=&o&&&&&/span& &span class=&s&&&_________________&&/span& &span class=&o&&&&&/span& &span class=&n&&endl&/span&&span class=&p&&;&/span&
&span class=&n&&cout&/span& &span class=&o&&&&&/span& &span class=&s&&&Start Translation: &&/span& &span class=&o&&&&&/span& &span class=&n&&translation_1&/span&&span class=&p&&;&/span&
&span class=&n&&cout&/span& &span class=&o&&&&&/span& &span class=&s&&&End Translation: &&/span& &span class=&o&&&&&/span& &span class=&n&&translation_2&/span&&span class=&p&&;&/span&
&span class=&n&&cout&/span& &span class=&o&&&&&/span& &span class=&s&&&_________________&&/span& &span class=&o&&&&&/span& &span class=&n&&endl&/span&&span class=&p&&;&/span&
&span class=&n&&cout&/span& &span class=&o&&&&&/span& &span class=&s&&&Start Scalar: &&/span& &span class=&o&&&&&/span& &span class=&n&&scale_1&/span&&span class=&p&&;&/span&
&span class=&n&&cout&/span& &span class=&o&&&&&/span& &span class=&s&&&End Scalar: &&/span& &span class=&o&&&&&/span& &span class=&n&&scale_2&/span&&span class=&p&&;&/span&
&span class=&n&&cout&/span& &span class=&o&&&&&/span& &span class=&s&&&_________________&&/span& &span class=&o&&&&&/span& &span class=&n&&endl&/span&&span class=&p&&;&/span&
&span class=&n&&cout&/span& &span class=&o&&&&&/span& &span class=&s&&&Start Rotation: &&/span& &span class=&o&&&&&/span& &span class=&n&&rotation_1&/span&&span class=&p&&;&/span&
&span class=&n&&cout&/span& &span class=&o&&&&&/span& &span class=&s&&&End Rotation: &&/span& &span class=&o&&&&&/span& &span class=&n&&rotation_2&/span&&span class=&p&&;&/span&
&span class=&n&&cout&/span& &span class=&o&&&&&/span& &span class=&s&&&=================&&/span& &span class=&o&&&&&/span& &span class=&n&&endl&/span&&span class=&p&&;&/span&
&span class=&n&&Linear&/span&&span class=&o&&&&/span&&span class=&n&&Matrix4X4f&/span&&span class=&p&&,&/span& &span class=&kt&&float&/span&&span class=&o&&&&/span& &span class=&n&&linear_introplator&/span&&span class=&p&&({&/span&&span class=&n&&matrix_transform_1&/span&&span class=&p&&,&/span& &span class=&n&&matrix_transform_2&/span&&span class=&p&&});&/span&
&span class=&n&&cout&/span& &span class=&o&&&&&/span& &span class=&n&&endl&/span&&span class=&p&&;&/span&
&span class=&n&&cout&/span& &span class=&o&&&&&/span& &span class=&s&&&Interpolate: &&/span& &span class=&o&&&&&/span& &span class=&n&&endl&/span&&span class=&p&&;&/span&
&span class=&k&&for&/span& &span class=&p&&(&/span&&span class=&kt&&int&/span& &span class=&n&&i&/span& &span class=&o&&=&/span& &span class=&mi&&0&/span&&span class=&p&&;&/span& &span class=&n&&i&/span& &span class=&o&&&=&/span& &span class=&n&&interpolate_count&/span&&span class=&p&&;&/span& &span class=&n&&i&/span&&span class=&o&&++&/span&&span class=&p&&)&/span&
&span class=&p&&{&/span&
&span class=&k&&auto&/span& &span class=&n&&inter_matrix&/span& &span class=&o&&=&/span& &span class=&n&&linear_introplator&/span&&span class=&p&&.&/span&&span class=&n&&Interpolate&/span&&span class=&p&&(&/span&&span class=&n&&i&/span& &span class=&o&&*&/span& &span class=&mf&&1.0f&/span& &span class=&o&&/&/span& &span class=&n&&interpolate_count&/span&&span class=&p&&,&/span& &span class=&mi&&1&/span&&span class=&p&&);&/span&
&span class=&n&&Vector3f&/span& &span class=&n&&rotation&/span&&span class=&p&&,&/span& &span class=&n&&scalar&/span&&span class=&p&&,&/span& &span class=&n&&translation&/span&&span class=&p&&;&/span&
&span class=&n&&Matrix4X4fDecompose&/span&&span class=&p&&(&/span&&span class=&n&&inter_matrix&/span&&span class=&p&&,&/span& &span class=&n&&rotation&/span&&span class=&p&&,&/span& &span class=&n&&scalar&/span&&span class=&p&&,&/span& &span class=&n&&translation&/span&&span class=&p&&);&/span&
&span class=&k&&auto&/span& &span class=&n&&v_inter&/span& &span class=&o&&=&/span& &span class=&n&&v&/span&&span class=&p&&;&/span&
&span class=&n&&TransformCoord&/span&&span class=&p&&(&/span&&span class=&n&&v_inter&/span&&span class=&p&&,&/span& &span class=&n&&inter_matrix&/span&&span class=&p&&);&/span&
&span class=&n&&cout&/span& &span class=&o&&&&&/span& &span class=&s&&&#&&/span& &span class=&o&&&&&/span& &span class=&n&&i&/span& &span class=&o&&&&&/span& &span class=&n&&endl&/span&&span class=&p&&;&/span&
&span class=&n&&cout&/span& &span class=&o&&&&&/span& &span class=&s&&&_________________&&/span& &span class=&o&&&&&/span& &span class=&n&&endl&/span&&span class=&p&&;&/span&
&span class=&n&&cout&/span& &span class=&o&&&&&/span& &span class=&s&&&Interpolated Position: &&/span& &span class=&o&&&&&/span& &span class=&n&&v_inter&/span&&span class=&p&&;&/span&
&span class=&n&&cout&/span& &span class=&o&&&&&/span& &span class=&s&&&_________________&&/span& &span class=&o&&&&&/span& &span class=&n&&endl&/span&&span class=&p&&;&/span&
&span class=&n&&cout&/span& &span class=&o&&&&&/span& &span class=&s&&&Rotation: &&/span& &span class=&o&&&&&/span& &span class=&n&&rotation&/span&&span class=&p&&;&/span&
&span class=&n&&cout&/span& &span class=&o&&&&&/span& &span class=&s&&&Scalar: &&/span& &span class=&o&&&&&/span&
&span class=&n&&scalar&/span&&span class=&p&&;&/span&
&span class=&n&&cout&/span& &span class=&o&&&&&/span& &span class=&s&&&Translation: &&/span& &span class=&o&&&&&/span& &span class=&n&&translation&/span&&span class=&p&&;&/span&
&span class=&n&&cout&/span& &span class=&o&&&&&/span& &span class=&s&&&=================&&/span& &span class=&o&&&&&/span& &span class=&n&&endl&/span&&span class=&p&&;&/span&
&span class=&p&&}&/span&
&span class=&k&&return&/span& &span class=&mi&&0&/span&&span class=&p&&;&/span&
&span class=&p&&}&/span&
&/code&&/pre&&/div&&p&上面这个例子随机产生两个变换矩阵和一个向量,并将向量分别乘以这两个矩阵得到其初始位置(相当于动画开始时的Pose)和最终位置(相当于动画结束时的Pose)。然后我们对这两个矩阵进行线性内插值,以便计算出向量在开始位置到终止位置的运动轨迹。我们可以在命令行输入具体插值的点数(缺省为插100个点)。为了方便起见,我们下面展现的是插入3个点的结果:&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&chenwenlideMBP:GameEngineFromScratch chenwenli$ build/Test/LinearInterpolateTest 3
Start Point:( ,-,- )
End Point:( -,-, )
_________________
Start Translation: ( -997.49,729.8501 )
End Translation: ( 437.47,238.9918 )
_________________
Start Scalar: ( 0.6,86.5060 )
End Scalar: ( 79.2,10.6004 )
_________________
Start Rotation: ( -3.2,2.2929 )
End Rotation: ( 1.6,-2.4812 )
=================
Interpolate:
_________________
Interpolated Position: ( ,-,- )
_________________
Rotation: ( 0.4,-0.8487 )
Scalar: ( 0.6,86.5060 )
Translation: ( -997.49,729.8501 )
=================
_________________
Interpolated Position: ( ,-,- )
_________________
Rotation: ( 0.5,-1.3929 )
Scalar: ( 26.1,61.2041 )
Translation: ( -519.48,566.2307 )
=================
_________________
Interpolated Position: ( ,-,-133.1098 )
_________________
Rotation: ( 1.5,-1.9370 )
Scalar: ( 53.7,35.9023 )
Translation: ( -40.47,402.6112 )
=================
_________________
Interpolated Position: ( -,-, )
_________________
Rotation: ( 1.6,-2.4812 )
Scalar: ( 79.2,10.6004 )
Translation: ( 437.47,238.9918 )
=================
chenwenlideMBP:GameEngineFromScratch chenwenli$
&/code&&/pre&&/div&&p&可以看到,我们精确地从两个随机生成的矩阵得到了原始的动画参数,并且无论是向量的位置、中间变换矩阵的缩放、旋转、位移都实现了线性的变化。&/p&&p&最终代码在&a href=&https://link.zhihu.com/?target=https%3A//github.com/netwarm007/GameEngineFromScratch/tree/article_48& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&article_48&/a&当中。&/p&&p&&br&&/p&&p&&b&参考引用&/b&&/p&&a href=&https://link.zhihu.com/?target=https%3A//en.wikipedia.org/wiki/Slerp& data-draft-node=&block& data-draft-type=&link-card& data-image=&https://pic2.zhimg.com/v2-ccef5e5bee10b0f2ed131_180x120.jpg& data-image-width=&220& data-image-height=&156& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Slerp - Wikipedia&/a&&a href=&https://link.zhihu.com/?target=https%3A//en.wikipedia.org/wiki/Quaternions_and_spatial_rotation& data-draft-node=&block& data-draft-type=&link-card& data-image=&https://pic4.zhimg.com/v2-7d66fccad48fb4ee54d8bbf_ipico.jpg& data-image-width=&220& data-image-height=&229& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Quaternions and spatial rotation&/a&&a href=&https://link.zhihu.com/?target=http%3A//nghiaho.com/%3Fpage_id%3D846& data-draft-node=&block& data-draft-type=&link-card& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&nghiaho.com/?&/span&&span class=&invisible&&page_id=846&/span&&span class=&ellipsis&&&/span&&/a&&a href=&https://link.zhihu.com/?target=https%3A//en.wikipedia.org/wiki/QR_decomposition& data-draft-node=&block& data-draft-type=&link-card& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&QR decomposition&/a&&a href=&https://link.zhihu.com/?target=https%3A//en.wikipedia.org/wiki/Singular-value_decomposition& data-draft-node=&block& data-draft-type=&link-card& data-image=&https://pic1.zhimg.com/v2-3da14ebf798ff6425eab60c_180x120.jpg& data-image-width=&400& data-image-height=&330& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Singular-value decomposition&/a&&a href=&https://link.zhihu.com/?target=https%3A//en.wikipedia.org/wiki/Polar_decomposition%23Matrix_polar_decomposition& data-draft-node=&block& data-draft-type=&link-card& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Polar decomposition&/a&&a href=&https://link.zhihu.com/?target=https%3A//en.wikipedia.org/wiki/Rotation_formalisms_in_three_dimensions%23Conversion_formulae_between_formalisms& data-draft-node=&block& data-draft-type=&link-card& data-image=&https://pic4.zhimg.com/v2-7d66fccad48fb4ee54d8bbf_ipico.jpg& data-image-width=&220& data-image-height=&229& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Rotation formalisms in three dimensions&/a&&a href=&https://link.zhihu.com/?target=http%3A//research.cs.wisc.edu/graphics/Courses/838-s2002/Papers/polar-decomp.pdf& data-draft-node=&block& data-draft-type=&link-card& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&research.cs.wisc.edu/gr&/span&&span class=&invisible&&aphics/Courses/838-s2002/Papers/polar-decomp.pdf&/span&&span class=&ellipsis&&&/span&&/a&&a href=&https://link.zhihu.com/?target=https%3A//en.m.wikipedia.org/wiki/Square_root_of_a_matrix& data-draft-node=&block& data-draft-type=&link-card& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Square root of a matrix&/a&&a href=&https://link.zhihu.com/?target=https%3A//en.wikipedia.org/wiki/Eigenvalues_and_eigenvectors& data-draft-node=&block& data-draft-type=&link-card& data-image=&https://pic3.zhimg.com/v2-49ae3eaff3e7c30bacd6_180x120.jpg& data-image-width=&320& data-image-height=&223& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Eigenvalues and eigenvectors&/a&&a href=&https://link.zhihu.com/?target=https%3A//en.wikipedia.org/wiki/Eigenvalue_algorithm%23Characteristic_polynomial& data-draft-node=&block& data-draft-type=&link-card& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Eigenvalue algorithm&/a&&a href=&https://link.zhihu.com/?target=https%3A//en.wikipedia.org/wiki/Jacobi_eigenvalue_algorithm& data-draft-node=&block& data-draft-type=&link-card& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Jacobi eigenvalue algorithm&/a&&p&&/p&
我们实现了一个由时间控制单变量形成的动画。(虽然最终输出的是一个4X4的矩阵,但是这个矩阵是由两个独立的旋转:x轴旋转、z轴旋转合成的)虽然对于平移和缩放,由于其线性特征,我们可以将其按照坐标轴分解,使得每一步都是一个受时间控制的单变量…
&figure&&img src=&https://pic2.zhimg.com/v2-78ee5ca210af_b.jpg& data-rawwidth=&1928& data-rawheight=&1082& class=&origin_image zh-lightbox-thumb& width=&1928& data-original=&https://pic2.zhimg.com/v2-78ee5ca210af_r.jpg&&&/figure&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&31、黒コマ
&/code&&/pre&&/div&&p&在CUT和CUT之间设置一段黑屏。通常用来表示短暂的时间流逝或移动。&/p&&figure&&img src=&https://pic3.zhimg.com/v2-cccbb64b415ad0c5de2f6eb5525bbbd4_b.jpg& data-size=&normal& data-rawwidth=&360& data-rawheight=&203& data-thumbnail=&https://pic3.zhimg.com/v2-cccbb64b415ad0c5de2f6eb5525bbbd4_b.jpg& class=&content_image& width=&360&&&figcaption&空之境界第一章「俯瞰风景」CUT128-130&/figcaption&&/figure&&p&这里129卡和130卡之间就做了「黒コマ(1+0)」的指示。&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&32、目盛りPAN
&/code&&/pre&&/div&&p&PAN的一种。作画层与背景层同时移动。&/p&&p&属于难度稍大的PAN,一般会在L/O里对景框的移动速度作出指示。如果原画没有协调好作画层和画面框的速度可能会出现フリッカー的现象。相反,如果镜头速度控制好了可以做出非常漂亮的PAN。&/p&&figure&&img src=&https://pic4.zhimg.com/v2-1e134cb842c78da3be02fa7ead9f4666_b.jpg& data-size=&normal& data-rawwidth=&360& data-rawheight=&203& data-thumbnail=&https://pic4.zhimg.com/v2-1e134cb842c78da3be02fa7ead9f4666_b.jpg& class=&content_image& width=&360&&&figcaption&空之境界第一章「俯瞰风景」CUT145&/figcaption&&/figure&&figure&&img src=&https://pic4.zhimg.com/v2-77b577f2c7d264de1319_b.jpg& data-size=&normal& data-rawwidth=&360& data-rawheight=&203& data-thumbnail=&https://pic4.zhimg.com/v2-77b577f2c7d264de1319_b.jpg& class=&content_image& width=&360&&&figcaption&空之境界第一章「俯瞰风景」CUT448&/figcaption&&/figure&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&33、アオリ
&/code&&/pre&&/div&&p&仰拍。摄像机从相对较低的位置向上进行拍摄。&/p&&figure&&img src=&https://pic2.zhimg.com/v2-c8c6ac41be8d_b.jpg& data-size=&normal& data-rawwidth=&360& data-rawheight=&203& data-thumbnail=&https://pic2.zhimg.com/v2-c8c6ac41be8d_b.jpg& class=&content_image& width=&360&&&figcaption&空之境界第一章「俯瞰风景」CUT162&/figcaption&&/figure&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&34、回転T.B.
&/code&&/pre&&/div&&p&回転PAN的同时做T.B.处理。和PAN T.U.一样,也是两种摄影技术的复合。&/p&&p&上面提到的162卡就是一例。&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&35、つけPAN
&/code&&/pre&&/div&&p&PAN的一种。即付けPAN。&/p&&p&付けPAN和上面提到的目盛りPAN都属于FollowPAN。不过前者的作画层和景框是保持相对固定的,通过反向移动背景层来进行PAN。在这一点上付けPAN的做法和之前说到的Follow很像。因此有些地方就直接用FollowPAN来代替付けPAN了。&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&36、手ブレ
&/code&&/pre&&/div&&p&像用手持相机拍摄一样使画面摇动。&/p&&figure&&img src=&https://pic3.zhimg.com/v2-54d47c06d4d05ed6eed34f86e361ed30_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&360& data-rawheight=&203& data-thumbnail=&https://pic3.zhimg.com/v2-54d47c06d4d05ed6eed34f86e361ed30_b.jpg& class=&content_image& width=&360&&&/figure&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&37、ダブルアクション
&/code&&/pre&&/div&&p&让时间倒退,再从另一个角度显示最后一卡的动作。&/p&&figure&&img src=&https://pic3.zhimg.com/v2-e0a1a00f0f5bdbbd49a5_b.jpg& data-size=&normal& data-rawwidth=&360& data-rawheight=&203& data-thumbnail=&https://pic3.zhimg.com/v2-e0a1a00f0f5bdbbd49a5_b.jpg& class=&content_image& width=&360&&&figcaption&空之境界第一章「俯瞰风景」CUT289-291&/figcaption&&/figure&&p&在290卡式用匕首切断幽灵后,291卡又从俯视的角度重现了这一刀。&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&38、なめる(なめ)
&/code&&/pre&&/div&&p&一种拍摄的角度,将人物置于构图的前部。&/p&&figure&&img src=&https://pic3.zhimg.com/v2-72f8dc78d429c1b4cfeae_b.jpg& data-size=&normal& data-rawwidth=&360& data-rawheight=&203& data-thumbnail=&https://pic3.zhimg.com/v2-72f8dc78d429c1b4cfeae_b.jpg& class=&content_image& width=&360&&&figcaption&空之境界第一章「俯瞰风景」CUT184&/figcaption&&/figure&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&39、T光(透過光)
&/code&&/pre&&/div&&p&一种表现光线的摄影方式,使指定部位呈现发光的效果。&/p&&p&原本指模拟信号时代透过セリ和背景的光线。现在通过数字处理也可以做出同样的效果。&/p&&figure&&img src=&https://pic4.zhimg.com/v2-8b191a0cbacd31_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&360& data-rawheight=&203& data-thumbnail=&https://pic4.zhimg.com/v2-8b191a0cbacd31_b.jpg& class=&content_image& width=&360&&&/figure&&p&这里的匕首就做了T光的指示。&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&40、ストップモーション
&/code&&/pre&&/div&&p&原意是Stop Motion Animation。这里指让之前运动的物体静止,或使其非常缓慢地移动。&/p&&figure&&img src=&https://pic3.zhimg.com/v2-6fb8aee77f192d4ff88135_b.jpg& data-size=&normal& data-rawwidth=&360& data-rawheight=&203& data-thumbnail=&https://pic3.zhimg.com/v2-6fb8aee77f192d4ff88135_b.jpg& class=&content_image& width=&360&&&figcaption&空之境界第一章「俯瞰风景」CUT204&/figcaption&&/figure&&p&CUT204,匕首在刺入义肢后停止运动。&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&41、F.O.
&/code&&/pre&&/div&&p&Fade Out的缩写。即淡出。影像从屏幕中慢慢消失。与F.I.相对应。&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&42、マルチヒキ
&/code&&/pre&&/div&&p&マルチ(Multi)是模拟信号时代使用的マルチプレーンカメラ(Multi Plane Camera)的缩写。在摄影机的深度方向上放置多个セリ,通过セリ和背景的纵深和层次来表现立体感。マルチヒキ即在使用マルチ的情况下,对セリ和背景进行sliding。&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&43、SL(スライド)
&/code&&/pre&&/div&&p&Sliding的缩写。作画层/背景层按照指示相对滑动。&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&44、レンズフレア
&/code&&/pre&&/div&&p&镜头光晕。强光源指向镜头时,反射光生成的图像。常用来表现阳光、车灯等强光。&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&45、BG(ビージー)
&/code&&/pre&&/div&&p&Background的缩写。背景。&/p&&hr&&p&参考资料:&/p&&ol&&li&劇場版 空の境界 第一章「俯瞰風景」画コンテ集 - 用语解说&/li&&li&&a href=&https://link.zhihu.com/?target=https%3A//www18.atwiki.jp/sakuga/pages/28.html%23yougo& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&作画@wiki - 作画用語&/a&&/li&&li&&a href=&https://link.zhihu.com/?target=http%3A//msc-jp.biz/material_html/terms_A.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&M.S.C animetion studio HP&/a&&/li&&li&&a href=&https://link.zhihu.com/?target=http%3A//www.inouejet.com/camera/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&井上ジェットのカメラワーク大辞典&/a&&/li&&/ol&
31、黒コマ在CUT和CUT之间设置一段黑屏。通常用来表示短暂的时间流逝或移动。这里129卡和130卡之间就做了「黒コマ(1+0)」的指示。32、目盛りPANPAN的一种。作画层与背景层同时移动。属于难度稍大的PAN,一般会在L/O里对景框的移动速度作出指示。如果…
&figure&&img src=&https://pic3.zhimg.com/v2-4e1cb3147_b.jpg& data-rawwidth=&1280& data-rawheight=&938& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&https://pic3.zhimg.com/v2-4e1cb3147_r.jpg&&&/figure&&p&各类游戏原画、CG插画、美术基础、色彩、人体、场景、职场、高级系列组成,涉及到素描. 基础、人体结构、透视、肌肉画法、五官画法、手脚画法、人体体块、毛发的画法、衣着设计、头 饰设计、色彩搭配、色彩原理、上色技巧、色彩系统、场景气氛、场景构图、场景道具、场景透视等一系列完善的教程! &/p&&p&教程地址:&a href=&http://link.zhihu.com/?target=http%3A//www.qingwk.com& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&精品绘画课程在线共享学习平台&/a& (轻微课) &/p&&p&部分课程内容:&/p&&a class=&video-box& href=&http://link.zhihu.com/?target=https%3A//www.zhihu.com/video/185472& target=&_blank& data-video-id=&& data-video-playable=&true& data-name=&& data-poster=&https://pic4.zhimg.com/80/v2-81d66f6c4ca14a5995b33_b.jpg& data-lens-id=&185472&&
&img class=&thumbnail& src=&https://pic4.zhimg.com/80/v2-81d66f6c4ca14a5995b33_b.jpg&&&span class=&content&&
&span class=&title&&&span class=&z-ico-extern-gray&&&/span&&span class=&z-ico-extern-blue&&&/span&&/span&
&span class=&url&&&span class=&z-ico-video&&&/span&https://www.zhihu.com/video/185472&/span&
&figure&&img src=&https://pic2.zhimg.com/v2-96703dda6a54d40d575ca07b4aad0821_b.jpg& data-rawwidth=&600& data-rawheight=&1056& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&https://pic2.zhimg.com/v2-96703dda6a54d40d575ca07b4aad0821_r.jpg&&&figcaption&www.qingwk.com&/figcaption&&/figure&&figure&&img src=&https://pic3.zhimg.com/v2-9a5bfdbdf2_b.jpg& data-rawwidth=&600& data-rawheight=&1227& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&https://pic3.zhimg.com/v2-9a5bfdbdf2_r.jpg&&&figcaption&www.qingwk.com&/figcaption&&/figure&&figure&&img src=&https://pic1.zhimg.com/v2-725db889ad028c358a92c_b.jpg& data-rawwidth=&600& data-rawheight=&1178& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&https://pic1.zhimg.com/v2-725db889ad028c358a92c_r.jpg&&&figcaption&www.qingwk.com&/figcaption&&/figure&&p&&br&&/p&&p&半公益教学,价格亲民&/p&&p&&br&&/p&&p&轻微课(&a href=&http://link.zhihu.com/?target=http%3A//www.qingwk.com& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&精品绘画课程在线共享学习平台&/a& ),让每个人都学得起画画! &/p&
各类游戏原画、CG插画、美术基础、色彩、人体、场景、职场、高级系列组成,涉及到素描. 基础、人体结构、透视、肌肉画法、五官画法、手脚画法、人体体块、毛发的画法、衣着设计、头 饰设计、色彩搭配、色彩原理、上色技巧、色彩系统、场景气氛、场景构图、…
最简单的方法,看Staff表,包括OP和ED的,可以知道个大概,虽然每部动画都有点不同,但是基本上都是差不多的。可以往后看动画的时候留意一下。&br&&br&就说说日本电视动画的情况,中国动画不了解。&br&&br&&b&企划&/b&&br&&blockquote&任何一部作品,都是从企划开始的。总会有一个人/团队决定要制作一部动画。这个角色一般是某个动画出品公司(注意,不是制作公司)的企划负责人(比如Aniplex公司)、某个公司专门的企划团队(比如SUNRISE就有自己的企划部)、 或者说某个版权商的项目负责人(比如集英社,他们喜欢为自己旗下的作品制作动画,谋求更多利益,或者是游戏公司之类的)。&br&&br&一般会用公司的名义。&/blockquote&&b&&br&制作人/动画制作人&/b&&br&&blockquote&动画作品的具体负责人。负责动画制作过程中的管理和行政工作,也包括宣传活动和周边产品开发等等工作。通常投资方的负责人都会作为制作人挂名,而实际负责项目的就是动画制作人。&br&&br&制作人还负责聘请监督、系列构成等工作,而作品预算、资金分配、工作室管理等等后勤工作就是制作人统筹。&br&&br&可以说是负责一部作品的所有管理事务。&/blockquote&&br&&b&原案/原作&/b&&br&&blockquote&就是作品故事的最初提出者。没有很明确的规定,一般来说,原作就是作品的最初创作者,并且是持有版权的,比如漫画的原作者、轻小说的原作者、游戏的开发公司。&br&&br&而原案,则是把故事概念转化为文字的人/团队,他们只是制作团队的成员。他们的著作权是根据合同转让给制作委员会的。&br&&br&作者不一定是一个人,也可能是一个团队。&/blockquote&&br&&b&人物原案/原作插画&/b&&br&&blockquote&就是人物造型的最初设计者。&br&&br&在由漫画改编的动画作品中,人物原案就是漫画核心作画人员(之所以这样写,因为漫画作品有可能是一个人负责故事创作,一个人负责作画的),因为漫画通常是同一个人负责故事创作和作画的,所以漫画改编的作品基本不会看到“人物原案”这一项。&br&&br&而轻小说改编的作品中,是有插画师的,这个插画师就是“人物原案”。类似的,游戏改编作品中也会有这样的角色。&br&&br&在完全原创的作品中,制作委员会也会请专门的人来设计人物的造型,那个人就是“人物原案”。&br&&br&要注意,人物原案和人物设定不是一回事,下面会讲到。&/blockquote&&br&&b&总监督/监督/系列监督/副监督&/b&&br&&blockquote&先说说共同点。&br&&br&监督就相当于总导演,是整部动画制作方面的最高负责人,注意,是制作部分,作品宣传、资源调度之类行政管理工作的和他无关。&br&&br&监督参与的工作包括:选择主要Staff成员,选拔配音人员,创作音乐/BGM,系列构成、每集脚本创作、分镜演出、layout、原画、色彩设计、背景、后期制作、剪辑。也就是说,整个动画制作流程,监督都要跟踪和负责。&br&&br&监督当然是不太可能实际参与这些工作的,在实际工作过程中,监督是通过制作会议向下传达他的创作意图的,然后由各个部分的具体负责人员实施。在之后的工作中监督就是一个监督者,确保这些部分不会偏离计划太多。&br&&br&由于日本电视动画基本是5~7集左右同时在制作的,每集之间的进度大约相差1周。监督是要5集都兼顾到的。&br&&br&监督会参与具体制作的工作就只有分镜和演出,通常是关键集数,比如第一集、最后一集,还有中间的高潮/转折之类。&br&&br&然后是一些不同点。&br&&br&不同的制作公司有不同的分法。在有“总监督”的时候,总监督就是整部作品制作的最高负责人。&br&&br&&b&总监督&/b&一般不参与作品的具体制作,比如,他不会给分镜人员“这里的镜头要再低点”“这里要做特写”这样的指示,这些通常是监督的工作。总监督的主要工作是给不同的人分配任务,协调和把握作品的所有部分,当个把关者。&br&&br&&b&系列监督&/b&是一些公司特有的叫法,实际上就是监督。一部作品就是一个“系列”。通常系列监督上面就是总监督了。&br&&br&&b&副监督&/b&是监督的副手,上面已经提过,监督是要同时兼顾所有的集数的,但一个人的精力毕竟有限,所以有条件的会设副职,分担一些工作。具体怎么分担,就看监督怎样分配了,没有定则。这个副职也可能是为了培育后晋。&/blockquote&&b&&br&监修&/b&&br&&blockquote&一般是原作者之类的,不负责具体制作工作,主要是提出制作意见,不让动画制作组乱来。比如这个角色是不会说这种话的、这个招式其实会这样等等。&br&&br&比如动画《AKB0048》,AKB48的创立者秋元康就是监修。&/blockquote&&br&&b&系列构成&/b&&br&&blockquote&作品故事的实际负责人,工作是确定作品框架,为整部作品的故事定下大纲。同时要负责为每一集的故事把关。&br&&br&系列构成是不直接参与每一集的故事创作的,实际的创作人员是每一集的“脚本”。如果系列构成负责实际集数的创作,那么他会多一个“脚本”的身份。兼任系列构成和脚本的情况很常见,兼任系列构成和全部集数脚本也不是什么奇怪的事情。&/blockquote&&br&&b&脚本&/b&&br&&blockquote&每一集故事的具体负责人,工作是写出每一集的故事来。通常,监督会定下每一集的必要内容,比如,这一集里面,某个角色角色必须要登场,这一集里面,某个角色要退场。系列构成会定下每一集的主要内容,比如,监督要求的那个角色是怎样登场的,另一个角色是怎样领便当的,给出一个大纲。&br&&br&脚本的工作就是根据上面的指示,把具体内容写出来。比如,那个角色是怎什么时间在那里出现的,怎样和其他角色互动,说了什么话等等。&br&&br&一些“不靠谱”的脚本家,会不管系列构成的指示,自顾自地写,什么自己创作一些监督不需要的新角色,甚至把结局给改了。系列构成有的时候因为进度实在赶不上,或者说看脚本家写了那么多不忍心让人家重写,那些脚本就直接用了。比如P.A.WORKS的《Trure Tears》的结局,和冈田磨里最开始的设想是不一样的。&/blockquote&&b&&br&分镜&br&&/b&&br&&blockquote&“分镜”就是负责话分镜头的那一个人。在重要的集数中是监督,其他时间会是监督找来的其他人,分镜人员偶尔会兼顾演出的工作。&br&&br&分镜稿是动画的总设计图。脚本只是交代了每一集故事的内容,是很不具体的。比如,脚本只写了“A和B在河边见面,A说了什么,B说了什么”。而A和B是在河的哪一边,A和B又各自是怎样表情等等,A说话的时候,镜头中是A的正面特写、侧面特写、还是怎样,这些都是没有交代。&br&&br&监督会把自己的创作意图告诉分镜和演出人员。&br&&br&分镜人员的工作,就是根据监督的意思,把文字转化为画面,把画面确立下来。比如,A和B是在画面的右侧,河是在左侧,A先开始说话,镜头一开始是对着A的脚,然后随着说话慢慢向上移,然后到A的正面特写,这时A是一副很悲伤的表情……&br&&br&分镜稿就是体现这些内容,主要是人物、台词和场景的时间空间关系。分镜人员要把整整一集的脚本全部转化为一个个的镜头,时间精确到1/24秒。所以秒表是每个分镜人员的必备工具。分镜完成后还有让监督过目,让监督提出修正意见,之后才能定稿。不同镜头中要用到的音乐、BGM之类都会确定在分镜稿有所体现。&br&&br&画面还不是具体,也缺乏很多细节,丰富这些细节就是后面的工作了。&/blockquote&&br&&b&演出&/b&&br&&blockquote&相当于单独一集的导演,但和导演不同的事,他对故事之类的没有决定权,那些事情一早就由监督确定好的,他的工作,是把监督的设计意图具体实施。&br&&br&演出的工作依据就是之前完成好的分镜稿。每个镜头的具体内容还是没有确定好的。我们继续用之前的例子。&br&&br&分镜稿里面确定了在一个镜头里面,给了A一个正面特写,然后标注了A要有一个悲伤的表情,然后分镜里面画了A正在流泪。&br&&br&演出就要把画面再具体化,比如为了突出A的悲伤,背景要如何,A的表情是怎么个悲伤法,眼泪是要连续流还是要一个个泪珠分别滑落,A的眼睛这时是要半眯的还是要完全睁开,嘴巴是张大还是抿起来等等等等。这些具体化的东西, 要由演出人员根据监督的意图确定下来,传达给下面的作画人员,并且要为作画人员实际交上来的画稿把关。&/blockquote&&br&&b&设计/概念设计/异世界设计/XX设计……&/b&&br&&blockquote&负责一些概念性的设计工作,多见于原创作品,特别是幻想题材的。比如异世界的题材,那个世界是什么样子的,如果世界中间有棵大树,那树是长什么样的。那个世界有什么生物。&br&&br&如果是科幻的,那么那个世界人们住的是怎样的房子,人与人是怎样交流的……&br&&br&根据不同作品往往会有这样那样的设计需求,这些工作的具体内容不可能让监督来负责,监督往往是提出一些方向,专门找人来负责。&/blockquote&&br&&b&人物设定/动画人物设定/副人物设定/人物设定辅助……&/b&&br&&blockquote&前面提到了人物原案,那是人物的概念造型,用途是让人知道,这个人物是长什么样子的,有什么特征。但是,在动画制作的过程中,只知道人物是什么样子是远远不够的。作画人员还要知道,这个人物正面是怎样的,侧面是怎样的,背后是怎样的,高兴是怎样的表情,悲伤是怎样的表情,生气是怎样的表情,还有身上一些计较细致的特征(比如一些标志性的饰品)是怎样的。&br&&br&因为这是完全虚构的人物,要无中生有地把一个人物画出来,就必须知道这些细节。而每一个人对于人物原案的理解和把握肯定是有差别的,不可能让每一个人随心所欲地来画,因此,就需要一个人把这些细节全部确定下来,让其他作画人员作为参照。&br&&br&做这个工作的就是人物设定。&br&&br&有的制作公司会把人物原案作为人物设定,然后另外设立一个“动画人物设定”做上面的工作。&br&&br&人物设定主要是负责主要人物的设计工作的,一些次要的人物,可能设置副职来完成。也有“人物设定辅助”这样的岗位,学徒性质更明显一些,可能就负责更琐碎的工作了,比如帮忙跑腿拿材料、整理素材之类的。&/blockquote&&br&&b&机械设定/生物设定/小物设定/服装设定/布景设定/XX设定……&/b&&br&&blockquote&次要一点的设定工作。比如一些幻想类作品,会有一些外星人、怪物作为敌人,那些家伙的设定就是生物设定的工作。&br&&br&而机械人题材的作品,机械人、战舰、战机、枪械之类的,都是有专门的机械设定人员来设计的。&br&&br&小物设定就是场景中所有物件的设定。包括但不限于角色身上的一些小饰物/小物件、角色家里的摆设等等。&b&小物设定几乎是必定有的岗位。&/b&&br&&br&服装设定一般出现在偶像养成、歌舞类的作品,会专门有人员设计角色穿着的服饰。&br&&br&布景(舞台)设定是喜剧意义上的舞台,表示角色们活动的区域,比如在学校里面战斗,学校里面具体的布局、不同事物的位置都有人来设计。&br&&br&一些作品中会把设定岗位明确化。比如,《VividRed Operation》里面的敌人叫做ALONE,是有设立专门的ALONE设计的。而其他的机械部分也设立专门的机械设定。&/blockquote&&br&&b&总作画监督/作画监督/动作作画监督/机械作画监督……&/b&&br&&blockquote&前景作画部分的最终负责人。分工略有不同。&br&&br&动画是有大量人员参与的,你不可能让每个人画出来的画都是一模一样的,总会有差异。于是就需要有专门的人来统一作画品质,不求一模一样,但求看起来不别扭。&br&&br&作画监督就是每一集的把关者。负责全部作画的修正。因此画得又快又好是作画监督的基本功。作画监督修正完觉得没有问题之后,就可以上交给总作画监督。&br&&br&总作画监督通常由人物设定兼任。因为主要人物都是由他设计的,所以他对人物的把握是最准确的,总作画监督一般只负责主要人物的修正,次要的比如路人配角之类是不管的,这些人物应该由作画监督把关。&br&&br&而动作场景比较多的作品会设立动作作画监督,这些作画监督只负责修正动作。比如《进击的巨人》就设置了两个动作作画监督。他们的工作,就是把不合理/错误的动作修正,比如手脚位置不对、上一个镜头和下一个镜头动作不连贯之类的部分。至于人物的表情不对、眼睛的画法有问题,这些是由作画监督或者总作画监督来负责的。&br&&br&机械作画监督故名思议,就是负责机械部分的,人物不关他们的事。&br&&br&要注意的是,作画监督是要每一张原画都进行检查修正的。现在日本电视动画每集平均作画总数达张,通常是300个镜头左右。一些特殊集数(比如战斗的最高潮)可以冲上10000张。每个镜头有5张左右的原画,所以原画数目是张,也有可能是张,不同作品不同集数可以差很多,主要看监督怎样决定。&br&&br&而这个数字就是作画监督要面对的张数。根据作品不同,每一集有1~3个作画监督。&br&&br&作画监督并不是固定职位。一个好的原画师,可以在一部作品里面当作画监督,然后同时在其他作品中当原画。&/blockquote&&br&&b&LAYOUT/原画/第二原画&/b&&br&&blockquote&这是每一集动画的中坚力量。因为每集动画的实际画面,就是他们画出来的。&br&&br&LAYOUT ,国内貌似叫设计稿,是分镜稿中每一个镜头的具体和细化版本,对于动画而言相当重要。最理想的状态是,专门找人来画。但是,因为要为制作进度妥协,所以都是由原画师担任,画LAYOUT也是最考验原画师实力的地方。&br&&br&还是用上面提到的AB例子。一个镜头里面,演出已经交代了A所处的环境,A的表情,还有镜头的情况。LAYOUT的工作,就是把这个镜头里面人物和空间的关系确立好。A是站在河边的,远处是一条桥,桥上方是夕阳,A背对夕阳,双手作祈祷状放在胸前……&br&&br&总之,在LAYOUT里面,人物和空间的关系要完全正确地体现出来,比例、透视这些不能只画个大概,一定要画对。LAYOUT完成之后,要交给作画监督过目,然后交给演出做最终检查。都通过之后,就可以进行分工——背景部分交给负责美术团队,人物部分交给原画师来画。&br&&br&原画师的任务就是根据LAYOUT,画出所有的关键帧。比如,一个镜头,内容是A的一个转身,镜头是从下而上移动,从A的脚拍到A的正面特写,总共1s,用1拍3,也就是每3秒一张,共8张,而关键帧要画4张,是A的不同角度还最后的特写。中间还有4张过度,后面交给负责中间帧的人员模仿着原画来画。由于动画制作是精确到1/24秒,这个转身分镜给了1s,要求8张画完,关键帧是每1/4s一张,那么每1/4秒A的身体转到什么程度,这个时候A的衣服、身上的光影都是如何的,这些都必须把握好。&br&&br&原画只画转身,至于镜头移动、光影效果这些部分由后期合成团队来完成。&br&&br&原画画完之后要填律表(那是一个小卡片),每长图是多少秒的,镜头是怎样动的,有什么特效,都要写清楚,到时候中间帧和后期合成都是根据这个表来做的。&br&&br&原画画好就交给作画监督检查修正,作画监督修完就交给总作画监督来看。修正的时候会在原来的那张纸上面多加一张纸,然后在不对的地方画几笔,是不会重新画的。&br&&br&原画拿回修正完的稿子,就要清稿,根据作画监督修正后的线条描画一张清晰的原画。这张就是完成的原画。&br&&br&由于日本动画业界的原因,原画人员长期紧张,往往原画修正完之后,原画师没有时间来清稿。所以就找另一批还没够水平画原画的人员来清稿,这些就叫做第二原画。作画监督的修正都是几笔下来,就做个提示的,原画师自然是够功力把握这些修正的,但是第二原画往往经验和能力都还不够,拿到修正完的稿子搞不清要怎么改的情况也是有的。&/blockquote&&br&&b&动画(中间帧)/动画检查&/b&&br&&blockquote&日本那边把原画与原画之间的过渡帧叫做“动画”,国内一般叫中间帧,不要搞错了。&br&&br&这个岗位是日本动画作画部分的最基层,工作辛苦钱又少。目前,日本动画公司为了降低成本,这部分或多或少都会外包。&br&&br&“动画”的工作就是根据作为关键帧的原画,画出中间过渡的部分。画完之后由动画检查对质量进行把关。&/blockquote&&b&&br&美术(背景)/美术设定/美术监督&/b&&br&&blockquote&日本动画中,人物以外的部分就叫美术,实际上就是背景的意思。因为人物是在背景上面活动的,很多时候,动的都是人物,背景是不动的。所以,人物和背景分开来画就能省很多功夫。&br&&br&美术设定类似人物设定,负责对主要背景进行设定。&br&&br&美术监督就是背景团队的负责人,通过和监督、演出的沟通确定背景的细节。可以把美术监督理解为负责背景的作画监督。&/blockquote&&br&&b&色彩设计/色彩设定/色指定&/b&&br&&blockquote&色彩设计和色彩设定是一会事,不同公司叫法略有差异。就是整部作品的颜色设计人员。比如说,角色的头发是黑色的,但当然不会是#000这种纯黑色,而是用#111的黑色,当白天的时候,反光的部分是#888。还有衣服、物品等等。通常会确定一个原色,另外还有亮部和暗部的颜色。色彩设计要在事前通过和监督、人物设定等的沟通,确立一整套的色彩标准。&br&&br&而具体到每一集动画每一个镜头,会有色指定。在看过LAYOUT和原画之后,根据色彩设计的基础方案,指定实际涂到画面上的颜色。比如头发的基本色彩是#111的,但是角色所在的环境是黄昏,所以涂到上面的颜色就不可能是#111了,而是另一个颜色。&/blockquote&&br&&b&仕上(上色)&/b&&br&&blockquote&仕上是日本的说法,中文的意思就是上色。上面说到的原画和中间帧、背景完成之后,就会扫描到电脑里面上色(以前是通过赛璐珞上色)。什么地方用什么颜色都是色指定规定好的,上色人员的工作就根据要求把颜色填上去。&br&&br&因为原画是用笔在纸上画的,所以不一定所有线条都是闭合的,所以为了方便上色,上色人员往往还有修正线条。&/blockquote&&br&&b&CG制作/CGI制作/CG设定/3D建模/CG监督/3D监督……&/b&&br&&blockquote&日本动画业界把通过3D软件建模制作的部分叫做CG/CGI。不同的公司叫法有区别,但是工作内容都差不多。由于技术的进步,3D部分在日本动画中的比重越来越大,背景用得很多,现在人物用得也越来越多。&br&&br&而CG监督就是CG部分的负责人。&br&&br&具体什么地方用CG,什么地方用手绘,由监督根据情况决定。&/blockquote&&br&&b&2D监修&/b&&br&&blockquote&日本动画使用3D的目的是为了降低手绘的压力,所以很多时候3D人物都是力求像手绘的。所以有时会专门设立负责这方面的人员。&br&&/blockquote&&br&&b&摄影(合成、后期)/摄影监督&/b&&br&&blockquote&“摄影”一词是遗留词语。在日本动画使用电脑协助制作之前,通过专用的摄影机把原画、背景一起拍摄到胶片上面的,所以“摄影”其实就是合成的意思。而镜头的移动、特殊效果的制作都是这个时候加进去的。&br&&br&因此,现在说的“摄影”,其实指的就是合成和后期。&br&&br&上色完成的素材会和律表一起交给摄影部门,摄影团队会根据分镜稿和律表制作镜头移动的效果和加入特效。CG部分也是这个时候合并到一起。&br&&br&这里的特效多种多样,有光晕呀、光影效果呀这些细节的特效,也有爆炸、魔法阵发光之类夸张的特效。&br&&br&具体由摄影监督负责把关。&br&&br&由于日本动画追求效率,所以在实际制作过程中要进行2次摄影。第一次是“线摄”(可以是分镜稿、原画或者已经添加上中间帧的“动画”),只是把画面整合起来,不加任何特效,作为录音和音响制作用的素材。&br&&br&而上色完成素材的摄影叫做“本摄”。&/blockquote&&br&&b&特殊效果/视觉效果&/b&&br&&blockquote&专门的特效制作岗位, 某些特效用得多的作品会独立设置。&br&&/blockquote&&b&&br&音响制作/音响效果/音响监督/录音调整/录音助手/Casting……&br&&/b&&br&&blockquote&日本动画中音响即是所有和声音有关的部分。包括音乐、人物配音和音效。&br&&br&音响监督是这方面的负责人,管理音响制作。通常和监督、演出一起工作。&br&&br&为了方便录音工作,一般会制作“台本”,可以理解为分镜稿的文字版,里面以镜头进行划分,有每个镜头内容的文字描述、台词、声音安排、镜头远动安排等内容。&br&&br&音响制作过程中,要根据台本的内容进行人物配音和加入音效(比如脚步声、枪声、爆炸声、回声等)与音乐(包括背景音乐和插曲)。&br&&br&对配音人员的指示具体也是由音响监督负责。&br&&br&另外,Casting就是配音人员选角时的管理人员。因为动画中需要配音的不是只有主角的,还有很多路人角色要选人配音,而这些人员音响监督和监督不可能一个个过问的,就需要专门人员管理。&/blockquote&&b&&br&音乐/音乐制作/音乐出品&/b&&br&&blockquote&“音乐”指背景音乐(BGM)、片头主题曲(OP,opening theme)、片尾主题曲(ED,ending theme)和插曲的制作人员,可以是主要作曲家,或者是相应的制作团队。&br&&br&具体要用到什么音乐都是事前就确定好的。&br&&br&“音乐出品”就是这些音乐的版权持有者,一般是音乐制作公司,或者其负责人。之后的推出CD就是这公司负责。&/blockquote&&br&&b&编辑(剪辑)/离线剪辑&/b&/&b&在线剪辑/Video剪辑&/b&&br&&blockquote&和电影的剪辑是一样的,在线与离线编辑还影视制作中的术语是一样意思,就不具体说了。画面和声音的合成是在这一步完成的。&br&&/blockquote&&br&&b&制作进行/设定制作/制作担当/制作DESK&/b&&br&&blockquote&&b&制作进行&/b&是整个动画制作工程中最辛苦最苦逼的工种。制作进行是制作公司分配给每一集动画的跟进人员,负责每一

我要回帖

更多关于 没找到座位的王思聪 的文章

 

随机推荐