数字人轻松学Xpresso入门-8

【引言】

好久没有写XPRESSO文章了,是因为天气太热的缘故。

这几天下雨,天气凉爽,心情也好了,接着写一篇有关《控制曲线》的文章。

对于一条曲线,如何更好地控制它,有好多办法。下面列举三种方法,一种是XPRESSO实现的;另一种是用“运动图形-追踪对象“实现的;还有一种是用骨骼喽。

也许你可能问:对曲线的控制方法有什么用?

用处大着呢?比如:IK spline 是用样条控制骨骼吧?涉及到样条的控制吧?

再如上面的机械手的那根红色导线,如何跟随“机械手”来回移动?(有人说,这个用样条动力学和约束不可以吗?回答:很难控制!)

【研究】

第一部分:基本原理:

1、在场景,用线性工具绘制、建立一条直线,如下:

2、打开构造,可以看到这条线是由5个点构成,以及每个点得坐标。

3、样条线从白色到蓝色,白色的第一个点,序号(索引号)为0开始,依次类推。

4、建立一个空白,右键添加XPRESSO标签。

5、再建立一个空白对象,改名字为1,设置如下:(空白在此取其空间位置,显示为球体,不能渲染)

6、把空白1和样条拖进XPRESSO编辑面板。

7、添加点节点,做如下连接。

8、点节点简单讲解:

左侧输入端:

1、对象:连接的对象,线条和几何体等,告诉点节点,要处理那个物体上的点;2、点索引:被处理物体标记的点的位置(从0开始);3、点的位置:输入该点得坐标位置,由该节点控制空间这个点,移到输入的坐标位置上。

右侧输出端:

1、点的数量:该物体的点的总数;2、点的位置:输出的是该索引标号点的坐标;3、点法线:垂直改点的法线。(由于该例子是一条曲线,所以这条曲线的点,没有平面,就没有点法线,不能输出。)

9、点索引没有输入,默认为0。所以,样条线上的第一个点的坐标就和空白1的坐标相同,而且样条的第一个点始终跟随着空白1移动。

10、如下图所示。

11、样条的第一个点(索引值为0的点)始终跟随空白1移动。

这就是实现对曲线控制的基本原理。

12、选择“点节点”,更改点索引为1时(第二个点),你会发现没有反应。点击场景控制点,移动一个位置,你就会发现,控制1的确跑到曲线的第二个点上了。

13、以此类推。

14、为什么要移动一下空白1的坐标呢?因为点索引从2改为3的时候,样条的第四个点(索引3)和样条第三个点(索引2)的空间坐标重合,都等与空白1的坐标。当你移动空白1的时候,只有第四个点(索引3)跟着空白1移动,样条的第3点和第4点就分开了。真费劲,可累死我了

第二部分:各点控制

这个实例中,样条曲线共有五个点(索引值从0-4),那么该如何完整地控制这条曲线呢?

1、复制空白1,更改空白为“控制点”,然后把1-5个空白作为其子集。

2、在场景中,一次调整1-5的坐标位置如下:

3、如何能实现空间的控制点1-5对样条的各个点控制呢?基本原理还是按照上面的,只不过做一个循环控制而已。

在XPRESSO编辑器重,如下所示:

在XPRESSO中迭代器这一组中的节点,此节点可以模拟程序循环。直至达到最大值的数值增加步长为1 。然后该值被减小到其最小值并开始循环一次。一个完整的循环是每个动画帧进行。

4、“层级节点”属性:

A.参考:选择目标对象,这个起点,从何处开始。

B.参考模式:一是相对参考,二是绝对参考,这与相对路径和绝对路径是一样的。绝对参考你必须从根上告诉它如何寻找,而相对参考,你只要告诉它一个起点,然后,只要告诉它,向上一层,或向下一层,即可,非常方便,建议用默认的相对参考.

C.起始位置[ -2147483648..2147483647 ]

这定义了参考模式设置为使用开始位置的起始位置。该设置是相对于拥有该标签的XpressO对象。例如,如果你设置起始位置到第一个在这个层面上,该节点引用在同一层次级别拥有该标记对象的第一个元素。

这对象:拥有该标签的对象。

在层次结构:选择的第一个对象上一级的层次结构。

倒在层次结构:跳转到第一个对象下一级的层次结构。

继任者在这个层面上:选择在同一层级的下一个对象。

前任在这个层面上:跳转到同一层级上一个对象。

首先在这个层面上:选择在同一层级的第一个元素。

最后在这个层面上:参考在同一层级的最后一个元素。

首先在场景:选择第一个场景中的物体。

最后在场景:跳转到场景的最后一个元素

D.启动距离[ 1..2147483647 ]

对于某些开始位置的模式,你可能想跳几个步骤在层次结构中一气呵成。在这种情况下,使用起始距离作为乘数的起始位置。例如,要引用一个对象,它是三个位置拥有该标签的XpressO ,设置起始位置到继任者在这个层面上,并设置起始距离为3的对象之后。

