Artırılmış Yüzler özelliğini kendi uygulamalarınızda nasıl kullanacağınızı öğrenin.
Ön koşullar
Temel artırılmış gerçeklik kavramlarını anladığınızdan emin olun ve devam etmeden önce ARCore oturumunun nasıl yapılandırılacağı hakkında daha fazla bilgi edinin.
Android'de Artırılmış Yüzleri Kullanma
ARCore oturumunu yapılandırma
Artırılmış Yüzleri kullanmaya başlamak için mevcut bir ARCore oturumunda ön kamerayı seçin. Ön kamerayı seçtiğinizde, bir dizi değişikliğe yol açacaktır için de geçerlidir.
Java
// Set a camera configuration that usese the front-facing camera. CameraConfigFilter filter = new CameraConfigFilter(session).setFacingDirection(CameraConfig.FacingDirection.FRONT); CameraConfig cameraConfig = session.getSupportedCameraConfigs(filter).get(0); session.setCameraConfig(cameraConfig);
Kotlin
// Set a camera configuration that usese the front-facing camera. val filter = CameraConfigFilter(session).setFacingDirection(CameraConfig.FacingDirection.FRONT) val cameraConfig = session.getSupportedCameraConfigs(filter)[0] session.cameraConfig = cameraConfig
AugmentedFaceMode
hizmetini etkinleştirin:
Java
Config config = new Config(session); config.setAugmentedFaceMode(Config.AugmentedFaceMode.MESH3D); session.configure(config);
Kotlin
val config = Config(session) config.augmentedFaceMode = Config.AugmentedFaceMode.MESH3D session.configure(config)
Yüz örgüsü yönü
Yüz ağının yönüne dikkat edin:
Algılanan yüze erişin
Bir Trackable
edinin
ekleyebilirsiniz. Trackable
, ARCore'un takip edebileceği bir şeydir ve
Sabit reklamlar eklenebilir.
Java
// ARCore's face detection works best on upright faces, relative to gravity. Collection<AugmentedFace> faces = session.getAllTrackables(AugmentedFace.class);
Kotlin
// ARCore's face detection works best on upright faces, relative to gravity. val faces = session.getAllTrackables(AugmentedFace::class.java)
TrackingState
'nı edinin
her Trackable
için. TRACKING
ise
pozu şu anda ARCore tarafından biliniyor.
Java
for (AugmentedFace face : faces) { if (face.getTrackingState() == TrackingState.TRACKING) { // UVs and indices can be cached as they do not change during the session. FloatBuffer uvs = face.getMeshTextureCoordinates(); ShortBuffer indices = face.getMeshTriangleIndices(); // Center and region poses, mesh vertices, and normals are updated each frame. Pose facePose = face.getCenterPose(); FloatBuffer faceVertices = face.getMeshVertices(); FloatBuffer faceNormals = face.getMeshNormals(); // Render the face using these values with OpenGL. } }
Kotlin
faces.forEach { face -> if (face.trackingState == TrackingState.TRACKING) { // UVs and indices can be cached as they do not change during the session. val uvs = face.meshTextureCoordinates val indices = face.meshTriangleIndices // Center and region poses, mesh vertices, and normals are updated each frame. val facePose = face.centerPose val faceVertices = face.meshVertices val faceNormals = face.meshNormals // Render the face using these values with OpenGL. } }