VR+全景播放器+頭控講解-02

VR+全景播放器+頭控講解-01-知識儲備
VR+全景播放器+頭控講解-02-創(chuàng)建球體
VR+全景播放器+頭控講解-03-渲染視頻
VR+全景播放器+頭控講解-04-滑動手勢
VR+全景播放器+頭控講解-05-伸縮畫面
VR+全景播放器+頭控講解-06-頭控實(shí)現(xiàn)
VR+全景播放器+頭控講解-07-分屏技術(shù)

學(xué)習(xí)目標(biāo)

如何創(chuàng)建一個渲染全景視頻的球體

實(shí)現(xiàn)步驟:

  • 第一步 創(chuàng)建一個應(yīng)用工程(略了)

  • 第二步 創(chuàng)建一個渲染視圖 繼承SCNView


    DFA47D5C-AE21-4A3A-8E53-858CBA60B647.png
  • 第三步 導(dǎo)入框架SceneKit

    #import <SceneKit/SceneKit.h>
    
  • 第四步 創(chuàng)建一個3D場景

    self.scene = [SCNScene scene];
    
  • 第五步 創(chuàng)建一個球體 然后將其添加到場景中去

    SCNNode *sphereNode = [SCNNode node];
    sphereNode.geometry = [SCNSphere sphereWithRadius:SHPERE_RADIUS];
    sphereNode.rotation = SCNVector4Make(1, 0, 0, -M_PI/2);
    [self.scene.rootNode addChildNode:sphereNode];
    
  • 第六步 我們知道現(xiàn)在球體是有了,但是我們還需要一個眼睛去觀察球體,在全景下,眼睛是根據(jù)重力感應(yīng),來調(diào)節(jié)觀察的角度,所以我們下面創(chuàng)建一個眼睛節(jié)點(diǎn),然后將其放入場景的中心點(diǎn)

     SCNNode *eyeNode = [SCNNode node];
     eyeNode = [SCNNode node];
     eyeNode.camera = [SCNCamera camera]; // 創(chuàng)建照相機(jī)對象 就是眼睛
     eyeNode.camera.automaticallyAdjustsZRange = true; // 自動添加可視距離
     eyeNode.camera.xFov = CAMERA_FOX; 
     eyeNode.camera.yFov =CAMERA_HEIGHT;
     eyeNode.camera.focalBlurRadius = 0;
    

xFov 和 yFov 看下圖理解一下


5226E55E-4FB9-48B2-9D07-9E3B84D65B37.png

思考問題1:

球體有兩個表面 一個外表面一個內(nèi)表面,在vr 模式下,我們的眼睛是在球體中間的,如何讓球體只渲染內(nèi)表面

       sphereNode.geometry.firstMaterial.cullMode = SCNCullModeFront;// 設(shè)置剔除外表面
       sphereNode.geometry.firstMaterial.doubleSided = false; // 設(shè)置只渲染一個表面

思考問題2:

球體的半徑設(shè)置多大?

不要設(shè)置太小即可,我設(shè)置的是10 注意這里沒有單位,根據(jù)屏幕的寬度和高度進(jìn)行相對運(yùn)算,屏幕上邊為1 下邊為-1 左邊為 -1 右邊為 1 根據(jù)照相機(jī)的視角就可以計(jì)算出幾何模型在視圖中的呈現(xiàn)的畫面大小了

本節(jié)的任務(wù)就算完成了

SceneKit 中文教程

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

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容