從零開始做一個ARKit項目

環(huán)境:xcode9、iOS11以上
設備:A9以上處理器iOS設備
1、創(chuàng)建項目:


創(chuàng)建項目

注意:
此處必須得iOS11以上
項目原始代碼

效果

2、創(chuàng)建場景:

SCNScene *scene = [SCNScene scene];
self.sceneView.scene = scene;

3、創(chuàng)建模型:

SCNBox *box = [SCNBox boxWithWidth:0.1 height:0.1 length:0.1 chamferRadius:0];
//此處可以創(chuàng)建多種形式的模型,也可以像示例那樣加載 3D模型(obj/scn/dae),此處僅以幾何模型為例。

4、創(chuàng)建節(jié)點并設置節(jié)點位置:

    //創(chuàng)建節(jié)點
    SCNNode *node = [SCNNode node];
    //設置節(jié)點位置
    node.position = SCNVector3Make(0, 0, -0.3);

5、將模型設置為節(jié)點幾何

//將場景節(jié)點幾何設置為創(chuàng)建的box
    scene.rootNode.geometry = box;

6、渲染模型

    //模型渲染,將模型渲染成白色
    SCNMaterial *material = [SCNMaterial material];
    material.diffuse.contents = [UIColor whiteColor];
    box.materials = @[material];

效果圖如下:


效果圖1

但是這是不是太不好看了呢?我們可以嘗試下把圖片放到模型上嗎?

7、將圖片渲染到模型:
我們先嘗試將一張圖片渲染上去

material.diffuse.contents = [UIImage imageNamed:@"不約.png"];
效果圖2

我們發(fā)現渲染模型那里渲染器的設置是一個數組,那么我們嘗試創(chuàng)建多個渲染器添加進去試試:

SCNMaterial *material = [SCNMaterial material];
    material.diffuse.contents = [UIImage imageNamed:@"不約.png"];
    SCNMaterial *material1 = [SCNMaterial material];
    material1.diffuse.contents = [UIImage imageNamed:@"哎沒人約.png"];
    SCNMaterial *material2 = [SCNMaterial material];
    material2.diffuse.contents = [UIImage imageNamed:@"愛你們喲.png"];
    SCNMaterial *material3 = [SCNMaterial material];
    material3.diffuse.contents = [UIImage imageNamed:@"不要在背后說我?guī)?png"];
    SCNMaterial *material4 = [SCNMaterial material];
    material4.diffuse.contents = [UIImage imageNamed:@"好好當狗.png"];
    SCNMaterial *material5 = [SCNMaterial material];
    material5.diffuse.contents = [UIImage imageNamed:@"姐不需要男票.png"];
    box.materials = @[material,material1,material2,material3,material4,material5];
效果圖3
效果圖4

結果發(fā)現六張圖都渲染到了正方體的六個面,有興趣的還可以嘗試下GIF圖的渲染,跟圖片時一樣的,此處就不做演示了。

8、渲染視頻呢?可以嗎?接下來我們就嘗試下渲染視頻:操作類似于渲染圖片

    NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@",[[NSBundle mainBundle] pathForResource:@"柳州IP宣傳片_15秒.mp4" ofType:nil]]];
    AVPlayerItem *playItem = [AVPlayerItem playerItemWithURL:url];
    AVPlayer *player = [AVPlayer playerWithPlayerItem:playItem];
    [player play];
    material.diffuse.contents = player;
效果圖5

9、此外,還可以創(chuàng)建除了SCNBox以外的其他幾何模型,常見的幾何模型有:SCNText(文字)、SCNBox(盒子)、SCNSphere(球體)、SCNPlane(平面)、SCNPyramid(錐形)、SCNCylinder(圓柱)、SCNCone(圓錐)、SCNTube(管道)、SCNCapsule(膠囊)、SCNTorus(圓環(huán))、SCNFloor(地板)等,有興趣的可以嘗試一下。


示例圖

到這里我們第一個簡單的ARKit體驗就完成了,是不是很好玩呢?還有更多更好玩的東西,繼續(xù)學習吧,哈哈哈

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴謹 對...
    cosWriter閱讀 11,666評論 1 32
  • 前端開發(fā)者丨h(huán)ttp請求 https:www.rokub.com 前言見解有限, 如有描述不當之處, 請幫忙指出,...
    麋鹿_720a閱讀 11,292評論 11 31
  • 01,最近在大學朋友群里比較活躍,突然意識到也是一直以來自己都知道的問題,我交際上,容易犯這么幾個錯誤:第一,朋友...
    倚窗風景閱讀 186評論 0 0
  • 今天一天很累,狀態(tài)也不好,孩子沒睡午覺晚上還搞得很晚才睡,一天下來也沒擠出屬于自己的時間,洗完澡吹好頭發(fā)躺到床上已...
    韻之加油閱讀 183評論 0 1
  • 走進了一家理發(fā)店 撲面而來的 是專屬于 理發(fā)店的味道 讓我有片刻的眩暈 這種味道 我不喜歡 店里有 開到很足的暖氣...
    玫瑰小姐在樹上閱讀 122評論 2 4

友情鏈接更多精彩內容