Sélection de la technologie du moteur AR et plan de mise en œuvre

Guider

Il faut 20 minutes pour lire environ 6000 mots dans cet article. Le contenu comprend:

  • Connaissances de base des développeurs en RA
  • Aperçu de la sélection pour les moteurs de RA grand public
  • Plan d'évaluation et de mise en œuvre du moteur Vuforia
  • Plan d'évaluation et de mise en œuvre du moteur EasyAR
  • Plan d'évaluation et de mise en œuvre du moteur ARFoundation
  • Plan d'évaluation et de mise en œuvre du moteur AR auto-développé
  • Solution d'intégration multimoteur
  • Sélection du moteur AR et résumé de la mise en œuvre
    EEA est la Explore Entertainment Academy (Explore Entertainment Academy). Nous partagerons régulièrement nos articles sur la recherche de jeux, dans l'espoir d'aider tout le monde et notre propre système théorique de conception de jeux en résolvant une proposition après l'autre. Et finalement augmenter productivité.

1. Environnement de recherche

    研究目的:实现AR引擎,提供运动追踪SLAM,平面识别、图像识别、人物遮挡、光照估计、阴影等功能支持。

    开发工具:Unity 2020.1.4f1c1。

    开发言语:C#

2. Connaissances de base des développeurs sur la RA

    AR全称Augmented Reality,即为增强现实技术。由现实场景和虚拟场景两部分叠加显示,为用户提供更丰富的感官体验和更立体的信息传达。



    开发场景中必定有两个“摄像机”分别拍摄现实场景和虚拟场景,渲染叠加显示即为AR场景。

    现实场景摄像机-手机摄像头硬件:程序获取手机摄像头拍摄的现实画面,并渲染到画布上(需要获取手机摄像头权限)。

    虚拟场景摄像机-即Unity的Camera:拍摄3D场景渲染。



    AR的最大应用价值是基于AI扩展功能,通过图像识别、动作识别、人脸识别等方式,智能分析认知现实场景,在虚拟场景做对应的显示,达到增强现实效果。

Autres documents de lecture:

De la RA à la ZR: 26 concepts sur la réalité!

3. Aperçu de la sélection du moteur de RA grand public

    本人能力时间有限,无法对每个引擎都研究透彻,若有错误的地方欢迎大家指出。

    大多数AR引擎都是基于ARCore和ARKit,分别用于支持Android设备和IOS设备,并在基础上再次封装扩展开发。少部分AR引擎有自行研发核心功能,用于适配更多手机型号或增强功能。

1. ARCore:
Description: La plateforme de développement AR lancée par Google, qui peut être utilisée pour développer des applications AR sur la plateforme Android.

    设备支持:支持Android,不支持IOS设备。有相当一部分Android设备不支持,与是否有安装Google ARCore的有关,与手机价格和新旧程度无关。

    功能:运动追踪、平面追踪、点云图、云锚点、光照估计、环境探针、人脸追踪、2D图片追踪、人物遮挡、射线测试

2. ARKit:
Description: plate-forme de développement AR d'Apple, qui peut être utilisée pour développer des applications AR sur les plates-formes iPhone et iPad.

    设备支持:支持IOS设备,不支持Android

    功能:运动追踪、平面追踪、点云图、云锚点、光照估计、环境探针、人脸追踪、动作捕捉,2D图片追踪、3D物体追踪、人物遮挡、射线测试

3. Vurforia:
Description: également connu sous le nom de Qualcomm AR, il coopère avec Qualcomm pour développer des produits. Soutenir Unity

    依赖引擎:ARCore、ARKit

    设备支持:支持Android和IOS设备

    识别数据:平台云端存储

4. EasyAR:
Description: Le moteur AR développé par Visionstar Information Technology a développé un ensemble de SLAM, qui peut être adapté à plus de modèles. Soutenir Unity

    依赖引擎:ARCore、ARKit

    设备支持:支持Android和IOS设备

    识别数据:平台云端存储

    功能:最新一些功能,如人物遮挡、光照估计是否有接口实现,待确定暂时未找到。

