3D model formats in ARKit / ARCore development

前端 未结 4 1199
南旧
南旧 2021-01-06 02:19

I am a beginner at AR game development for both iOS and Android. I have the following questions:

  1. What kinds of 3D model formats are supported by ARKit for i

相关标签:
4条回答
  • 2021-01-06 02:31

    Updated: July 12, 2020.


    SceneKit

    Apple SceneKit framework handles 3D models for ARKit and 3D apps. SceneKit supports the following 3D assets with corresponding material files:

    • .dae (with or without animations)
    • .obj (single-framed)
    • .abc (single-framed)
    • .usdz (with or without animations)
    • .scn (native SceneKit's scene format)


    RealityKit

    Apple's RealityKit framework also handles 3D models for ARKit. You can prototype a content for RealityKit in a standalone app called Reality Composer. RealityKit supports the following 3D assets:

    • .usdz (with or without animations)
    • .reality (with or without animations and dynamics) – Made for much faster loading time
    • .rcproject (with or without animations and dynamics)

    Additionally you can use Terminal's usdzconvert command to get .usdz from the following formats:

    • .obj
    • .glTF
    • .fbx
    • .abc
    • .usda
    • .usdc
    • .usd

    And, of course, you can use Reality Converter app (released in 2020) with simple UI.


    Sceneform

    Google Sceneform handles 3D models for ARCore SDK. Sceneform supports the following 3D assets with their material dependencies:

    • .obj (with its .mtl dependency)
    • .glTF (animations not supported)
    • .fbx (with or without animations)
    • .sfa (ascii asset definition, deprecated in Sceneform 1.16)
    • .sfb (binary asset definition, deprecated in Sceneform 1.16)

    P.S. It's a pity but at the moment (since June 2020) Sceneform has been archived and no longer maintained by Google.


    SceneKit, RealityKit, Sceneform and Reality Composer support Physically Based Rendering.


    ARKit and ARCore

    But what's the role of ARKit and ARCore then?

    These two modules don't care about importing and rendering of a 3D geometry. They only care about tracking, scene understanding and light estimation.

    0 讨论(0)
  • 2021-01-06 02:32

    I not sure did you checked ARCore properly. The basic example delivered by Google is working on .obj format. ARCore is set of tools related with AR only. You can use 3D format whatever you want as long as you will be able to use it on Android. It is not related with ARCore Question 2 is not related with ARCore and/or android or even arkit

    0 讨论(0)
  • 2021-01-06 02:33

    ARKit doesn't care about model formats, because ARKit doesn't display 3D models (or anything else) itself.

    ARKit provides information for use by a higher level rendering engine — Apple's SceneKit or SpriteKit, third-party Unreal or Unity plug-ins, or an engine you build yourself with Metal or OpenGL. The rendering engine is responsible for drawing the camera feed and overlaying 3D content to create AR illusions, and it uses the information ARKit provides in order to do so convincingly.

    I don't know much about ARCore, but from all appearances it has the same role in the Android ecosystem — it's Unity, Unreal, or some other engine that handles the 3D models there, too.

    So, questions like this are specific to whatever 3D engine you're using with ARKit/ARCore. SceneKit can handle DAE and OBJ directly, and a few more formats via Model I/O (see MDLAsset and SCNScene.init(mdlAsset:)). For Unreal, Unity, and whatever else you use with ARCore handle... see the documentation for those technologies.

    0 讨论(0)
  • 2021-01-06 02:40

    ARcore itself doesn't come with any 3d model handling logic at this moment. To render a 3D model in any format, you need to parse the data and draw it using openGL. The sample app in the package demonstrates how this can be done for a simple 3D model i.e 1 OBJ and 1 texture file.

    0 讨论(0)
提交回复
热议问题