ArCameraConfig
อธิบายคุณสมบัติของเซ็นเซอร์กล้องที่อยู่ด้านล่าง ซึ่งรวมถึง
- รหัสกล้อง
- หากมี จะใช้เซ็นเซอร์วัดความลึกหรือไม่
- ทิศทางที่กล้องหันไป
- หันหน้า (เซลฟี)
- หันหลัง (ทั่วโลก)
- ช่วง FPS (เฟรมต่อวินาที)
- ขนาดรูปภาพ CPU
- มิติข้อมูลพื้นผิว GPU
- หากมี จะใช้กล้องหลายตัวสเตอริโอของอุปกรณ์หรือไม่
เมื่อสร้างเซสชัน ARCore ใหม่ ARCore จะใช้ ArSession_setCameraConfig()
เพื่อตั้งค่ากล้องที่ตรงกับรายการการกำหนดค่าที่พร้อมใช้งานซึ่ง ArSession_getSupportedCameraConfigsWithFilter()
แสดงมากที่สุด
แอปของคุณสามารถใช้ ArCameraConfigFilter
เพื่อจำกัดการกำหนดค่าของกล้องที่พร้อมใช้งานสำหรับอุปกรณ์หนึ่งๆ ในระหว่างรันไทม์ให้แคบลง โดยกรองตามความต้องการของแอป
กรณีการใช้งานทั่วไปสำหรับการกรองมีดังนี้
การจำกัดอัตราเฟรมของการจับภาพของกล้องไว้ที่ 30 FPS ส่วนในอุปกรณ์ที่รองรับ 60 fps นั้น ARCore จะให้ความสำคัญกับการกำหนดค่ากล้องที่รองรับอัตราเฟรมดังกล่าว หากต้องการกรองการกำหนดค่ากล้องทั้งหมดที่รองรับ 60 FPS ให้ใช้ตัวกรองกับ
ArCameraConfigFilter_setTargetFps()
โดยใช้AR_CAMERA_CONFIG_TARGET_FPS_30
// Return only camera configs that target 30 FPS camera capture frame // rate. ArCameraConfigFilter_setTargetFps(session, filter, AR_CAMERA_CONFIG_TARGET_FPS_30);
ป้องกันไม่ให้ ARCore ใช้เซ็นเซอร์ความลึก ในอุปกรณ์ที่มีเซ็นเซอร์วัดความลึกที่รองรับ ARCore จะให้ความสำคัญกับการกำหนดค่ากล้องที่ใช้เซ็นเซอร์ความลึกก่อน หากต้องการกรองการกำหนดค่าของกล้องทั้งหมดที่ใช้เซ็นเซอร์วัดความลึก ให้ใช้ตัวกรอง
ArCameraConfigFilter_setDepthSensorUsage()
โดยใช้AR_CAMERA_CONFIG_DEPTH_SENSOR_USAGE_DO_NOT_USE
ArCameraConfigFilter_setDepthSensorUsage( session, filter, AR_CAMERA_CONFIG_DEPTH_SENSOR_USAGE_DO_NOT_USE);
การเลือกความละเอียดของพื้นผิว GPU อื่น ARCore อาจให้ความละเอียดพื้นผิว GPU เพิ่มเติมในอุปกรณ์ที่รองรับ การเลือกพื้นผิว GPU ที่มีความละเอียดต่ำลงอาจช่วยปรับปรุงประสิทธิภาพของแอปด้วยการลดภาระงานของ GPU และลดข้อกำหนดด้านแบนด์วิดท์ของหน่วยความจำ แต่ไม่ได้รับประกันว่าจะช่วยเพิ่มประสิทธิภาพได้ในทุกกรณี
การใช้ตัวกรองการกำหนดค่ากล้อง
ทำตามขั้นตอนต่อไปนี้เพื่อให้แอปกรองการกำหนดค่าของกล้อง
// Create an ARCore session. ArSession* session; ArSession_create(env, context, &session); // Create a camera config list and filter for the session. ArCameraConfig* selected_config; ArCameraConfigList* configs; ArCameraConfigFilter* filter; ArCameraConfig_create(session, &selected_config); ArCameraConfigList_create(session, &configs); ArCameraConfigFilter_create(session, &filter); // Return only camera configs that target 30 fps camera capture frame rate. ArCameraConfigFilter_setTargetFps(session, filter, AR_CAMERA_CONFIG_TARGET_FPS_30); // Return only camera configs that will not use the depth sensor. ArCameraConfigFilter_setDepthSensorUsage( session, filter, AR_CAMERA_CONFIG_DEPTH_SENSOR_USAGE_DO_NOT_USE); // Get list of configs that match filter settings. // In this case, this list is guaranteed to contain at least one element, // because both TargetFps.TARGET_FPS_30 and DepthSensorUsage.DO_NOT_USE // are supported on all ARCore supported devices. ArSession_getSupportedCameraConfigsWithFilter(session, filter, configs); // Use element 0 from the list of returned camera configs. This is because // it contains the camera config that best matches the specified filter // settings. ArCameraConfigList_getItem(session, configs, 0, selected_config); // Set the camera config to use selected_config. ArSession_setCameraConfig(session, selected_config); // Free memory. ArCameraConfigFilter_destroy(filter); ArCameraConfigList_destroy(configs);
โหมดโฟกัส
นอกจากนี้ยังตั้งค่าโหมดโฟกัสในการกำหนดค่าเซสชันได้ด้วย โดยทั่วไปแล้วโฟกัสคงที่จะเหมาะกับการติดตามมากกว่า (และเป็นค่าเริ่มต้นของ ARCore ในอุปกรณ์ส่วนใหญ่) คุณจำเป็นต้องโฟกัสอัตโนมัติในการบันทึก ถ่ายภาพ ถ่ายวิดีโอ และเมื่อต้องโฟกัสวัตถุใกล้เคียง
ดูรายละเอียดได้ที่ ArConfig_setFocusMode()