[SceneKit專題-OC]1.Hello SceneKit

  • 本系列文章的學(xué)習(xí)首先要感謝史前圖騰的共享精神,在他的系列文章中有詳細(xì)的解釋,但是他的代碼都是Swift寫的.并且代碼的解釋比較少,
  • 在這里我提供了demo-OC版供大家參考和學(xué)習(xí),
  • demo地址:
    OC-地址
    swif-地址

效果圖

知識(shí)點(diǎn)解析

Scenes:SCNScene

自帶一個(gè)定義了坐標(biāo)系的root node(根節(jié)點(diǎn)),使用scene gragh來(lái)組織場(chǎng)景,可以向內(nèi)部增加樹(shù)狀結(jié)構(gòu)的內(nèi)部節(jié)點(diǎn)(node),例如 lights光源, cameras相機(jī), geometry幾何體, particle emitters粒子發(fā)射源.
需要放到SCNView的實(shí)例中呈現(xiàn),SCNView在OSX(macOS)中是NSView的子類,在iOS中是UIView的子類;

左側(cè)樹(shù)狀結(jié)構(gòu)

image.png

坐標(biāo)系,屏幕外是+Z方向,坐標(biāo)使用向量表示,示例SCNVector3(x: 0, y: 5, z: 10)

image.png

Nodes:SCNNode

游戲中的每個(gè)元素都被稱為node(節(jié)點(diǎn)),存放在樹(shù)狀結(jié)構(gòu)scene gragh中,例如 lights光源, cameras相機(jī), geometry幾何體, particle emitters粒子發(fā)射源.每個(gè)scene graph中包含一個(gè)特殊的基礎(chǔ)節(jié)點(diǎn):root node(根節(jié)點(diǎn)),可以把其他節(jié)點(diǎn)添加到節(jié)點(diǎn)下面,變成它的子節(jié)點(diǎn).

添加到scene中的node,默認(rèn)在(x:0, y:0, z:0),即相對(duì)于父節(jié)點(diǎn)的位置.要想調(diào)整節(jié)點(diǎn)在父節(jié)點(diǎn)的位置,應(yīng)該調(diào)整local coordinates(本地坐標(biāo)系),而不是調(diào)整world coordinates(世界坐標(biāo)系).

注意
默認(rèn)情況下,如果一個(gè)場(chǎng)景中沒(méi)有任何改變時(shí),Scene Kit會(huì)進(jìn)入"paused"(暫停)狀態(tài),為了防止這種情況,需要在創(chuàng)建SCNView實(shí)例時(shí)設(shè)置playing屬性為true如

scnView.playing = true
camera

攝像機(jī)的顯示范圍控制,小球zNear不顯示,大于zFar不顯示.添加到一個(gè)空節(jié)點(diǎn)的camera屬性里

image.png
 // SCNScene - 默認(rèn)有一個(gè)根節(jié)點(diǎn)
    SCNScene *scene = [SCNScene new];
    // 將該場(chǎng)景添加到 SCNView 上 否側(cè)該場(chǎng)景無(wú)法顯示
    scenView.scene = _scene = scene;
    scene.background.contents = [UIImage imageNamed:@"Background_Diffuse"];
    
    // 創(chuàng)建一個(gè)相機(jī)節(jié)點(diǎn)
    SCNNode *node = [SCNNode new];
    node.camera = [SCNCamera new];
    node.position = SCNVector3Make(0, 5, 10);
    // 將其添加到根節(jié)點(diǎn)上
    [scene.rootNode addChildNode:node];

primitives geometry(原生幾何體)

系統(tǒng)自帶了很多基礎(chǔ)的幾何體,添加到一個(gè)空節(jié)點(diǎn)的geometry屬性里
第一排從左起:cone(圓錐體), torus(圓環(huán)體), capsule(膠囊體), tube(管道)
第二排從左起:pyramid(四棱錐), box(長(zhǎng)方體), sphere(球體), cylinder(圓柱體)

image.png

SCNView內(nèi)置屬性

// SCNView
    SCNView *scenView = [SCNView new];
    scenView.backgroundColor = [UIColor redColor];
    scenView.frame = self.view.bounds;
    scenView.showsStatistics = true; // 顯示統(tǒng)計(jì)數(shù)據(jù)
    scenView.allowsCameraControl = true; // 打開(kāi)相機(jī)控制
    scenView.autoenablesDefaultLighting = true; // 打開(kāi)默認(rèn)光源 _  如果該選項(xiàng)不打開(kāi) 幾何體的效果將無(wú)法顯示
    [self.view addSubview:scenView];