5. ARFoundation:
Description: Unity encapsule ARKit et ARFoundation, aucune nouvelle fonction n'est implémentée, ce qui est pratique pour une interface unifiée et une utilisation multi-plateforme. Soutenir Unity

    依赖引擎:ARCore、ARKit

    设备支持:支持Android和IOS设备

    识别数据:自行存储

6.SenseAR:
Description: moteur AR développé par SenseTime . Aucune autre recherche et évaluation. Soutenir Unity

    设备支持:设备需要预装或手动安装SenseAR,版本间不兼容。

    功能:运动最终、光照估计、手饰识别、图像识别和跟踪、人脸跟踪与重建、云锚点、三维物体识别与跟踪、实时三维重建

7. Baidu AR:
Description: Un moteur AR développé par Baidu. Principalement dans la reconnaissance d'image AI, fonction de reconnaissance faciale. Soutenir Unity

8. Ali AR:
Description: moteur AR développé par Ali. Principalement dans la reconnaissance d'image 2D, fonction de suivi d'objets 3D. Le développement du SDK ne peut être obtenu qu'après un contact commercial.

9. Tencent AR:
Description: Moteur AR développé par Tencent. Les informations du site Web officiel sont très simples et aucune recherche ni évaluation supplémentaire n'a été effectuée. Soutenir Unity

10. Huawei AR:
Description: Le moteur AR développé par Huawei. Ajout d'une prise en charge supplémentaire pour les équipements Huawei, qui peuvent être adaptés à davantage de téléphones mobiles Huawei. Soutenir Unity

    依赖引擎:ARFoundation

11. NetEase AR:
Description: moteur AR développé par NetEase. Grâce à la coopération commerciale, NetEase complète la livraison des exigences.

12. LandMarkAR:
Description: Moteur AR développé par Douyin . Le site Web officiel et le SDK disponible n'ont pas été trouvés.

13. VoidAR:
Description: Le moteur AR développé par Chengdu Miyou . Le service client a déclaré qu'il s'agissait d'une recherche et développement totalement indépendante, qu'elle ne reposait pas sur ARCore, ARKit et que l'équipement était hautement adaptable. Les résultats des tests de fonction SLAM sont très volatils et ne peuvent pas être utilisés dans des applications pratiques. Soutenir Unity

Quatrièmement, le plan d'évaluation et de mise en œuvre du moteur Vuforia

1. Environnement de recherche:
version Vurforia: add-vuforia-package-9-3-3

    Unity版本:Unity 2020.1.2f1c1

2. Configurez le SDK et créez un projet AR:
2.1 Connectez-vous au site officiel de vuforia, cliquez sur S'inscrire pour créer un compte développeur:

    2.2 在开发者平台中,点击Develop,在License Manager中,创建AR App的license Key;

    2.3 登陆官网下载SDK,将下载好的unitypackage文件导入到Unity项目;

    2.4 Unity项目删除原来的Main Camera,点击GameObject-Vuforia Engine-AR Camera添加AR Camera;

    2.5 选中AR Camera点击Open Vuforia Configuration,将申请的license Key复制到App License Key输入框中,AR场景必要设置已完成了;

