আপনার নিজের অ্যাপে কিভাবে অগমেন্টেড ফেস ফিচার ব্যবহার করবেন তা জানুন।
পূর্বশর্ত
এগিয়ে যাওয়ার আগে নিশ্চিত করুন যে আপনি মৌলিক AR ধারণা এবং কীভাবে একটি ARCore সেশন কনফিগার করবেন তা বুঝতে পেরেছেন।
অ্যান্ড্রয়েডে অগমেন্টেড ফেস ব্যবহার করা
ARCore সেশন কনফিগার করুন
অগমেন্টেড ফেস ব্যবহার শুরু করতে একটি বিদ্যমান ARCore সেশনে সামনের ক্যামেরা নির্বাচন করুন। মনে রাখবেন সামনের ক্যামেরা নির্বাচন করলে ARCore আচরণে অনেক পরিবর্তন আসবে।
জাভা
// 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);
কোটলিন
// 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
সক্ষম করুন:
জাভা
Config config = new Config(session); config.setAugmentedFaceMode(Config.AugmentedFaceMode.MESH3D); session.configure(config);
কোটলিন
val config = Config(session) config.augmentedFaceMode = Config.AugmentedFaceMode.MESH3D session.configure(config)
ফেস মেশ ওরিয়েন্টেশন
মুখের জালের অভিযোজন লক্ষ্য করুন:
সনাক্ত করা মুখ অ্যাক্সেস করুন
প্রতিটি ফ্রেমের জন্য একটি Trackable
পান। একটি Trackable
এমন কিছু যা ARCore ট্র্যাক করতে পারে এবং অ্যাঙ্করগুলিকে সংযুক্ত করা যেতে পারে৷
জাভা
// ARCore's face detection works best on upright faces, relative to gravity. Collection<AugmentedFace> faces = session.getAllTrackables(AugmentedFace.class);
কোটলিন
// ARCore's face detection works best on upright faces, relative to gravity. val faces = session.getAllTrackables(AugmentedFace::class.java)
প্রতিটি Trackable
জন্য TrackingState
পান। যদি এটি TRACKING
হয়, তাহলে এর ভঙ্গি বর্তমানে ARCore দ্বারা পরিচিত৷
জাভা
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. } }
কোটলিন
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. } }