@[toc]
UE4/5的control rig绑定中作者也遇到过很多问题。
今天我就简单写一下该如何进行对人物骨骼的control rig。
骨骼问题很重要,ue的骨骼在关节处是会多处那么一两个骨骼的,这个骨骼是针对旋转的,如果是初学者,那么很容易会因为这些骨骼绑定的时候产生一些莫名其妙的效果。
小白人啥的就不说了,众所周知,假设我们自己制作了一个模型和骨骼:

这么一个火柴人的骨骼,可以看到是专门用虚幻手法的骨骼绑定,只不过是没有手指罢了,其他地方的骨骼倒是一样的
创建Control Rig的方法有两个
通过骨骼网格体(粉紫色的那个),右键控制绑定即可。

右键,动画,下方的control rig,里面就有控制绑定(如果是ue4的话,就在动画里面):

第二种方法创建的,进入之后还要对骨骼进行选择:
打开之后我们可以看到是这个样子,点击我画的图标对骨骼网格体进行导入

然后就是这个样子:
为了较好的讲解我把于左下角的骨骼绑定拿了出来。

向前解析其实就是创建控制器,然后将控制器添加上去,只要将这里做完,那么就可以自己去k动画了,但如果想要对已有的动画序列进行修改,那么需要将向后解析也一起完成。
第一步右键你的根骨骼,在新建处可以看见新控制点和一串英文。
两个都是创建控制器的,只不过上面的新控制点是直接在骨骼底下创建,而下面的那一串英文则是直接将创建的控制点放在最下面***,属于另一个层级,所以我们一般是选择下面的那一串英文。

点击好英文之后是这个样子的:
你可以翻到最下面,它就在那,这就是全新的根控制器*。

然后我们可以进行多个创建:
按住ctrl或者shift进行多选然后创建。同样是按新控制点和那一串英文,直接可以创建一堆,当然,这里我们创建的话只需要选择几个即可,不需要像我一样这么多。

当然他们创建后会保留原来的层级,这些层级是可以拿出来进行调整的,所以没关系。

选择控制器后,右侧就可以看到我标注的地方:
标注1是改变颜色,上面的shape是换形状,大家可以看到很多k动画的视频里面,人物身上都有哪些方方块块的东西,就是这个。
标注2是变换,懂得都懂,这里的话主要是缩放和旋转用的比较多,后面会在制作中讲解。
标注3是也是变换,不同的是这里的变换是和视口有关的,之后也会进行讲解。

创建身体部分,不需要像上面图片那样那么多,一般是根骨骼1个,身体有3个左右,然后脖子一个和头一个。
control rig的标准是左边是蓝色的,右边是红色的,中间随便什么颜色,我一般用黄色。
这里就用绿色了:


可以看到这里都是一个层级下来,
首先我们将控制器拖拽到蓝图的地方,会出现是获取控制器还是设置控制器。
因为是向前解析所以是**获取控制器***,这点很重要

然后选择和控制器相应的骨骼(即是那个骨骼创建的控制器,就把哪个骨骼拿出来),同样的方法,然后是设置骨骼***。
然后都是将获取的控制器的变换连接到骨骼:

以此类推,做完身体和头(肩膀手臂和腿的不是这样做的)
获取控制器之后,如果ue是英文版可能不会出现一个问题,但如果是中文版就会出现这个问题:
它会显示是骨骼,然后控制器是红色的,当然,你只需要点击类型,选择控制点即可。


这样就解决了。
还可能会出现的问题是骨骼拖出来的不显示,只要打开项目的小三角即可:


制作手臂部分前,我们可以看看ue骨骼,基本上都有这样多出来的关节骨骼(作者的火柴人没有手臂,最右边的是hand),这里我们不需要在意,只需要找到这些骨骼的父节点即可。