Si nous voulons créer davantage un projet AR pour la reconnaissance d'image, nous continuons à faire:

    2.6 在开发者平台,点击Develop,在TargetManager中点击Add Database,添加对象数据库;

            2.6.1 数据库类型有三种:Device(设备识别),Cloud(云端识别),VuMark(条形码)

    2.7 点击进入数据库后,点击Add Target将需要识别的图片传入,并填入相应的信息点击Add;

            2.7.1 Type:根据需求选择,这里选择Single Image(单个图片)

            2.7.2 File:在本地选择识别图上传

            2.7.3 Width:识别图片的宽度。用于建立Unity场景中的单位长度,场景中所有其他物体的大小是以这个值为参照建立的。Vuforia中的单位长度是以米来计算。这个值可以是任意的,但是最好比Camera的Near Clip值要大,不然在镜头靠近时你可能会看不到相关内容。这里可输入为1;

            2.7.4 Name:识别图片名字。名字唯一,用于识别各个识别图。

            2.7.5 Status:Active表示可用。(创建完成后可查看)

            2.7.6 Augmentable:可识别度评级,最少需要3颗星才能保证高质量的识别,最高5颗星。(创建完成后可查看)

    2.8 将Vuforia - Prefabs中的ImageTarget预制体拖入场景中,并将识别后要显示的模型作为子对象挂在ImageTarget下面;

    2.9 在ImageTarget的ImageTargetBehaviour中,Type选择From Database,在Database和ImageTarget选项分别选择之前设置的数据库和图片对象;

    2.10 至此AR图像识别已完成,可运行,用摄像头拍摄识别图,对应的模型就会显示出来。

Comparaison du périphérique de base de données et du type de cloud

rWfTQQuYzfVD1tp4NPNa.png

3. Analyse des classes clés:
VuforiaBehaviour: Démarrer la classe de départ du moteur Vurforia

VuforiaManager: Gérez la mise à jour des objets traçables, leur statut et leur position dans la caméra

VuforiaARController: la classe VuforiaBehaviour gère le suivi et déclenche la vidéo locale. Rendu d'arrière-plan. Cette classe mettra à jour tous les trackables de la scène.

WebCamARController: MonoBehaviour gère l'utilisation de la webcam "Play Mode" sous Windows ou Mac.

4. Évaluation:
4.1 L'un des moteurs de RA les plus populaires au monde, et la précision et la flexibilité de la reconnaissance d'image sont bien optimisées;

    4.2 测试效果总体不错,但Android设备支持限于ARCore,适配性一般;

    4.3 开发需要在国外找资料,国内资料零散不全

Autres documents de lecture:

Communauté chinoise de Vuforia

5. Plan d'évaluation et de mise en œuvre du moteur EasyAR

1. Environnement de recherche:
version EasyAR: EasyARSenseUnityPlugin_4.1.0.811

    Unity版本:2020.1.4f1c1(官方建议长期支持版本 Unity 2019.4、Unity 2018.4、Unity 2017.4。测试反馈:2020版本是暂没发现影响因素)



    EasyAR Sense Unity建立在EasyAR Sense C# API之上的非常薄的封装,用于在Unity中暴露EasyAR Sense的功能。建议阅读 EasyAR Sense 文档 来理解EasyAR Sense是如何工作的。

2. Configurer le SDK et créer un projet AR (le document officiel du site Web contient un didacticiel détaillé):
2.1 Connectez-vous au site Web officiel d'EasyAR et créez un compte;

    2.2 进入开发者中心,申请Sense许可证密钥License Key;

    2.3 登陆官网下载SDK,将下载好的unitypackage文件导入到Unity项目;

    2.4 从Unity菜单中选择<EasyAR -> Change License Key>并在Inspector面板中输入准备工作中创建的License Key;

Si vous avez hâte de voir comment fonctionne la scène AR

    2.5 可登陆官网下载实例文件夹,将下载好的unitypackage文件导入到Unity项目;

    2.6 项目中Project - Samples - Scenes文件夹中,打开任意场景运行即可体验对应的AR场景(场景说明看英文名或官网教程);

Si vous souhaitez apprendre librement à utiliser le moteur

    2.7 打开项目摄像机Main Camera,修改Camera属性设置:

            2.7.1 Tag: 设置Camera Tag为 MainCamera 。如果不做这个设置,则需要在场景中 EasyAR 节点的配置中选择 Assemble Mode 为 Manual 并手动配置Camera。

            2.7.2 Clear Flags: 需要选择为 Solid Color 以确保Camera图像可以正常渲染。如果选择为 Skybox ,Camera图像将无法显示。

            2.7.3 Background: 这个非必需配置,考虑到使用体验,建议将背景颜色设为黑色以便在Camera设备打开前和切换时以黑色显示。

            2.7.4 Clipping Planes: 根据识别物体实际的物理距离设置。这里设置Near为0.1(米)以避免相机离物体较近时无法显示。

    2.8 在Project - EasyAR - Prefabs文件夹中:

            Composites:该文件夹下的预制体是引擎预先配好的AR组件,拖入场景中即可使用对应的AR功能(适合新手);

            Primitives:该文件夹下的预制体是单个功能的引擎,可自由组合使用自己想要的AR功能