1.showsStatistics在底部顯示一個(gè)實(shí)時(shí)的統(tǒng)計(jì)條,左側(cè)+號(hào)點(diǎn)擊可展開(kāi);
2.showsStatistics允許使用簡(jiǎn)單手勢(shì)控制相機(jī)
-單指滑動(dòng):旋轉(zhuǎn)相機(jī);
-雙指滑動(dòng):移動(dòng)相機(jī);
-雙指捏合:縮放;
-雙擊:如果有兩個(gè)相機(jī)則切換,一個(gè)相機(jī)則返回原始狀態(tài);
3.autoenablesDefaultLighting創(chuàng)建一個(gè)通用的全方向光源;

fps:幀率,每秒渲染的畫面數(shù)
◆:每幀畫面渲染的總物體數(shù),多光源照射同一物體時(shí)會(huì)渲染多次
▲:每幀畫面渲染的多邊形總數(shù)量,
?:可見(jiàn)的光源總數(shù)(影響物體的光源), Scene Kit推薦不要同時(shí)使用3個(gè)以上光源

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子悯嗓,更是在濱河造成了極大的恐慌沥寥,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,042評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件既忆,死亡現(xiàn)場(chǎng)離奇詭異驱负,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)患雇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門跃脊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人苛吱,你說(shuō)我怎么就攤上這事酪术。” “怎么了翠储?”我有些...
    開(kāi)封第一講書人閱讀 156,674評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵拼缝,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我彰亥,道長(zhǎng)咧七,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 56,340評(píng)論 1 283
  • 正文 為了忘掉前任任斋,我火速辦了婚禮继阻,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘废酷。我一直安慰自己瘟檩,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布澈蟆。 她就那樣靜靜地躺著墨辛,像睡著了一般。 火紅的嫁衣襯著肌膚如雪趴俘。 梳的紋絲不亂的頭發(fā)上睹簇,一...
    開(kāi)封第一講書人閱讀 49,749評(píng)論 1 289
  • 那天奏赘,我揣著相機(jī)與錄音,去河邊找鬼太惠。 笑死磨淌,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的凿渊。 我是一名探鬼主播梁只,決...
    沈念sama閱讀 38,902評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼埃脏!你這毒婦竟也來(lái)了搪锣?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 37,662評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤彩掐,失蹤者是張志新(化名)和其女友劉穎构舟,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體佩谷,經(jīng)...
    沈念sama閱讀 44,110評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡旁壮,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了谐檀。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片抡谐。...
    茶點(diǎn)故事閱讀 38,577評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖桐猬,靈堂內(nèi)的尸體忽然破棺而出麦撵,到底是詐尸還是另有隱情,我是刑警寧澤溃肪,帶...
    沈念sama閱讀 34,258評(píng)論 4 328
  • 正文 年R本政府宣布免胃,位于F島的核電站,受9級(jí)特大地震影響惫撰,放射性物質(zhì)發(fā)生泄漏羔沙。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評(píng)論 3 312
  • 文/蒙蒙 一厨钻、第九天 我趴在偏房一處隱蔽的房頂上張望扼雏。 院中可真熱鬧,春花似錦夯膀、人聲如沸诗充。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,726評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)蝴蜓。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間茎匠,已是汗流浹背格仲。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,952評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留汽抚,地道東北人抓狭。 一個(gè)月前我還...
    沈念sama閱讀 46,271評(píng)論 2 360
  • 正文 我出身青樓伯病,卻偏偏與公主長(zhǎng)得像造烁,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子午笛,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 說(shuō)明 本系列文章是對(duì)<3D Apple Games by Tutorials>一書的學(xué)習(xí)記錄和體會(huì) 此書對(duì)應(yīng)的代碼...
    蘋果API搬運(yùn)工閱讀 5,740評(píng)論 13 32
  • (一) AR(增強(qiáng)現(xiàn)實(shí)技術(shù))介紹 增強(qiáng)現(xiàn)實(shí)(Augmented Reality药磺,簡(jiǎn)稱 AR)告组,是一種實(shí)時(shí)地計(jì)算攝影...
    NewSongs閱讀 2,301評(píng)論 5 53
  • 說(shuō)明 本系列文章是對(duì)<3D Apple Games by Tutorials>一書的學(xué)習(xí)記錄和體會(huì)此書對(duì)應(yīng)的代碼地...
    蘋果API搬運(yùn)工閱讀 2,081評(píng)論 0 3
  • 又是忙碌卻在兩點(diǎn)半結(jié)束了,很開(kāi)心這樣匆匆的有事情癌佩,并不像在搞事情木缝,我就知道不管順不順利都會(huì)有結(jié)局在等待,總有人不滿...
  • 又是一個(gè)周末围辙,我要去思匯上課了我碟。我偷偷的跑進(jìn)了電梯,我按了幾下姚建,電梯內(nèi)部又變了矫俺。我把時(shí)光按鈕調(diào)成了1937年8月1...
    Kevin劉華濤閱讀 204評(píng)論 0 0