ARCore的AugmentedFace面具为什么会闪烁?
创始人
2024-09-12 09:30:29
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

相关内容

热门资讯

安卓换鸿蒙系统会卡吗,体验流畅... 最近手机圈可是热闹非凡呢!不少安卓用户都在议论纷纷,说鸿蒙系统要来啦!那么,安卓手机换上鸿蒙系统后,...
app安卓系统登录不了,解锁登... 最近是不是你也遇到了这样的烦恼:手机里那个心爱的APP,突然就登录不上了?别急,让我来帮你一步步排查...
安卓系统拦截短信在哪,安卓系统... 你是不是也遇到了这种情况:手机里突然冒出了很多垃圾短信,烦不胜烦?别急,今天就来教你怎么在安卓系统里...
安卓系统要维护多久,安卓系统维... 你有没有想过,你的安卓手机里那个陪伴你度过了无数日夜的安卓系统,它究竟要陪伴你多久呢?这个问题,估计...
windows官网系统多少钱 Windows官网系统价格一览:了解正版Windows的购买成本Windows 11官方价格解析微软...
安卓系统如何卸载app,轻松掌... 手机里的App越来越多,是不是感觉内存不够用了?别急,今天就来教你怎么轻松卸载安卓系统里的App,让...
怎么复制照片安卓系统,操作步骤... 亲爱的手机控们,是不是有时候想把自己的手机照片分享给朋友,或者备份到电脑上呢?别急,今天就来教你怎么...
安卓系统应用怎么重装,安卓应用... 手机里的安卓应用突然罢工了,是不是让你头疼不已?别急,今天就来手把手教你如何重装安卓系统应用,让你的...
iwatch怎么连接安卓系统,... 你有没有想过,那款时尚又实用的iWatch,竟然只能和iPhone好上好?别急,今天就来给你揭秘,怎...
iphone系统与安卓系统更新... 最近是不是你也遇到了这样的烦恼?手机更新系统总是失败,急得你团团转。别急,今天就来给你揭秘为什么iP...