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是否將圖像噪聲特征應用于應用程序的虛擬內(nèi)容的標志奈附。
默認啟用
@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.
確定視圖是否呈現(xiàn)運動模糊每庆。 默認關閉
@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.
返回對應節(jié)點的錨點八匠,節(jié)點是一個3D虛擬物體信柿,它的坐標是虛擬場景中的坐標,而錨點ARAnchor是ARKit中現(xiàn)實世界的坐標
*/
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.
根據(jù)2D坐標點搜索3D模型惨篱,這個方法通常用于,當我們在手機屏幕點擊某一個點的時候,可以捕捉到這一個點所在的3D模型的位置缓溅,至于為什么是一個數(shù)組非常好理解。手機屏幕一個是長方形赁温,這是一個二維空間坛怪。而相機捕捉到的是一個由這個二維空間射出去的長方體,我們點擊屏幕一個點可以理解為在這個長方體的邊緣射出一條線股囊,這一條線上可能會有多個3D物體模型
point:2D坐標點(手機屏幕某一點)
ARHitTestResultType:捕捉類型 點還是面
(NSArray<ARHitTestResult *> *):追蹤結果數(shù)組 詳情見本章節(jié)ARHitTestResult類介紹
數(shù)組的結果排序是由近到遠
@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.
自定義節(jié)點的錨點
@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.
當添加節(jié)點時會調(diào)用袜匿,我們可以通過這個代理方法得知我們添加一個虛擬物體到AR場景下的錨點(AR現(xiàn)實世界中的坐標)
@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.
將要刷新節(jié)點
@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.
已經(jīng)刷新節(jié)點
@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.
移除節(jié)點
@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
}