E.开始路径:

Uup one hierarchical level  U代表向上一层,往上寻找

Ddown one hierarchical level D 代表向下一层,往下寻找

Pprevious object on current hierarchical level P 在当前层的前一个物体对象

Nnext object on current hierarchical level N是当前层的下一个物体对象

Ffirst object on hierarchical level F 是的第一个对象

Llas object on hierarchical level L是最后一个对象

F.迭代路径:

层次不断迭代重复这条道路。例如N将导致该节点到输出都在同一水平上一个接一个的所有对象。

层次迭代器继续输出对象,直到出现以下情况:

有在由开始的路径和(重复)迭代路径定义的等级地位没有更多的对象。

由最大迭代输入端口定义的迭代次数已经达到了。

层级节点然后是指由参考路径定义并启动路径再次的对象。在下一次节点被调用时,迭代路径将被重复一遍。

看完以上,你是否要昏过去了。你把它想象它是一个容器,你的指针这项那个层,并告诉它在这个层中,是向前还是向后,那么它会不对地循环一个个在端口输出对象的。

5、层级节点的输入输出参数:还是很简单的。

左侧输入:最大迭代:告诉循环次数,;开启:启用。

右侧输出:对象:输出对象端口;数量:包含对象的数量。

6、采用默认设置,把控制点拖入参考中。开始路径为D,意思是在开始循环的位置是控制点“下”的各个物体;N循环方向是下一个,那就是1,2,3,4,5这个循序进行。

7、现在层级节点已经完成。但是你不能直接从层级节点往外去对象,必须用一个“对象索引”节点来完成。

为什么对象索引ObjectIndex节点存在的原因?是因为当你使用迭代器,你不能直接查出的对象,即在该环路的一部分迭代器当前位置。在迭代循环中挑出一个特定的元素。

右键--新建节点--XPRESSO-常规--对象索引节点。

8、做如下链接。

这个必须解释,否则你糊涂。层级对象依次输出五个空白控制点(1-5)的对象ID,把这个空白点ID传给对象索引节点。对象索引节点接到这个对象的名称,通过实例输出端口传给了空白1对象。(虽然1这个节点是空白1,但是,由于输入端对象的更改,那么他也可能变成2或345等对象),对象索引同时把索引号传给点节点的输入端点索引。

这样就完成了循环的“绑定”。如:层级输出“空白2”对象,对象索引从实例对端口输出的对象“空白2”,索引输出是1,1那个节点,此时变成了空白2,它输出给点接点是空白2位置的坐标,电接点的索引值是1,就是样条线的第二个点,从而实现了空白2和样条线第二个点的“绑定”。

真费劲,不知道你懂否?

9、看看场景,样条线的各个点与空白1-5个点一一对应。

10、移动空白点,样条各个点也跟随移动,实现了对样条的控制。

11、如果你感觉样条线太硬,点击更改类型为“阿基玛”。

12、添加多边形为截面,添加扫描对象,点击样条做如下优化。

13、场景中出现了一个多边形物体。这个物体的形状是由样条曲线控制的,这个样条曲线是由这五个控制点控制的。

14、通过调整五个控制点的位置,从而控制这个多边形。

如果实现这个控制,你必须用骨骼来实现吗?我开这个方法就不错!

【后记】

1、伴随着窗外的雨声,用了1个小时,一气呵成,写完了这篇。这一篇内容太难理解了,所以不再写往下写了。

下一篇研究用“扫描对象”实现对曲线的控制,再举一个有趣的例子吧,这篇太枯燥!

2、如果你仍然不明白原理,那你就记住下面的图。以后,我讲解用《骨骼控制曲线》的时候,还要用到它。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,393评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,790评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,391评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,703评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,613评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,003评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,507评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,158评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,300评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,256评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,274评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,984评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,569评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,662评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,899评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,268评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,840评论 2 339

推荐阅读更多精彩内容

  • 【引言】 本篇有两个目的: 一是通过个实例来学习一下,如何用XPRESSO检测模型物体相互"影响"。 二是交流一下...
    DIGITALMAN阅读 6,526评论 5 44
  • 【引言】 越来越难了,要又心理准备啊。 这篇研究一下XPRESSO和材质方面的应用。通过四个案例学习几个重要的“节...
    DIGITALMAN阅读 4,395评论 2 34
  • 一、快速术语检索 比特币地址:(例如:1DSrfJdB2AnWaFNgSbv3MZC2m74996JafV)由一串...
    不如假如阅读 15,864评论 4 88
  • 一直以来我都在等待,相信最后的就是最好的,相信生活总会给我馈赠,相信就这样等着,好运,它会来的。 于是...
    喜欢可以吗阅读 506评论 0 6
  • 走在柔波里 抚摸松花江的水花 我和水做了约定 如果它流过你的村庄 不管多远多长 请悄悄带走我的思念 告诉你我的承诺...
    今天也要好好学习yoursel阅读 187评论 1 3