3. Analyse des catégories clés:
ARSession: MonoBehaviour qui contrôle les sessions AR dans la scène. Une session contient un ensemble de composants assemblés dans ARAssembly et contrôle le flux de données tout au long du cycle de vie. Cette classe est l'entrée de AR. Si vous souhaitez implémenter un flux de travail AR complètement différent, vous pouvez créer une nouvelle classe de session et remplacer cette classe dans la scène.

EasyARController: exécutez en premier. Contrôlez l'initialisation d'EasyAR Sense et certains paramètres globaux de MonoBehaviour dans la scène.

RenderCameraController: contrôle le MonoBehaviour de la caméra dans la scène, et la matrice de projection de la caméra reflétera le CameraDevice ou d'autres dispositifs optiques dans le monde réel.

CameraImageRenderer: MonoBehaviour qui contrôle le rendu de l'image de la caméra dans la scène. Cette classe ne prend actuellement pas en charge le pipeline de rendu universel Unity (URP), mais vous pouvez étendre l'implémentation de cette classe pour prendre en charge URP.

VIOCameraDeviceUnion: classes liées au suivi de mouvement. MonoBehaviour, qui contrôle les caméras VIO (MotionTrackerCameraDevice, ARKitCameraDevice, ARCoreCameraDevice) dans la scène, fournit des extensions de fonction dans l'environnement Unity. Si nécessaire, vous pouvez utiliser l'appareil directement. MotionTracker est un ensemble de suivi de mouvement implémenté par EasyAR lui-même.

ARAssembly: Il met en œuvre une stratégie d'assemblage typique pour tous les composants EasyAR Sense, tout en contrôlant le flux de données dans ARSession. Disponible pour ARCamera.

Pour vérifier si le téléphone prend en charge EasyAR, les fonctions suivantes peuvent être utilisées:

t36JB2PTY7NxIalcJsEp.png

4. Questions nécessitant une attention particulière / configuration du projet:
4.1 Projet Android, le niveau d'API Android doit être supérieur ou égal à 17;

    4.2 不支持Universal Render Pipeline,即URP项目不支持的。

            手机摄像头渲染与URP渲染相互有影响,强制使用URP项目手机摄像头运行不了;

            可以通过扩展EasyARSenseUnityPlugin的脚本来支持URP和HDRP;

            所有的渲染API调用都组织在CameraImageRenderer脚本组件中。可以扩展这个脚本并修改一些shader来支持URP和HDRP。

    4.3 Unity使用mono脚本后台不支持Android arm64-v8a。如果需要使用应开启IL2CPP;

    4.4 对于运动追踪功能,各大AR引擎主要通过图像识别、陀螺仪、加速传感器等传感器结合实现。经测试,在手机摄像头朝向上方的时候,都有一定几率会追踪失败,ARCore会重定位恢复显示,EasyAR的MotionTracker会直接卡死。

5. Évaluation:
5.1 L'un des meilleurs moteurs AR en Chine, avec des données complètes et une interface conviviale;

    5.2 MotionTracker可以适配更多的手机型号,但对比ARCore,还是有差距,一些BUG还待需优化;

    5.3 稠密矩阵对现实物体的贴合度体验有差距,还待续优化;

    5.4 总之来说EasyAR自研发的功能个人感觉有些鸡肋,但总体效果还是不错。

Autres documents de lecture:

Tutoriel de la communauté EasyAR

6. Plan d'évaluation et de mise en œuvre du moteur ARFoundation

1. Environnement de recherche:
version ARFoundation: version 4.1.0-preview.12-novembre 03, 2020

    Unity版本:2020.1.4f1c1

