素材叠加指引

动效素材叠加是指多个动效素材可以同时生效。
素材叠加注意事项:
1. 客户需要自行管理素材之间是否适合叠加。举两个例子:
例1:特效 A 是变成贵妃脸,特效 B 是变成童话脸,这两个特效叠加后可能会导致画面非常别扭。
例2:特效 A 是个兔耳朵,特效 B 是猪耳朵,两个叠加后,就有两种耳朵。
例1和例2这两种情况不适合叠加。如果特效 A 是兔耳朵,特效 B 是送一个飞吻,这两个特效不会冲突,就适合叠加。
2. 只支持简单素材之间的叠加。简单素材是指只有单动效能力、或者单美妆效果、或者单抠背等,复杂素材是指包含了多种效果。简单素材和复杂素材没有明确的界定,建议客户充分测试后,自行管理哪些素材之间可以叠加,哪些不能叠加。
3. 叠加时,有动作触发的特效(例如伸出手触发某个特效、微笑触发某个特效等)属于复杂特效,需要放在前面,简单特效放在后面叠加在它之上。
4. 使用示例:主播使用了特效 A,然后观众送礼物特效 B,B 要叠加在 A 之上,一段时间后 B 消失,恢复成特效 A。那么设置步骤如下:
4.1 设置特效 A,mergeWithCurrentMotion 设置为 false。
4.2 设置特效 B,mergeWithCurrentMotion 设置为 true。
4.3 一小段时间后,再设置 A,mergeWithCurrentMotion 设置为 false。

如何配置同时生效?

V3.5.0及以上
V3.0.1及以上
1. 如果您使用setEffect方法来更新美颜属性,要实现素材叠加功能,可以在extrainfo中添加 mergeWithCurrentMotion 字段设置为"true"
2. 如果使用的是updateProperty方法,那么可参见 V3.0.1中列举的方法。

Android:

如果想要某个动效/美妆/分割素材叠加在当前素材上,则将该素材 XmagicProperty 对象的 mergeWithCurrentMotion 设置为 true。XMagicProperty 对象的其他属性设置见 美颜参数设置
XmagicProperty xmagicProperty = new XmagicProperty(XmagicProperty.Category.MOTION,"video_keaituya",mResPath+"xmagic/MotionRes/2dMotionRes/video_keaituya",null,null); xmagicProperty.mergeWithCurrentMotion = true; mXMagicApi.updateProperty(xmagicProperty);

iOS:

如果想要某个动效/美妆/分割素材叠加在当前素材上,则设置该素材时,在 withExtraInfo 的字典中设置 mergeWithCurrentMotion 为 true,示例如下:
NSString *key = _xmagicUIProperty.property.Id;
NSString *value = [[NSBundle mainBundle] pathForResource:@"makeupMotionRes" ofType:@"bundle"];
NSDictionary* extraInfo = @{@"mergeWithCurrentMotion":@(true)};
[self.beautyKitRef configPropertyWithType:@"motion" withName:key withData:[NSString stringWithFormat:@"%@",value] withExtraInfo:extraInfo];