layout动画(三维动画中角色动画LAYOUT之后,关键帧调完这个过程叫什么)

2025-07-19 19:45:01 :0

layout动画(三维动画中角色动画LAYOUT之后,关键帧调完这个过程叫什么)

大家好,如果您还对layout动画不太了解,没有关系,今天就由本站为大家分享layout动画的知识,包括三维动画中角色动画LAYOUT之后,关键帧调完这个过程叫什么的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

本文目录

三维动画中角色动画LAYOUT之后,关键帧调完这个过程叫什么

layout 之后就正式开始做动画了,rough--blocking--breakdown--polish 由粗到细的制作动画直到完成。

如何对使用了autolayout的UIView添加动画

  当我们对一个UIView使用了autolayout自动布局之后,也就意味着我们放弃了传统的通过设置view的frame等方式手动的修改、确定这个view的位置、尺寸属性。甚至从某种程度上讲,我们应该忘记view的frame属性:它的确定不再取决于我(手动的直接修改),而是通过我们在 storyboard或者code中提供的约束条件(constraints),通过一个自动布局引擎(苹果为autolayout采用的是 Cassowary布局引擎,参考文档: 点击打开链接 ),计算出这个view的frame。因此我们可以认为使用了autolayout的view的frame属性是一个只读的属性。在代码里认为的改动这个view的frame并不能对这个view的frame产生真正的效果(事实也确实如此)。

  现在问题就来了,在以前我们经常通过对一个view的frame的修改产生view移动的动画效果,那么在使用了autolayout的view世界中我 们该如何实现相同的效果呢?答案是,我们“将计就计”,通过改变这个view上的某个约束constraint然后在uiview的animation block中触发layout来实现。

  一、预期效果

  下面我们以一个简单的例子来进行详细的说明:

  如上图所示,整个界面都使用了autolayout,现在我们想实现这样一个效果:当我们点击显示生日的按钮的时候,整个view向上滑动,同时向上推出一 个日期选取器(date picker),类似于点击textfield,弹出键盘后整个界面为了避免被遮住而向上移动的效果。选取完成日期后点击生日日期按钮或者完成按钮整个 view向下缩回,同时date picker向下滑出可视范围。

  二、实现细节

  首先来看一眼storyboard中view的层级结构:如下图所示,从图中我们可以看到,整个view的布局相当简单,就两级:根view和我们的 date picker view,其中date picker view包含了一个完成按钮和系统的date picker。这样的话,要实现整个view和date picker view同时上移的效果,我们只需要对根view和date picker view同时做动画即可。

  考虑如何实现根view的动画效果,这里我们可以巧妙的通过修改根view的bounds属性来实现根view的上移效果。注意这里我 们需要明白view的bounds属性和frame属性的区别,前者是相对于当前view的本地坐标系而言的,而后者则是相对于当前view的父view的坐标系而言的。

  简单的讲,frame决定了一个view相对于父view的position和size信息。而bounds则决定了当前view展示的内容相对于本地坐 标系的位置。这里我们将view自身的可视内容和subviews可以看做一页纸上的内容信息,而view本身可以看成是一枚放于纸上的放大镜,放大镜的 大小不一定是和纸(content size)相同大小的。bounds属性的作用就是确定这枚放大镜相对于纸的位置:一个bounds =(0, 200, 300, 300)就意味着我们要将这枚放大镜向纸的下方移动200个points,但放大镜相对于父view的位置仍是保持不变的,这样给我们的效果就是这个 view(显示的内容)向上移动了200个points.

  改动bounds的origin属性并不会改动这个view的frame,通过这种展示内容的移动给我们产生一种view向上移动了的幻觉。如上图中,“哪个位置...”为成为我们放大镜中看到的第一行。

  根view上移动画的效果解决了,下面我们再来看日期选取器date picker,在storyboard中对其增加的约束如下:定高207、trailing/leading/top相对于super view (根view)的位置。

  确定date picker view y轴方向上下移动的约束显然是top约束,点开top约束,可以看到该约束的详细内容:

  一个约束可以描述为:

  firstItem.attributeA = secondItem.attributeB * multipler + constant

  结合上图我们可以得出date picker view的top约束为:

  datePickerView.Top = topLayoutGuide.bottom * 1 + 400

  我们可以通过修改这里的constant值来修改这个top约束以达到预期效果,事实上通过修改而不是删除旧的constraint再添加新的constraint也正是苹果所推荐的,在NSLayoutConstraint.h头文件中有如下说明:

  这样,date picker view的上下移动就可以通过获取并修改其top约束来实现。需要注意的是在代码中获取date picker view的top约束实际上是要在其父view的constraints数组中查找,这是因为每个view的constraints数组中保存的实际上是 layout 子view所需的约束的集合。

  我们还要定义个辅助BOOL变量,已判断date picker view是否以弹出:

  @property (nonatomic, assign) BOOL hasShowPickerView;

  接下来定义一个辅助函数,用于查找date picker view的top约束并修改其constant属性为给定的值:

  - (void)replacePickerContainerViewTopConstraintWithConstant:(CGFloat)constant
{
    for (NSLayoutConstraint *constraint in self.pickerContainerView.superview.constraints) {
        if (constraint.firstItem == self.pickerContainerView && constraint.firstAttribute == NSLayoutAttributeTop) {
            constraint.constant = constant;
        }
    }
}

  代码里我们在picker container view (即文中的date picker view)的superview的constraints属性中查找,如果发现firstItem和firstAttribute属性分别是date picker view和top,则该constraint即为目标约束,然后修改其constant属性。

  在view首次被加载的时候我们想确保date picker view 处于整个view的最底部即隐藏的状态,因而我们在viewcontroller的viewDidLoad方法中调用辅助方法修改一下date picker view的top约束:

  ;

  在首次点击birthday button的时候动画修改根view的bounds和date picker view的top constraint,注意上移gap的计算。再次点击birthday button的时候将根view的bounds恢复到正常值,date picker view的top constraint也恢复到viewDidLoad中设置的值:

  - (IBAction)didTapOnBirthdayButton:(id)sender
{
  self.hasShowPickerView = !self.hasShowPickerView;
  if (self.hasShowPickerView) {
    CGRect birthdayButtonFrame = self.birthdayButton.frame;
    birthdayButtonFrame = ;
    CGFloat birthdayButtonYOffset = birthdayButtonFrame.origin.y + birthdayButtonFrame.size.height;
    CGFloat gap = birthdayButtonYOffset - (self.view.frame.size.height - self.pickerContainerView.frame.size.height);
    CGRect bounds = self.view.bounds;
    if (gap 》 0) {
      bounds.origin.y = gap;
    } else {
      gap = 0;
    }
    ;
    [UIView animateWithDuration:0.25 animations:^{
      self.view.bounds = bounds;
      ;
    }];
  } else {
    ;
    CGRect bounds = self.view.bounds;
    bounds.origin.y = 0;
    [UIView animateWithDuration:0.25 animations:^{
      self.view.bounds = bounds;
      ;
    }];
  }
}

  上述代码中的去掉也是没问题的。可能比较费解的是根view.bounds.origin.y的上移gap的计算以及top constraint的constant值的计算,关键实在真正理解view的frame和bounds的意义。

  至此程序达到了预期的效果。

