美文网首页
ARKit 笔记 2

ARKit 笔记 2

作者: 花开富贵_cc | 来源:发表于2021-11-15 15:10 被阅读0次

    ARScnView API

    @available(iOS 11.0, *)
    open class ARSCNView : SCNView, ARSessionProviding {
    
        
        /**
         Specifies the renderer delegate. 代理
         */
        weak open var delegate: ARSCNViewDelegate?
    
        
        /**
         The session that the view uses to update the scene. 会话
         */
        open var session: ARSession 
    
        
        /**
         Specifies the scene of the view. 场景
         */
        open var scene: SCNScene
    
        
        /**
         Determines whether the view will update the scene’s lighting.
         是否自动适应灯光
         @discussion When set, the view will automatically create and update lighting for 
         light estimates the session provides. Defaults to YES.
         */
        open var automaticallyUpdatesLighting: Bool
    
        
        /**
         Determines whether view renders camera grain.
    一个确定SceneKit是否将图像噪声特征应用于应用程序的虚拟内容的标志。
         默认启用
         @discussion When set, the view will automatically add camera grain to rendered
         content that matches the grainy noise of the camera stream. Enabled by default.
         */
        @available(iOS 13.0, *)
        open var rendersCameraGrain: Bool
    
        
        /**
         Determines whether view renders motion blur.
         确定视图是否呈现运动模糊。 默认关闭
         @discussion When set, the view will automatically add motion blur to rendered
         content that matches the motion blur of the camera stream.
         Overwrites SCNCamera's motionBlurIntensity property. Disabled by default.
         */
        @available(iOS 13.0, *)
        open var rendersMotionBlur: Bool
    
        
        /**
         Searches the scene hierarchy for an anchor associated with the provided node.
         @param node A node in the view’s scene.
        返回对应节点的锚点,节点是一个3D虚拟物体,它的坐标是虚拟场景中的坐标,而锚点ARAnchor是ARKit中现实世界的坐标
         */
        open func anchor(for node: SCNNode) -> ARAnchor?
    
        
        /**
         Returns the node that has been mapped to a specific anchor.
         @param anchor An anchor with an existing node mapping.
        返回对应锚点的物体
         */
        open func node(for anchor: ARAnchor) -> SCNNode?
    
        
        /**
         Searches the current frame for objects corresponding to a point in the view.
         根据2D坐标点搜索3D模型,这个方法通常用于,当我们在手机屏幕点击某一个点的时候,可以捕捉到这一个点所在的3D模型的位置,至于为什么是一个数组非常好理解。手机屏幕一个是长方形,这是一个二维空间。而相机捕捉到的是一个由这个二维空间射出去的长方体,我们点击屏幕一个点可以理解为在这个长方体的边缘射出一条线,这一条线上可能会有多个3D物体模型
    point:2D坐标点(手机屏幕某一点)
    ARHitTestResultType:捕捉类型  点还是面
    (NSArray<ARHitTestResult *> *):追踪结果数组  详情见本章节ARHitTestResult类介绍
    数组的结果排序是由近到远
    
         @discussion A 2D point in the view’s coordinate space can refer to any point along a line segment
         in the 3D coordinate space. Hit-testing is the process of finding objects in the world located along this line segment.
         @param point A point in the view’s coordinate system.
         @param types The types of results to search for.
         @return An array of all hit-test results sorted from nearest to farthest.
         */
        @available(iOS, introduced: 11.0, deprecated: 14.0, message: "Use [ARSCNView raycastQueryFromPoint:allowingTarget:alignment]")
        open func hitTest(_ point: CGPoint, types: ARHitTestResult.ResultType) -> [ARHitTestResult]
    
        
        /**
         Creates a raycast query originating from the point on view, aligned along the center of the field of view of the camera.
         @discussion A 2D point in the view's coordinate space and the frame camera's field of view is used to create a ray in the 3D cooridnate space originating at the point.
         @param point A point in the view’s coordinate system.
         @param target Type of target where the ray should terminate.
         @param alignment Alignment of the target.
         */
        @available(iOS 13.0, *)
        open func raycastQuery(from point: CGPoint, allowing target: ARRaycastQuery.Target, alignment: ARRaycastQuery.TargetAlignment) -> ARRaycastQuery?
    }
    
    @available(iOS 12.0, *)
    extension ARSCNView {
    
        @nonobjc public func unprojectPoint(_ point: CGPoint, ontoPlane planeTransform: simd_float4x4) -> simd_float3?
    }
    
    @available(iOS 11.0, *)
    public protocol ARSCNViewDelegate : ARSessionObserver, SCNSceneRendererDelegate {
    
        
        /**
         Implement this to provide a custom node for the given anchor.
         自定义节点的锚点
         @discussion This node will automatically be added to the scene graph.
         If this method is not implemented, a node will be automatically created.
         If nil is returned the anchor will be ignored.
         @param renderer The renderer that will render the scene.
         @param anchor The added anchor.
         @return Node that will be mapped to the anchor or nil.
         */
        optional func renderer(_ renderer: SCNSceneRenderer, nodeFor anchor: ARAnchor) -> SCNNode?
    
        
        /**
         Called when a new node has been mapped to the given anchor.
         当添加节点时会调用,我们可以通过这个代理方法得知我们添加一个虚拟物体到AR场景下的锚点(AR现实世界中的坐标)
         @param renderer The renderer that will render the scene.
         @param node The node that maps to the anchor.
         @param anchor The added anchor.
         */
        optional func renderer(_ renderer: SCNSceneRenderer, didAdd node: SCNNode, for anchor: ARAnchor)
    
        
        /**
         Called when a node will be updated with data from the given anchor.
         将要刷新节点
         @param renderer The renderer that will render the scene.
         @param node The node that will be updated.
         @param anchor The anchor that was updated.
         */
        optional func renderer(_ renderer: SCNSceneRenderer, willUpdate node: SCNNode, for anchor: ARAnchor)
    
        
        /**
         Called when a node has been updated with data from the given anchor.
         已经刷新节点
         @param renderer The renderer that will render the scene.
         @param node The node that was updated.
         @param anchor The anchor that was updated.
         */
        optional func renderer(_ renderer: SCNSceneRenderer, didUpdate node: SCNNode, for anchor: ARAnchor)
    
        
        /**
         Called when a mapped node has been removed from the scene graph for the given anchor.
         移除节点
         @param renderer The renderer that will render the scene.
         @param node The node that was removed.
         @param anchor The anchor that was removed.
         */
        optional func renderer(_ renderer: SCNSceneRenderer, didRemove node: SCNNode, for anchor: ARAnchor)
    }
    
    /**
     Extended debug options for an ARSCNView
     */
    @available(iOS 11.0, *)
    public typealias ARSCNDebugOptions = SCNDebugOptions
    extension SCNDebugOptions {
    
        
        /** Show the world origin in the scene. */
        @available(iOS 11.0, *)
        public static let showWorldOrigin: SCNDebugOptions
    
        
        /** Show detected 3D feature points in the world. */
        @available(iOS 11.0, *)
        public static let showFeaturePoints: SCNDebugOptions
    }
    
    

    相关文章

      网友评论

          本文标题:ARKit 笔记 2

          本文链接:https://www.haomeiwen.com/subject/olmbzltx.html