SceneKit框架之SCNCamera

SCNCamera原理分析之視角

Show me the Code!

首先創(chuàng)建一個場景

import UIKit
import SceneKit

class ViewController4: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
 
        // 場景視圖
        let scnView = SCNView.init(frame: view.bounds)
        scnView.backgroundColor = UIColor.black
        scnView.allowsCameraControl = true
        scnView.scene = SCNScene()
        view.addSubview(scnView)
        
        // 盒子1
        let box1 = SCNBox.init(width: 10, height: 10, length: 10, chamferRadius: 0)
        box1.firstMaterial?.diffuse.contents = UIImage.init(named: "bw")
        let boxNode1 = SCNNode()
        boxNode1.geometry = box1
        scnView.scene?.rootNode.addChildNode(boxNode1)
        
        // 盒子2
        let box2 = SCNBox.init(width: 10, height: 10, length: 10, chamferRadius: 0)
        box2.firstMaterial?.diffuse.contents = UIImage.init(named: "bw")
        let boxNode2 = SCNNode()
        boxNode2.geometry = box2
        boxNode2.position = SCNVector3Make(0, 10, -20)
        scnView.scene?.rootNode.addChildNode(boxNode2)
        
        // todoyy: 如何給六面體設置不同的image?
        
        // 添加照相機
        let camera = SCNCamera()
        let cameraNode = SCNNode()
        cameraNode.camera = camera
        cameraNode.position = SCNVector3Make(0, 0, 50)
        scnView.scene?.rootNode.addChildNode(cameraNode)
    }
}
運行效果
幾個重要的屬性設置效果
調(diào)節(jié)視角
        camera.xFov = 20  
        camera.yFov = 40 

以上兩個屬性在iOS 11已經(jīng)廢棄了,改用以下兩個屬性

        camera.fieldOfView = .pi*6 //  視角,默認60°【值越小,看到的物體細節(jié)越在前面,即被放大】
        camera.focalLength = 5    //  焦距,默認50mm【值越小,看到的物體越遠】
調(diào)節(jié)視角

設置視野遠近范圍

        camera.zNear = 45 // 相機能照到的最近距離,默認1m
        camera.zFar = 60 //相機能照到的最遠的距離,默認100m

這個有趣,讀者可以自己手動旋轉(zhuǎn)場景看看效果

視野遠近范圍
設置焦距
        camera.focusDistance = 45 // 焦距 默認2.5
        camera.focalBlurSampleCount = 1 // 設置聚焦時,模糊物體模糊度 默認0
設置焦距,這里效果似乎不明顯

設置正投影

        // 設置正投影【即:物體不論靠近或者遠離,大小看起來都一樣】
        camera.usesOrthographicProjection = true 
        // 正投影比例 默認1【當且僅當usesOrthographicProjection == true 時有效】
        camera.orthographicScale = 20 
大小真的都一樣耶?。。。。。。。?!

示例代碼集,,內(nèi)有集成SceneKit基本場景功能實例

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

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

  • 感賞我自己會回頭反思自己的一言一行,進行自我檢討。 感賞我自己能處理好情緒不像以前一樣的固執(zhí)。 感賞我自己堅持學習...
    貴州六年級莊杰閱讀 339評論 0 3
  • 當我睜開眼睛,看見燦爛的陽光映照在窗簾上,我緩緩地爬起,打開窗簾,望著窗外,只見藍天白云,風景宜人,完全沒有被昨晚...
    戈雅楊閱讀 428評論 0 0
  • ——致和我同時代的農(nóng)民工朋友 大哥大哥,你從15歲輟學那年來到了南方 來到一座陌生的城市 好奇大城市一切新鮮的事物...
    煙雨蒙蒙_522b閱讀 316評論 0 2
  • 云的母親是很喜歡放暑假的,每每這個時候,不但天天可以看到孩子,她那些懂事的孩子總是幫她分擔很多事。 四個孩子中云最...
    洛清歡閱讀 344評論 8 13
  • 曾經(jīng)那么羨慕目標明確的人,所以給自己做了很多規(guī)劃,可是事情總是多變的.身邊的人在你遇到困難時會按自己的經(jīng)驗來給你提...
    簡單的太陽閱讀 217評論 0 0

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