Maya layout动画师 主要负责什么

主要是负责设计布局
通俗的说就是在动画师K帧前
把镜头、人物的主要动作等等构架好
一般大公司才有
小公司动画师啥都做了

layout线框显示

属性面板,显示,线框或线框+绘制所有的边。
扩展资料:
Layout,动画专用名称,根据导演(或者其他人)所画的分镜表画出来的"设计图",原画要根据Layout来画。Layout集成了分镜头的六要素:空间关系、镜头运动、镜头时间、分解动作、台词、以及文字说明。但是每一点都要做的更深入,更具体。

layout是什么

Layout
Layout是属于动画专用名词,也是比较少见的工作,在工作性质上接近中文的“构图”,只有在一些剧场版作品可能采用,例如设计多层次背景,令每层背景移动速度不同,就能表现出逼真写实的远近距离感。   而画Layout的人必须在脑海里意识到摄影机的存在,从摄影机的观点去看场景里的一草一木,然后将这些画面详细地画下来。   这个工作,主要是弥补不大会画图的导演所画的分镜表,将杂乱简略的画面仔细的呈现出来,作为日后原画、动画、背景、色指定等等的依据。

如何区分三维动画制作流程中的layout,storyboard和previz

layout指的是场景的设置,就是把storyboard中该镜头的每个角色及场景还有镜头位置在三维软件中摆放出来,以便下一步的制作动画。
storyboard则是制作前期绘制的每个分镜头的画面序列,是制作动画的重要参考。
previz是采用简单模型的方式按照storyboard预演出简化版的动画。
storyboard和previz其实在真人电影中也会用到。

