MotionRes/avatarRes
目录中,与其他的动效素材一样,您需要把它 copy 到工程的 assets 目录:
捏脸流程 | 拍照捏脸流程 |
| |
public void loadAvatar(XmagicProperty<?> property, UpdatePropertyListener updatePropertyListener)
public static Map<String,List<AvatarData>> getAvatarConfig(String avatarResPath, String savedAvatarConfigs)
/data/data/com.tencent.pitumotiondemo.effects/files/xmagic/MotionRes/avatarRes/animoji_0624
。public void updateAvatar(List<AvatarData> avatarDataList, UpdateAvatarConfigListener upDataAvatarConfigListener)
public static String exportAvatar(List<AvatarData> avatarDataList)
public void createAvatarByPhoto(String photoPath, List<String> avatarResPaths, boolean isMale,final FaceAttributeListener faceAttributeListener)
void onError(int errCode, String msg)
。如果成功,会回调void onFinish(String matchedResPath, String srcData)
,第一个参数是匹配到的 Avatar 素材路径,第二个参数是匹配结果,与上文中的exportAvatar 接口的返回值是一样的含义。FaceAttributeHelper.java
,具体如下:public static final int ERROR_NO_AUTH = 1;//没有权限public static final int ERROR_RES_INVALID = 5;//传入的Avatar素材路径无效public static final int ERROR_PHOTO_INVALID = 10;//读取照片失败public static final int ERROR_NETWORK_REQUEST_FAILED = 20;//网络请求失败public static final int ERROR_DATA_PARSE_FAILED = 30;//网络返回数据解析失败public static final int ERROR_ANALYZE_FAILED = 40;//人脸分析失败public static final int ERROR_AVATAR_SOURCE_DATA_EMPTY = 50;//加载Avatar源数据失败
public static Pair<Integer, List<AvatarData>> addAvatarResource(String resourceRootPath, String category, String zipFilePath)
Pair<Integer, List<AvatarData>>
,pair.first是错误码,pair.second是新添加的数据集合。public interface AvatarActionErrorCode {int OK = 0;int ADD_AVATAR_RES_INVALID_PARAMS = 1000;int ADD_AVATAR_RES_ROOT_RESOURCE_NOT_EXIST = 1001;int ADD_AVATAR_RES_ZIP_FILE_NOT_EXIST = 1002;int ADD_AVATAR_RES_UNZIP_FILE_FAILED = 1003;int ADD_AVATAR_RES_COPY_FILE_FAILED = 1004;}
public class AvatarData {/*** 选择型数据。例如眼镜,有很多种眼镜,使用时只能从中选择一个。*/public static final int TYPE_SELECTOR = 0;/*** 滑竿调节型数据。例如调整脸颊宽度。*/public static final int TYPE_SLIDER = 1;//例如 脸型、眼睛微调 等。AvatarCategory.java中定义了标准的category,如果不满足需求,也可以自定义category字符串,跟已有的不冲突即可//不能为空。public String category;//标识每一个具体item 或者 每一组微调项。//例如每个眼镜都有自己的id。每一组微调项也有自己的id。//不能为空。public String id;//TYPE_SELECTOR 或者 TYPE_SLIDERpublic int type;//如果是selector类型,则它表示当前有无被选中public boolean selected = false;//每一个图标 或 每一组微调项 背后都对应着具体的配置详情,即下面这三要素。public String entityName;public String action;public JsonObject value;}
换发型 | 调整脸颊 |
| |
public static List<AvatarAnimation> getAvatarAnimations(String avatarResPath)
/data/data/com.tencent.pitumotiondemo.effects/files/xmagic/MotionRes/avatarRes/animoji_0624
public static Pair<Integer, List<AvatarAnimation>> addAvatarAnimation(String avatarResPath, String zipFilePath)
Pair<Integer, List<
AvatarAnimation>>
,pair.first是错误码,pair.second是新添加的数据集合。public interface AvatarActionErrorCode {int OK = 0;int ADD_AVATAR_RES_INVALID_PARAMS = 1000;int ADD_AVATAR_RES_ROOT_RESOURCE_NOT_EXIST = 1001;int ADD_AVATAR_RES_ZIP_FILE_NOT_EXIST = 1002;int ADD_AVATAR_RES_UNZIP_FILE_FAILED = 1003;int ADD_AVATAR_RES_COPY_FILE_FAILED = 1004;int ADD_AVATAR_RES_PARSE_JSON_FILE_FAILED = 1005;}
public void playAvatarAnimation(AnimationPlayConfig animationConfig)
public class AnimationPlayConfig {//action 描述,播放还是停止 动画public static final String ACTION_PLAY = "play";public static final String ACTION_PAUSE = "pause";public static final String ACTION_RESUME = "resume";public static final String ACTION_STOP = "stop";public String entityName;/** * 动画文件夹的路径,可以是相对于素材根目录的相对路径(例如 custom_configs/animations/Waving")/** 也可以是在手机上的绝对路径(例如 /data/data/xxx/xxx/Waving) */public String animPath;//值使用 ACTION_PLAY、ACTION_PAUSE、ACTION_RESUME、ACTION_STOPpublic String action;/** * 动画的名称 */public String animName;/** * 循环次数,-1表示无限 */public int loopCount = -1;/** * 动画的起始播放位置,单位是微秒 */public long startPositionUs = 0;}
AvatarAction.java
中,每种 action 的含义及 value 要求如下:action | 含义 | value要求 |
changeColor | 修改当前材质的颜色,包括基础色、自发光色等颜色属性 | JsonObject 类型,必填。由素材制作工具自动生成。 |
changeTexture | 修改当前材质的贴图,包括颜色纹理贴图、金属粗糙度纹理贴图、AO 纹理贴图、法线纹理贴图、自发光纹理贴图等等 | JsonObject 类型。必填。由素材制作工具自动生成。 |
shapeValue | 修改blendShape形变值,一般用于面部细节形变微调 | JsonObject 类型。里面的 key 是形变名称,value 是float 类型的值。必填。由素材制作工具自动生成。 |
replace | 替换子模型,例如替换眼镜、发型、衣服等 | JsonObject 类型。里面描述了新的子模型的3D变换信息、模型路径、材质路径。如果要隐藏当前位置的子模型,则使用 null。由素材制作工具自动生成。 |
basicTransform | 调整位置、旋转、缩放。一般用于调整摄像机的远近、角度,从而实现模型全身和半身视角的切换 | JsonObject 类型。必填。由素材制作工具自动生成。 |
素材/custom_configs/resources
):
本页内容是否解决了您的问题?