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ù)就算完成了
