คู่มือนักพัฒนาซอฟต์แวร์ Augmented Faces สําหรับ Sceneform

ดูวิธีใช้ฟีเจอร์ Augmented Faces ในแอปของคุณเอง

สร้างและเรียกใช้แอปตัวอย่าง

วิธีสร้างและเรียกใช้แอป AugmentedFaces Java

  1. เปิด Android Studio เวอร์ชัน 3.1 ขึ้นไป เราแนะนําให้ใช้อุปกรณ์จริง (ไม่ใช่โปรแกรมจําลองของ Android) เพื่อใช้งานร่วมกับ Augmented Faces อุปกรณ์ควรเชื่อมต่อกับเครื่องพัฒนาซอฟต์แวร์ผ่าน USB ดูขั้นตอนโดยละเอียดได้ในคู่มือเริ่มใช้งานฉบับย่อสําหรับ Android

  2. นําเข้าตัวอย่าง AugmentedFaces Java ไปยังโปรเจ็กต์

  3. ใน Android Studio ให้คลิกเรียกใช้ จากนั้นเลือกอุปกรณ์เป็นเป้าหมายการทําให้ใช้งานได้ แล้วคลิกตกลงเพื่อเปิดแอปตัวอย่างในอุปกรณ์

  4. คลิกอนุมัติเพื่อให้กล้องเข้าถึงแอปตัวอย่าง

    แอปควรเปิดกล้องหน้าและติดตามใบหน้าของคุณทันทีในฟีดของกล้อง โดยควรจะแนบหูสุนัขจิ้งจอกทั้ง 2 ด้านไว้ที่หน้าผากทั้ง 2 ข้าง แล้ววางจมูกสุนัขจิ้งจอกไว้ที่จมูก

การใช้ Augmented Faces ใน Sceneform

  1. นําเข้าเนื้อหาไปยัง Sceneform

  2. กําหนดค่าเซสชัน ARCore

  3. รับสิทธิ์เข้าถึงใบหน้าที่ตรวจพบ

  4. แสดงผลเอฟเฟกต์บนใบหน้าที่ตรวจพบ

นําเข้าเนื้อหาไปยัง Sceneform

ตรวจสอบว่าเนื้อหาที่คุณใช้สําหรับ Augmented Faces ได้รับการปรับขนาดและ วางตําแหน่งอย่างถูกต้อง สําหรับเคล็ดลับและแนวทางปฏิบัติแนะนํา โปรดดูการสร้างเนื้อหาสําหรับใบหน้า Augmented

หากต้องการใช้เนื้อหาอย่างเช่น พื้นผิวและโมเดล 3 มิติกับ Augmented Face Mesh ใน Sceneform ก่อนอื่น ให้นําเข้าเนื้อหา

ระหว่างรันไทม์ ให้ใช้ ModelRenderable.Builder เพื่อโหลดโมเดล *.sfb และใช้ Texture.Builder เพื่อโหลดพื้นผิวสําหรับใบหน้า

// To ensure that the asset doesn't cast or receive shadows in the scene,
// ensure that setShadowCaster and setShadowReceiver are both set to false.
ModelRenderable.builder()
   
.setSource(this, R.raw.fox_face)
   
.build()
   
.thenAccept(
        modelRenderable
-> {
          faceRegionsRenderable
= modelRenderable;
          modelRenderable
.setShadowCaster(false);
          modelRenderable
.setShadowReceiver(false);
       
});

// Load the face mesh texture.
Texture.builder()
   
.setSource(this, R.drawable.fox_face_mesh_texture)
   
.build()
   
.thenAccept(texture -> faceMeshTexture = texture);

การวางแนวของตาข่าย

สังเกตการวางแนวของตาข่ายสําหรับ Sceneform ดังนี้

กําหนดค่าเซสชัน ARCore

Augmented Faces ต้องกําหนดค่าเซสชัน ARCore ให้ใช้กล้องหน้า (เซลฟี) และเปิดใช้การรองรับตาข่าย วิธีการคือ ขยายส่วน ARarticle และลบล้างการกําหนดค่าดังนี้

@Override
protected Set<Session.Feature> getSessionFeatures() {
 
return EnumSet.of(Session.Feature.FRONT_CAMERA);
}

@Override
protected Config getSessionConfiguration(Session session) {
 
Config config = new Config(session);
  config
.setAugmentedFaceMode(AugmentedFaceMode.MESH3D);
 
return config;
}

โปรดดูคลาส ArFragment ย่อยนี้ในเลย์เอาต์กิจกรรม

รับสิทธิ์เข้าถึงใบหน้าที่ตรวจพบ

AugmentedFace คลาสจะขยายเวลา Trackable ชั้นเรียน ในกิจกรรมของแอป ให้ใช้ AugmentedFace เพื่อเข้าถึงใบหน้าที่ตรวจพบโดยเรียกจากเมธอด addOnUpdateListener()

// Get list of detected faces.
Collection<AugmentedFace> faceList = session.getAllTrackables(AugmentedFace.class);

แสดงผลเอฟเฟกต์สําหรับใบหน้า

การแสดงผลเอฟเฟกต์มีขั้นตอนเหล่านี้

for (AugmentedFace face : faceList) {
 
// Create a face node and add it to the scene.
 
AugmentedFaceNode faceNode = new AugmentedFaceNode(face);
  faceNode
.setParent(scene);

 
// Overlay the 3D assets on the face.
  faceNode
.setFaceRegionsRenderable(faceRegionsRenderable);

 
// Overlay a texture on the face.
  faceNode
.setFaceMeshTexture(faceMeshTexture);

 

 
}