2. Configurez le SDK et créez un projet AR:
si vous ne pouvez pas attendre de voir l'effet de l'opération de scène AR

    2.1 在Github上下载ARFoundation的示例代码,里面所有功能都有对应的示例场景;

    2.2 在示例项目中,Project - Scenes文件夹下,打开任意场景运行即可体验对应的AR场景;

Si vous souhaitez apprendre librement à utiliser le moteur

    2.3 在Unity项目中,打开Window - Package Manager安装引擎包,AR Foundation、AR Subsystems、ARCore XR Plugin、ARKit Face Tracking、ARKit XR Plugin,有些包会跟着其他包一起自动安装,注意版本一定要一致:

    2.4 在Hierarchy中创建一个空对象A,添加组件ARSession和ARInputManager;

    2.5 在Hierarchy中创建一个空对象B,添加组件ARSessionOrigin;

    2.6 打开项目摄像机Main Camera,修改Camera属性设置Clear Flags需要选择为 Solid Color,添加组件ARCameraManager,ARCameraBackground,ARPoseDirver;

    2.7 再将Main Camera移动对象B下面,作为子对象。AR场景已完成完毕可以运行查看效果了。

3. Analyse des catégories clés:
ARSession: la session AR contrôle le cycle de vie de l'expérience AR en activant ou en désactivant la RA sur la plate-forme cible.

ARSessionOrigin: convertissez les entités traçables (telles que les plans et les points caractéristiques) à leur emplacement final dans la scène Unity

ARPoseDriver: pilotez la position locale et la direction du GameObject parent en fonction des informations de suivi de l'appareil

ARCameraManager: La fonction d'activation de la caméra AR, y compris la gestion de la texture de la caméra de l'appareil et les propriétés de réglage du mode d'estimation de la lumière.

ARCameraBackground: affiche le flux vidéo de la caméra de l'appareil comme arrière-plan rendu de la scène au moment de l'exécution

ARTrackedImageManager: Une classe utilisée pour la reconnaissance et le suivi d'image, elle doit être accrochée sous l'objet B pour prendre effet;

ARPlaneManager: une classe utilisée pour la détection de plan, qui peut prendre effet après le montage de l'objet B;

AROcclusionManager: une classe utilisée pour l'occlusion de caractères, qui doit être accrochée sous la caméra principale pour prendre effet;

4. Questions nécessitant une attention particulière / configuration du projet:
4.1 Paramètres des paramètres du lecteur, projet Android, niveau d'API Android doit être supérieur ou égal à 24;

    4.2 Player Setting设置,XR Plug-in Management勾选ARCore和ARKit;

    4.3 Player Setting设置,删除 vulkan,Android不支持Vulkan;

    4.4 还有一些Player Setting设置因版本不一样,根据实际情况自己选择设置,非必须;

            4.4.1 不勾选 Multithreaded Rendering;

            4.4.2 不勾选 Auto Graphics API;

            4.4.3 不勾选 ARCore Supported;

    4.5 ARSession.state可获取引擎的运行状态,可用于检测ARFoundation是否支持设备,各功能可通过subsystem???.descriptor???.supports???的方式查看是否支持。注意引擎和子系统必须要先运行才能知道是否支持;

5. Évaluation:
5.1 ARFoundation a une bonne encapsulation d'interface et est facile à utiliser.Les dernières fonctions publiées par ARCore et ARKit sont fournies en temps opportun, et la version est continuellement optimisée;

    5.2 ARFoundation版本和Unity版本有匹配要求,在Unity2019打包最新版本会失败;

    5.3 ARFoundation配置出错后,没有社群可以问答,只能对比示例场景一点一点找问题;

    5.4 如果环境太暗,则设备运动追踪可能会“丢失跟踪”,因为基于图像识别,所有SLAM都会出现此情况;

Autres documents de lecture:

Unity AR + GPS Location prend en charge ARFoundation et Vuforia

7. Plan d'évaluation et de mise en œuvre du moteur de RA auto-développé