首先创建控制点,将左右肩膀,手肘和手创建
肩膀是这个,小白人也是一样,可以看下面的骨骼,我将那几个分叉的旋转骨骼标注了,作为他们的父级是Clavicle(不是Upperarm,以前错过,所以提醒各位):

然后是正常的手肘和手即可(是一条链下来的那个骨骼***,不是旋转骨骼)
然后可以看见下面我制作的:
我把肩膀放在了最靠近肩膀的身体那块,而手肘和手是放在root*层下的。
这是为了更好的调整手的控制(当然也可以自己选择,普遍是这样)

之后我们就要设置他们的形状shape:
手肘部分的制作要将其拉到后面,然后右键:这是为了不会导致因为控制器而发生的骨骼偏移。

肩膀以1/4圆,手是方块,手肘则是偏移的圆(或者圆锥):
自己进行缩放到合适大小,情况如下:

左手结束就是右手:

然后就是蓝图部分了:
首先是肩膀,肩膀部分是和之前一样的:

但是手这里就不一样了,我们需要一个***basic IK(基本IK)的函数:
然后获取手和手肘的控制器:
1.basic IK(基本IK),选择的骨骼A是 肩膀下面一级的骨骼Upperarm,B是 手肘骨骼Foream,C是手 Hand
2.手的变换直接连接执行器。
3.手肘则是取平移连接极向量
4.看到我打开的***主轴和次要轴,里面是需要填写1个数值的(不写模型扭曲)

方法有两个,作者也只会一个:
第一种:我们就试,主轴写x,则次要轴就只写y或者z,需要实验的数值只有1和-1,然后是0
所以,得到的方法有:
主:x:1,y:0,z:0 ||主:x:1,y:0,z:0 ||主:x:-1,y:0,z:0 ||主:x:-1,y:0,z:0
次:x:0,y:1,z:0 ||次:x:0,y:-1,z:0||次:x:0,y:1,z:0 ||次:x:0,y:-1,z:0
就这样一次次试出这个值。
第二种作者是看一个老外这样做的:
它进入骨骼中,点击了手肘的骨骼,然后在侧后方看一眼,就知道怎么写了:

如果各位知道可以告诉一下作者。
不要使用镜像,因为如果你的模型并不是完全对称的话(完全对称也可能会出现错误,不要试图偷懒),到时候在向前解析的时候会发生错误
和上面一样的方法,两个膝盖和两个脚就可以了
选择shape

和手臂一样的方法,只不过少了肩膀而已。
1.basic IK(基本IK),选择的骨骼A是 盆骨下面一级的骨骼(大腿)Thigh,B是 膝盖骨骼Calf,C是脚 Foot
2.脚的变换直接连接执行器。
3.膝盖则是取平移连接极向量
4.主轴和次要轴,里面是自己测试填写1个数值的(不写可能模型扭曲)

两只脚都是一样的,会了一个就会另一个。
将他们全部连接起来即可
可以看上面最开始图片的脚那里,我的脚方块是弯曲的,注意这个时候如果想要将其调整正常:
只能在右侧的这里调整:

如果直接在视口里面调整,或者是上面调整,那么一开始可能不会有事情,但是在绑定的时候可能会出现小脚脚翘起来的情况。
那个是分开的是序列,按住s左键就会出现。

