SceneKit_入門(mén)01_旋轉(zhuǎn)人物
SceneKit_入門(mén)02_如何創(chuàng)建工程
SceneKit_入門(mén)03_節(jié)點(diǎn)
SceneKit_入門(mén)04_燈光
SceneKit_入門(mén)05_照相機(jī)
SceneKit_入門(mén)06_行為動(dòng)畫(huà)
SceneKit_入門(mén)07_幾何體
SceneKit_入門(mén)08_材質(zhì)
SceneKit_入門(mén)09_物理身體
SceneKit_入門(mén)10_物理世界
SceneKit_入門(mén)11_粒子系統(tǒng)
SceneKit_入門(mén)12_物理行為
SceneKit_入門(mén)13_骨骼動(dòng)畫(huà)
SceneKit_中級(jí)01_模型之間的過(guò)渡動(dòng)畫(huà)
SceneKit_中級(jí)02_SCNView 詳細(xì)講解
SceneKit_中級(jí)03_切換照相機(jī)視角
SceneKit_中級(jí)04_約束的使用
SceneKit_中級(jí)05_力的使用
SceneKit_中級(jí)06_場(chǎng)景的切換
SceneKit_中級(jí)07_動(dòng)態(tài)修改屬性
SceneKit_中級(jí)08_陰影詳解
SceneKit_中級(jí)09_碰撞檢測(cè)
SceneKit_中級(jí)10_濾鏡效果制作
SceneKit_中級(jí)11_動(dòng)畫(huà)事件
SceneKit_高級(jí)01_GLSL
SceneKit_高級(jí)02_粒子系統(tǒng)深入研究
SceneKit_高級(jí)03_自定義力
SceneKit_高級(jí)04_自定義場(chǎng)景過(guò)渡效果
SceneKit_高級(jí)05 檢測(cè)手勢(shì)點(diǎn)擊到節(jié)點(diǎn)
SceneKit_高級(jí)06_加載頂點(diǎn)绵患、紋理豆茫、法線坐標(biāo)
SceneKit_高級(jí)07_SCNProgram用法探究
SceneKit_高級(jí)08_天空盒子制作
SceneKit_高級(jí)09_霧效果
SceneKit_大神01_掉落的文字
SceneKit_大神02_彈幕來(lái)襲
SceneKit_大神03_navigationbar上的3D文字
先認(rèn)識(shí)一個(gè)方法,這個(gè)方法在SCNView 里面
public func hitTest(_ point: CGPoint, options: [SCNHitTestOption : Any]? = nil) -> [SCNHitTestResult]
當(dāng)我們手點(diǎn)擊屏幕時(shí),要知道我們都點(diǎn)到了那些節(jié)點(diǎn),我們應(yīng)該怎么處理呢?
首先我們添加一個(gè)手勢(shì)到視圖中去
let tap = UITapGestureRecognizer(target: self, action: #selector(tapHandle(gesture:)))
scnView.addGestureRecognizer(tap)
然后,我們獲取點(diǎn)擊到的第一個(gè)節(jié)點(diǎn)
func tapHandle(gesture:UITapGestureRecognizer){
let results:[SCNHitTestResult] = (self.scnView?.hitTest(gesture.location(ofTouch: 0, in: self.scnView), options: nil))!
guard let firstNode = results.first else{
return
}
// 點(diǎn)擊到的節(jié)點(diǎn)
print(firstNode.node)
}
- 認(rèn)識(shí)類(lèi)SCNHitTestResult
open class SCNHitTestResult : NSObject {
/// 擊中的幾點(diǎn)
open var node: SCNNode { get }
/// 擊中的幾何體索引
open var geometryIndex: Int { get }
/// 擊中的面的索引
open var faceIndex: Int { get }
/// 擊中的本地坐標(biāo)系統(tǒng)
open var localCoordinates: SCNVector3 { get }
/// 擊中的世界坐標(biāo)系統(tǒng)
open var worldCoordinates: SCNVector3 { get }
/// 擊中節(jié)點(diǎn)的本地法線坐標(biāo)
open var localNormal: SCNVector3 { get }
/// 擊中的世界坐標(biāo)系統(tǒng)的法線坐標(biāo)
open var worldNormal: SCNVector3 { get }
/*! World transform of the node intersected. */
open var modelTransform: SCNMatrix4 { get }
/*! The bone node hit. Only available if the node hit has a SCNSkinner attached. */
@available(iOS 10.0, *)
open var boneNode: SCNNode { get }
/*!
@method textureCoordinatesWithMappingChannel:
@abstract Returns the texture coordinates at the point of intersection, for a given mapping channel.
@param channel The texture coordinates source index of the geometry to use. The channel must exists on the geometry otherwise {0,0} will be returned.
*/
open func textureCoordinates(withMappingChannel channel: Int) -> CGPoint
}
我們看出來(lái)姥宝,通過(guò)這個(gè)方法可以獲取的信息還是蠻多的,gei'qu