1.
Objectifs de R&D: Objectif 1: Réaliser des scènes AR, affichage superposé de scènes réelles et de scènes virtuelles

    目标二:虚拟场景摄像机Camera能同手机摄像头一起旋转、移动

    目标三:最大程度上适配更多的手机、解决ARCore和ARKit对大量手机不适配情况

2. Idée de développement:
sur la base de la connaissance de base des scénarios AR et sur la base des périphériques matériels disponibles dans la plupart des téléphones mobiles, complétez les fonctions AR les plus élémentaires.

    2.1 获取手机摄像头,并获取摄像头拍摄的画面渲染出来;

    2.2 通过手机传感器(陀螺仪、加速传感器、指南针等)识别手机的方向和移动,实现控制摄像机Camera旋转移动;

3. Schéma de mise en œuvre:
3.1 WebCamTexture peut obtenir la photo prise par la caméra du téléphone portable et la convertir en matériel d'affichage. Le code principal est le suivant (le type de variable et le nom de la variable sont les mêmes):

            3.1.1 判断是否支持手机摄像头,并设置摄像头渲染显示

tXQvab6cKUjbHP3LiVIb.png
3.1.2 Mettre à jour l'appel de mise à jour à chaque image, détecter dynamiquement la largeur et la hauteur d'affichage de la caméra et la modification du sens de rotation du téléphone portable