三维动画中角色动画LAYOUT之后,关键帧调完这个过程叫什么的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于三维动画中角色动画LAYOUT之后,关键帧调完这个过程叫什么、三维动画中角色动画LAYOUT之后,关键帧调完这个过程叫什么的信息别忘了在本站进行查找哦。

layout动画(三维动画中角色动画LAYOUT之后,关键帧调完这个过程叫什么)

本文编辑:admin

更多文章:


oracle vm virtualbox导入虚拟电脑(Oracle VM VirtualBox导入虚拟电脑D:\XubunTOS.ova失败)

oracle vm virtualbox导入虚拟电脑(Oracle VM VirtualBox导入虚拟电脑D:\XubunTOS.ova失败)

大家好,oracle vm virtualbox导入虚拟电脑相信很多的网友都不是很明白,包括Oracle VM VirtualBox导入虚拟电脑D:\XubunTOS.ova失败也是一样,不过没有关系,接下来就来为大家分享关于oracle

2025年7月11日 13:45

html注册界面表单验证代码(html,js表单的验证,下面代码是想实现当输入6个字符以上用户名通过,少于时报错,但执行不了,求改错)

html注册界面表单验证代码(html,js表单的验证,下面代码是想实现当输入6个字符以上用户名通过,少于时报错,但执行不了,求改错)

大家好,今天小编来为大家解答以下的问题,关于html注册界面表单验证代码,html,js表单的验证,下面代码是想实现当输入6个字符以上用户名通过,少于时报错,但执行不了,求改错这个很多人还不知道,现在让我们一起来看看吧!本文目录html,j

2025年6月23日 16:15

什么是小学生编程?有用吗?(小学学编程有用吗)

什么是小学生编程?有用吗?(小学学编程有用吗)

“什么是小学生编程?有用吗?”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看什么是小学生编程?有用吗?(小学学编程有用吗)!本文目录小学学编程有用吗小学生学编程到底有没有用编程课是计算机课程么儿童编程课对孩子有什么作用小学生

2026年5月27日 21:00

kali linux基础(变身滚动发行版,Kali Linux 2.0特性知多少)

kali linux基础(变身滚动发行版,Kali Linux 2.0特性知多少)

各位老铁们,大家好,今天由我来为大家分享kali linux基础,以及变身滚动发行版,Kali Linux 2.0特性知多少的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,

2026年9月9日 23:45

access如何用查询值给一维数组赋值(如何用vb读取access表中数据,并赋值给另一变量然后进行计算判断 急!)

access如何用查询值给一维数组赋值(如何用vb读取access表中数据,并赋值给另一变量然后进行计算判断 急!)

大家好,关于access如何用查询值给一维数组赋值很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于如何用vb读取access表中数据,并赋值给另一变量然后进行计算判断 急!的知识点,相信应该可以解决大家的一些困惑和问题,如果

2025年9月7日 11:00

uniapp onload(uni-app踩坑笔记)

uniapp onload(uni-app踩坑笔记)

各位老铁们好,相信很多人对uniapp onload都不是特别的了解,因此呢,今天就来为大家分享下关于uniapp onload以及uni-app踩坑笔记的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目录uni-a

2026年7月12日 08:00

subway是什么意思(subway中文是什么意思)

subway是什么意思(subway中文是什么意思)

本篇文章给大家谈谈subway是什么意思,以及subway中文是什么意思对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。本文目录subway中文是什么意思subway的翻译subway什么意思subway怎么读subway是什么意思中

2026年4月3日 16:45

tp5666路由器(Tplink6500无线路由器怎么设置上网最流畅)

tp5666路由器(Tplink6500无线路由器怎么设置上网最流畅)

大家好,如果您还对tp5666路由器不太了解,没有关系,今天就由本站为大家分享tp5666路由器的知识,包括Tplink6500无线路由器怎么设置上网最流畅的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目录Tplin

2025年11月18日 15:45

normal tanks第7关密码(请问normal tanks第五关以后的密码是多少诚挚谢谢!!)

normal tanks第7关密码(请问normal tanks第五关以后的密码是多少诚挚谢谢!!)

本篇文章给大家谈谈normal tanks第7关密码,以及请问normal tanks第五关以后的密码是多少诚挚谢谢!!对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,

