ARCore的AugmentedFace面具为什么会闪烁?
创始人
2024-09-12 09:30:14
0

这个问题通常是由于光线条件不理想或面具没有正确地与人脸对齐所引起的。下面的示例代码展示了如何使用FaceFilter库创建一个基本的面具,并使用光线过滤器解决光照问题。这应该可以解决面具闪烁的问题。

import com.google.ar.core.AugmentedFace;
import com.google.ar.core.Pose;
import com.google.ar.core.TrackingState;
import com.google.ar.sceneform.rendering.ModelRenderable;
import com.google.ar.sceneform.rendering.Renderable;
import com.google.ar.sceneform.rendering.Texture;
import com.google.ar.sceneform.rendering.ViewRenderable;
import com.google.ar.sceneform.ux.AugmentedFaceNode;
import com.google.ar.sceneform.ux.FaceFilter;
import com.google.ar.sceneform.ux.AugmentedFaceNode;

public class MyArActivity extends AppCompatActivity {
  private Texture faceMeshTexture;
  private ModelRenderable faceMeshRenderable;
  private ViewRenderable faceRegionsRenderable;
  private FaceFilter faceFilter;

  // Other ARCore initialization code here

  private void initializeFaceFilter() {
     // Set up the texture and renderable for the mask
     faceMeshTexture = Texture.builder()
        .setSource(context, R.drawable.my_face_texture)
        .build();

     ModelRenderable.builder()
         .setSource(context, R.raw.my_face_mesh)
         .build()
         .thenAccept(renderable -> faceMeshRenderable = renderable);

     ViewRenderable.builder()
         .setView(context, R.layout.my_face_regions_layout)
         .build()
         .thenAccept(renderable -> faceRegionsRenderable = renderable);

     // Create the face filter with the mask and region renderables
     faceFilter = new FaceFilter(faceMeshRenderable, faceMeshTexture, faceRegionsRenderable);
     faceFilter.setOnFaceChangeListener(this::onFaceChanged);
     arFragment.getArSceneView().getScene().addOnUpdateListener(this::onUpdateFrame);
  }

  private void onFaceChanged(AugmentedFace face, AugmentedFaceNode faceNode) {
     // Rotate the mask for proper alignment with the user's face
     Pose pose = face.getCenterPose().extractRotation();
     faceNode.setLocalRotation(pose.getInverse().compose(Pose.IDENTITY).extractRotation());

     // Set the light estimation for the face regions renderable
     faceRegionsRenderable.getMaterial().setFloat3("lightEstimation", face.getLightEstimate().getColorCorrection());
  }

  private void onUpdateFrame(FrameTime frameTime) {
     // Filter the face if it is being tracked

相关内容

热门资讯

6个挂!德扑之星创建房间设置(... 6个挂!德扑之星创建房间设置(操作)辅助透视(了解有挂)-哔哩哔哩1、点击下载安装,微扑克wpk插件...
第5猫腻!情怀麻将怎么设置才能... 第5猫腻!情怀麻将怎么设置才能一直赢(辅助挂)太坑了其实真的有挂(确实有挂)-哔哩哔哩;1分钟了解详...
第八个苹果版!wpk发牌机制(... 微扑克ai透视辅助版本稳定性对比与推荐‌:第八个苹果版!wpk发牌机制(微扑克ai辅助器苹果版)原来...
第2软件(德州Wepoke)外... 第2软件(德州Wepoke)外挂透明挂辅助器(透视)微扑克教程(有挂秘籍)-哔哩哔哩这是由厦门游乐互...
9个渠道!德扑ai助手(软件高... 9个渠道!德扑ai助手(软件高端)软件透明挂(真的有挂)-哔哩哔哩是一款可以让一直输的玩家,快速成为...
第5代码!皮皮跑胡子外(透视)... 第5代码!皮皮跑胡子外(透视)太坑了原来真的有挂(有挂方法)-哔哩哔哩;是一款可以让一直输的玩家,快...
2开挂(智星德州菠萝成牌闯关)... WePoker透视辅助版本解析‌,2开挂(智星德州菠萝成牌闯关)外挂透明挂辅助APP(透视)系统教程...
4个后台!wpk发牌(辅助插件... 4个后台!wpk发牌(辅助插件)其实真的有挂(有挂工具)-哔哩哔哩是一款可以让一直输的玩家,快速成为...
第三个计算器!德扑保险计算器(... 第三个计算器!德扑保险计算器(手牌胜率计算工具)透视辅助(竟然有挂)-哔哩哔哩是一款可以让一直输的玩...
5私人房!桂林八一字牌辅助工具... 1、5私人房!桂林八一字牌辅助工具(辅助挂)太坑了其实真的有挂(有挂分享)-哔哩哔哩;详细教程。2、...