otzDLownCzk2BTB2QptV.png
3.2 Input.gyro peut obtenir le gyroscope, qui est utilisé pour obtenir l'orientation spatiale du téléphone, puis contrôler la rotation synchrone de la caméra spatiale

            3.2.1 打开项目摄像机Main Camera,修改Camera属性设置Clear Flags需要选择为 Solid Color。

            3.2.2 在Hierarchy中创建一个空对象A,将Main Camera拖入对象A下,作为子对象;

            3.2.3 将对象APosition设置为(0,0,0),Rotaion设置为 Quaternion.Euler(90f, 180f, 0f);

            3.2.4 在帧循环Update中,写camera.localRotation = gyro.attitude * new Quaternion(0f, 0f, 1f, 0f); 摄像机即可随着手机旋转而旋转;

    3.3 gyro.userAcceleration可获取空间移动加速度,Input.acceleration可获取加速传感器的线性加速度,预想根据加速度计算空间位置从而控制摄像机移动,但实际效果误差太大,移动效果尝试失败ε=(´ο`*)))唉。

    3.4 Input.compass.trueHeading可获取设备指南针方向,gyro.attitude.eulerAngles.z陀螺仪的方向角也可以获取,但两者获取值有一点差异,但问题不大,可通过算法优化。通过方向值调整空间锚点方向,从而达到虚拟世界的朝向同现实世界一致;

4. Évaluation: Le
moteur AR auto-développé peut réaliser la scène AR réelle et contrôler la rotation de la caméra. Il peut être utilisé comme une scène AR in situ. La fonction SLAM de suivi de mouvement est uniquement basée sur le matériel de téléphonie mobile et ne peut pas être mise en œuvre sans l'utilisation d'algorithmes d'IA. Par conséquent, la fonction SLAM du moteur AR grand public est mise en œuvre sur la base d'une combinaison de reconnaissance d'image et points d'ancrage de l'espace fixe.

    自研发AR引擎对手机的设备适配性达到MAX,只要有陀螺仪的手机都能使用,一些简单AR应用完全能满足要求。

Autres documents de lecture:

Requête de modèle de téléphone mobile prenant en charge ARCore

8. Plan d'utilisation intégré multimoteur

1. Après avoir introduit plusieurs moteurs de RA grand public, faisons d'abord une comparaison:

    基础功能支持:Vurfora ~ EasyAR > ARFoundation >> 自研发AR

            Vurfora和EasyAR对ARCore和ARKit基础功能想图像识别定位做了一定的AI优化处理,效果理论下更好



    高级功能支持:ARFoundation > Vurfora ~ EasyAR >> 自研发AR

            ARFoundation只对ARCore和ARKit进行封装,对最新的高级功能支持最好

            Vurfora和EasyAR底层封装,ARCore和ARKit的最新高级功能反而不能及时支持

    

    URP项目支持:

            支持:ARFoundation、Vurfora、自研发AR 

            不支持:EasyAR



    设备适配性:自研发AR >> EasyAR > Vurfora ~ ARFoundation

            EasyAR自研发了一些系统,能支持更多的设备

            Vurfora和ARFoundation限于ARCore和ARKit支持限制

            (PS:华为AR对华为手机有更多的适配支持)



    Unity友好性:自研发AR > ARFoundation > Vurfora > EasyAR 

            ARFoundation本来就是Unity封装的,包可以直接下载使用,随时更新最新的

            Vurfora也是Unity嵌入支持的



    开发友好性:自研发AR >> EasyAR > ARFoundation > Vurfora

            EasyAR官网提供完整的使用说明文和示例项目,并且可在社区随时询问开发问题,很友好

            ARFoundation在Github上提供完整的示例项目,加上接口封装的不错,使用上还是比较友好

2. Chaque moteur a ses propres avantages et inconvénients, essayez de combiner l'utilisation du plan comme suit
2.1 Cependant, parce que le contrôle de chaque moteur à la caméra est encapsulé dans la couche inférieure et ne peut pas être modifié à nouveau, l'utilisation simultanée de plusieurs les moteurs sont exclus.

    2.2 根据手机情况,智能选择最合适的引擎使用,但由于主流AR引擎均基于ARCore和ARKit,并且支持的版本不一样,同时在项目中,会因为ARCore和ARKit版本不统一,但只能存在一个版本的,导致使用失败,方案排除;

    2.3 主流AR引擎+自研发AR引擎方案,优先使用主流AR引擎,如判断主流AR引擎不支持,就切换使用自研发AR引擎,可行;

3. Schéma de réalisation de fonction étendue:
idée de réalisation d'ombre AR:

            因为AR场景中,背景是现实场景,虚拟场景没有地面存在,3D对象需要显示阴影,就需要在3D对象下方一个透明的平面,然后将阴影渲染到平面上显示,要注意平面大小,如果过小,阴影会显示不全。提供一个阴影shader。

k9HyYTn0kGFFXLWiYD7o.png
tzophU1RHeWvxxrBDV1R.png
Idées de réalisation de positionnement GPS:

            方案一:Input.location是Unity提供的获取GPS定位的接口,自行编写换算算法后,便可使用;

                    SystemInfo.supportsLocationService 可检测手机是否支持GPS

                    Input.location.isEnabledByUser 可检测用户是否许可开启GPS

            方案二:前文提到的Unity AR + GPS Location是有封装好的定位类,算法完整,可直接使用;

            方案三:可从地图SDK(如百度地图、高德地图)获取定位信息,传到unity使用,相比Unity的GPS定位,添加了wifi定位和基站定位,更稳定精准;

Neuf, sélection du moteur AR et résumé de la mise en œuvre

    这次AR引擎选型研究遇到最大问题就是设备适配性,特别是Android设备,主流AR引擎依赖ARCore,ARCore依赖手机要有Google ARCore,现在相当一部分手机不支持Google ARCore,最新的高级手机都有不支持的,最终导致基于主流AR引擎开发的AR应用无法使用。

    这点抖音做的很好,LandMarkAR实际使用情况大部分手机都支持,适配性不错,可惜未开放SDK,无法基于LandMarkAR开发。

    国内第三方AR开发商很多,但很多都是商业合作方式代开发AR应用,面向开发者的第三方SDK提供商不多。

    最终AR引擎选型为ARFoundation+自研发AR方案,AR高级功能由ARFoundation实现,适配性由自研发AR保底。

Cet article est réimprimé à l'adresse: https://gameinstitute.qq.com/community/detail/133606

Je suppose que tu aimes

Origine blog.csdn.net/qq_40513792/article/details/115110970
conseillé
Classement