2026年9月9日 02:00

编写webservice通讯接口(webservice接口怎么写)

编写webservice通讯接口(webservice接口怎么写)

大家好,关于编写webservice通讯接口很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于webservice接口怎么写的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位

2025年6月7日 15:45

c语言实现数据库功能(c语言操作数据库)

c语言实现数据库功能(c语言操作数据库)

大家好,关于c语言实现数据库功能很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于c语言操作数据库的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!本文目录c语言操

2026年6月3日 23:15

尿常规中conduct是啥意思(尿常规报告单.请大家帮忙解读分析一下.)

尿常规中conduct是啥意思(尿常规报告单.请大家帮忙解读分析一下.)

本篇文章给大家谈谈尿常规中conduct是啥意思,以及尿常规报告单.请大家帮忙解读分析一下.对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。本文目录尿常规报告单.请大家帮忙解读分析一下.尿液检查:隐血(bld)10(十/一),酮体定性

2026年3月31日 19:30

vscode创建web项目(Vscode新建项目方法分享)

vscode创建web项目(Vscode新建项目方法分享)

各位老铁们好,相信很多人对vscode创建web项目都不是特别的了解,因此呢,今天就来为大家分享下关于vscode创建web项目以及Vscode新建项目方法分享的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目录Vs

2025年11月16日 10:30

springer免费电子版(电子书数据库有哪些)

springer免费电子版(电子书数据库有哪些)

这篇文章给大家聊聊关于springer免费电子版,以及电子书数据库有哪些对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录电子书数据库有哪些Springer电子期刊有哪几种文件格式APDF格式BJP电子书数据库有哪些1、Spri

2025年8月2日 04:45

简述php脚本程序工作流程(PHP脚本程序主要是由哪几部分组成)

简述php脚本程序工作流程(PHP脚本程序主要是由哪几部分组成)

各位老铁们,大家好,今天由我来为大家分享简述php脚本程序工作流程,以及PHP脚本程序主要是由哪几部分组成的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!本

2026年3月4日 15:15

java字符串截取后两位(JAVA截取所有指定字符后面的字符串)

java字符串截取后两位(JAVA截取所有指定字符后面的字符串)

大家好,关于java字符串截取后两位很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于JAVA截取所有指定字符后面的字符串的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有

2025年12月5日 23:15

告别php源码(apache 解析一个错误的php文件时,会直接显示php的源码,如何让他不显示源码)

告别php源码(apache 解析一个错误的php文件时,会直接显示php的源码,如何让他不显示源码)

本篇文章给大家谈谈告别php源码,以及apache 解析一个错误的php文件时,会直接显示php的源码,如何让他不显示源码对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题

2026年1月28日 18:00

当前时间的毫秒数(vb中返回当前系统毫秒数的函数是)

当前时间的毫秒数(vb中返回当前系统毫秒数的函数是)

“当前时间的毫秒数”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看当前时间的毫秒数(vb中返回当前系统毫秒数的函数是)!本文目录vb中返回当前系统毫秒数的函数是C#中有没有获取当前时间毫秒时的函数datetype是如何获取年

2026年7月30日 03:00

game是什么意思英语?机械键盘game是什么意思

game是什么意思英语?机械键盘game是什么意思

这篇文章给大家聊聊关于game,以及game是什么意思英语对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录game是什么意思英语机械键盘game是什么意思servicegame@163.com邮箱我安装了并登录了steam,为

2025年8月14日 00:45

shorts什么意思(shorts怎么读)

shorts什么意思(shorts怎么读)

“shorts什么意思”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看shorts什么意思(shorts怎么读)!本文目录shorts怎么读shorts是什么意思英语shorts什么意思Shorts的中文意思shorts怎么

2026年3月27日 19:00

近期文章

本站热文

electronics软件(labcenter electronics是什么软件)
2025-05-22 23:45:02 浏览:134
博客是微博吗(博客是微博吗)
2025-05-22 22:45:01 浏览:111
diversity and distribution(悬赏英语短文)
2025-05-23 16:15:02 浏览:107
ios软件开发前景(iOS就业前景怎么样)
2025-05-22 23:00:01 浏览:102
next month(有The next month这个单词吗,和 next month有什么区别)
2025-05-23 02:30:01 浏览:102
patron(patron是什么意思)
2025-05-23 10:30:02 浏览:95
标签列表

热门搜索