我有一个字符串input="maybe(thisis|thatwas)some((nice|ugly)(day|night)|(strange(weather|time)))"Ruby中解析该字符串的最佳方法是什么?我的意思是脚本应该能够像这样构建句子:maybethisissomeuglynightmaybethatwassomenicenightmaybethiswassomestrangetime等等,你明白了......我应该一个字符一个字符地读取字符串并构建一个带有堆栈的状态机来存储括号值以供以后计算,还是有更好的方法?也许为此目的准备了一个开箱即用的库?
我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i
我正在使用ruby1.9解析以下带有MacRoman字符的csv文件#encoding:ISO-8859-1#csv_parse.csvName,main-dialogue"Marceu","Giveittohimóhe,hiswife."我做了以下解析。require'csv'input_string=File.read("../csv_parse.rb").force_encoding("ISO-8859-1").encode("UTF-8")#=>"Name,main-dialogue\r\n\"Marceu\",\"Giveittohim\x97he,hiswife.\"\
简而言之错误:NOTE:Gem::SourceIndex#add_specisdeprecated,useSpecification.add_spec.Itwillberemovedonorafter2011-11-01.Gem::SourceIndex#add_speccalledfrom/opt/local/lib/ruby/site_ruby/1.8/rubygems/source_index.rb:91./opt/local/lib/ruby/gems/1.8/gems/rails-2.3.8/lib/rails/gem_dependency.rb:275:in`==':und
一、引擎主循环UE版本:4.27一、引擎主循环的位置:Launch.cpp:GuardedMain函数二、、GuardedMain函数执行逻辑:1、EnginePreInit:加载大多数模块int32ErrorLevel=EnginePreInit(CmdLine);PreInit模块加载顺序:模块加载过程:(1)注册模块中定义的UObject,同时为每个类构造一个类默认对象(CDO,记录类的默认状态,作为模板用于子类实例创建)(2)调用模块的StartUpModule方法2、FEngineLoop::Init()1、检查Engine的配置文件找出使用了哪一个GameEngine类(UGame
我正在尝试在Rails上安装ruby,到目前为止一切都已安装,但是当我尝试使用rakedb:create创建数据库时,我收到一个奇怪的错误:dyld:lazysymbolbindingfailed:Symbolnotfound:_mysql_get_client_infoReferencedfrom:/Library/Ruby/Gems/1.8/gems/mysql2-0.3.11/lib/mysql2/mysql2.bundleExpectedin:flatnamespacedyld:Symbolnotfound:_mysql_get_client_infoReferencedf
我正在使用ruby2.1.0我有一个json文件。例如:test.json{"item":[{"apple":1},{"banana":2}]}用YAML.load加载这个文件安全吗?YAML.load(File.read('test.json'))我正在尝试加载一个json或yaml格式的文件。 最佳答案 YAML可以加载JSONYAML.load('{"something":"test","other":4}')=>{"something"=>"test","other"=>4}JSON将无法加载YAML。JSON.load("
我想用Nokogiri解析HTML页面。页面的一部分有一个表,它没有使用任何特定的ID。是否可以提取如下内容:Today,3,455,34Today,1,1300,3664Today,10,100000,3444,Yesterday,3454,5656,3Yesterday,3545,1000,10Yesterday,3411,36223,15来自这个HTML:TodayYesterdayQntySizeLengthLengthSizeQnty345534345456563113003664354510001010100000344434113622315
我使用的第一个解析器生成器是Parse::RecDescent,它的指南/教程很棒,但它最有用的功能是它的调试工具,特别是tracing功能(通过将$RD_TRACE设置为1来激活)。我正在寻找可以帮助您调试其规则的解析器生成器。问题是,它必须用python或ruby编写,并且具有详细模式/跟踪模式或非常有用的调试技术。有人知道这样的解析器生成器吗?编辑:当我说调试时,我并不是指调试python或ruby。我指的是调试解析器生成器,查看它在每一步都在做什么,查看它正在读取的每个字符,它试图匹配的规则。希望你明白这一点。赏金编辑:要赢得赏金,请展示一个解析器生成器框架,并说明它的
我有这样的HTML代码:Label1Value1Label2Value2...我的代码不起作用。doc.css("first").eachdo|item|label=item.css("dt")value=item.css("dd")end显示所有首先标记,然后标记标签,我需要“标签:值” 最佳答案 首先,您的HTML应该有和中的元素:Label1Value1Label2Value2...但这不会改变您解析它的方式。你想找到s并遍历它们,然后在每个你可以使用next_element得到;像这样:doc=Nokogiri::HTML(