ARSCNView的頭文件
ARSCNView是什么
將ARSession渲染集成到SceneKit的視圖
該視圖可以繪制攝像機(jī)背景,提供和更新一個(gè)攝像頭,管理錨點(diǎn)的節(jié)點(diǎn),并更新照明。
ARSCNView的屬性
//代理屬性不做解釋
@property (nonatomic, weak, nullable) id<ARSCNViewDelegate> delegate;
//ARSession:用于更新AR場景的會(huì)話。
@property (nonatomic, strong) ARSession *session;
//指定視圖的場景。
@property(nonatomic, strong) SCNScene *scene;
//是否根絕場景更新燈光(自適應(yīng)燈光),默認(rèn)為YES
@property(nonatomic) BOOL automaticallyUpdatesLighting;
/**
在場景層次結(jié)構(gòu)中尋找與所提供的節(jié)點(diǎn)相關(guān)聯(lián)的錨點(diǎn)。
@param node 視圖場景中的一個(gè)節(jié)點(diǎn).
*/
- (nullable ARAnchor *)anchorForNode:(SCNNode *)node;
/**
將已映射到特定錨點(diǎn)的節(jié)點(diǎn)返回。
@param anchor 具有現(xiàn)有節(jié)點(diǎn)映射的錨。
*/
- (nullable SCNNode *)nodeForAnchor:(ARAnchor *)anchor;
/**
搜索當(dāng)前幀中對(duì)應(yīng)于視圖中的某個(gè)點(diǎn)的對(duì)象。
@discussion 視圖坐標(biāo)空間中的一個(gè)二維點(diǎn)可以指向三維坐標(biāo)空間中的任意點(diǎn)。測試是在這條線段上發(fā)現(xiàn)世界上的物體的過程。
@param point 視圖的坐標(biāo)系統(tǒng)中的一個(gè)點(diǎn),手機(jī)屏幕上的一個(gè)點(diǎn)
@param types 搜索結(jié)果的類型。
@return 從最近到最遠(yuǎn)處的所有測試結(jié)果的數(shù)組。
*/
- (NSArray<ARHitTestResult *> *)hitTest:(CGPoint)point types:(ARHitTestResultType)types;
ARSCNViewDelegate
/**
實(shí)現(xiàn)這個(gè)為給定的錨點(diǎn)提供一個(gè)自定義節(jié)點(diǎn)。
@discussion 此節(jié)點(diǎn)將自動(dòng)添加到場景圖。如果未實(shí)現(xiàn)此方法,將自動(dòng)創(chuàng)建一個(gè)節(jié)點(diǎn)。如果返回nil,錨點(diǎn)將被忽略。
@param renderer渲染場景的渲染器。
@param anchor添加的錨點(diǎn)。
@return將映射到錨點(diǎn)或nil的節(jié)點(diǎn)。
*/
- (nullable SCNNode *)renderer:(id <SCNSceneRenderer>)renderer nodeForAnchor:(ARAnchor *)anchor;
/**
當(dāng)新節(jié)點(diǎn)已映射到給定的錨點(diǎn)時(shí)調(diào)用。
@param renderer 渲染場景的渲染器。
@param node 映射到錨點(diǎn)的節(jié)點(diǎn)。
@param anchor 添加的錨點(diǎn)。
*/
- (void)renderer:(id <SCNSceneRenderer>)renderer didAddNode:(SCNNode *)node forAnchor:(ARAnchor *)anchor;
/**
當(dāng)節(jié)點(diǎn)將使用給定錨點(diǎn)的數(shù)據(jù)進(jìn)行更新時(shí)調(diào)用。
@param renderer 渲染場景的渲染器。
@param node 將被更新的節(jié)點(diǎn)。
@param anchor 已更新的錨點(diǎn)。
*/
- (void)renderer:(id <SCNSceneRenderer>)renderer willUpdateNode:(SCNNode *)node forAnchor:(ARAnchor *)anchor;
/**
當(dāng)一個(gè)節(jié)點(diǎn)已經(jīng)使用給定錨點(diǎn)的數(shù)據(jù)進(jìn)行更新時(shí)調(diào)用。
@param renderer渲染場景的渲染器。
@param node更新的節(jié)點(diǎn)。
@param anchor已更新的錨點(diǎn)。
*/
- (void)renderer:(id <SCNSceneRenderer>)renderer didUpdateNode:(SCNNode *)node forAnchor:(ARAnchor *)anchor;
/**
當(dāng)映射節(jié)點(diǎn)已從給定錨點(diǎn)的場景圖中刪除時(shí)調(diào)用。
@param renderer渲染場景的渲染器。
@param node已刪除的節(jié)點(diǎn)。
@param anchor已刪除的錨點(diǎn)。
*/
- (void)renderer:(id <SCNSceneRenderer>)renderer didRemoveNode:(SCNNode *)node forAnchor:(ARAnchor *)anchor;
下面的不太了解,有知道的希望您能給我留言,謝謝。。。
/**
Extended debug options for an ARSCNView
*/
struct ARSCNDebugOptions {} API_AVAILABLE(ios(11.0)) API_UNAVAILABLE(macos, watchos, tvos);
/** Show the world origin in the scene. */
API_AVAILABLE(ios(11.0)) API_UNAVAILABLE(macos, watchos, tvos)
FOUNDATION_EXTERN const SCNDebugOptions ARSCNDebugOptionShowWorldOrigin NS_SWIFT_NAME(ARSCNDebugOptions.showWorldOrigin);
/** Show detected 3D feature points in the world. */
API_AVAILABLE(ios(11.0)) API_UNAVAILABLE(macos, watchos, tvos)
FOUNDATION_EXTERN const SCNDebugOptions ARSCNDebugOptionShowFeaturePoints NS_SWIFT_NAME(ARSCNDebugOptions.showFeaturePoints);
NS_ASSUME_NONNULL_END