你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發基礎 >> iOS 10 SceneKit 新特性

iOS 10 SceneKit 新特性

編輯:IOS開發基礎

今天的主題是探索iOS10 SceneKit的新功能,你可以觀看今年WWDC的視頻Advances in SceneKit Rendering

SceneKit 介紹,SceneKit類似於Unity是一個制作3D物件的框架,很多3D游戲都可以基於這個框架進行開發,自幾年前和Swift一起推出到現在廣受歡迎。比如今年推出的Swift Playground就有用到SceneKit開發一個3D游戲幫助小盆友學習coding。

2751003-dc9da93e9da0ff8f.png

你可以看這裡對SceneKit有點基礎的了解Objc-SceneKit介紹

今年的SceneKit已經支持iWatch了,大東目前沒iWatch,不過覺得屏幕太小了,最多就是幾個3D的小部件吧。

Physically based rendering

今年最大的更新是提供了Physically based rendering(PBR),不懂可以上網查,簡單的說就是讓3D的物品更加3D了,我後面重點就是談談這個新的功能。

What's new in iOS 10 SceneKit: A new Physically Based Rendering (PBR) system allows you to leverage the latest in 3D graphics research to create more realistic results with simpler asset authoring

官方文檔談到的

PBR materials require only three fundamental properties— diffuse, metalness, and roughness—to produce a wide range of realistic shading effects.

相比之前,現在映射一個3D物體變得很容易,只要實現這3個變量 diffuse metalness roughness 即可。我們做一個小Demo更加幫助理解。

首先下載自己喜歡的物品材質,所謂的材質可以理解一個為意見物品的“皮膚”,你可以選擇喜歡的貼圖來實現不同的效果。下載網址

let materialPrefixes : [String] = ["Copper-scuffed"]
let material = sphereNode.geometry?.firstMaterial

// Declare that you intend to work in PBR shading mode
// Note that this requires iOS 10 and up
material?.lightingModel = SCNMaterial.LightingModel.physicallyBased
// Setup the material maps for your object
let materialFilePrefix = materialPrefixes[0]
material?.diffuse.contents = UIImage(named: "\(materialFilePrefix)-albedo.png")
material?.roughness.contents = UIImage(named: "\(materialFilePrefix)-roughness.png")
material?.metalness.contents = UIImage(named: "\(materialFilePrefix)-metal.png")

這裡就實現了物品材質的選擇,但是球的背景圖是怎麼實現的,怎麼會有倒攝的效果呢?

其實實現也很簡單,假設你把一個物體的LightingModel定位為PBR,只要提供一張全景照片就能夠將照片隱射到上面去

let env = UIImage(named: "interior_hdri_29_20150416_1169368110.jpg")
scene.lightingEnvironment.contents = env

注意,這裡的全景照片指的不是手機拍的全景照片而是高質量,專業效果拍攝出來的圖片,如果照片不合格,就會出現錯誤,如下示例圖。

2751003-99e020212b857cf0.jpg


當然還要有後面背景圖

let bg = UIImage(named: "interior_hdri_29_20150416_1169368110.jpg")
scene.background.contents = bg

注意觀察到它們是同一張圖

最後就會呈現如下的效果圖,我用Swift Playground可使,真是太強大了。我還加入了Core Motion,可以移動iPad來切換不同的視角,這同時也是VR View的制作方式呀,以後更新如何開發一個屬於iOS 的VR應用,並連接SceneKit,感覺以後發展可觀。

2751003-8b7b9c11596d3913.PNG

當然你還可以新建一個.scn文件來制作

先拖一個SphereNode

2751003-0c934a5b3e54a487.png

更改Material的屬性

2751003-3a7a5d8a5c572d1f.png

更改Lighting Environment 和 Background 屬性

2751003-522c1d8948a5f695.png

可以自己嘗試不同的3D物件,在Object-library上拖拽到.scn文件中即可

Physically Based Lights

Authors of PBR scene content often prefer working in physically based terms, so you can now define lighting using intensity (in lumens) and color temperature (in degrees Kelvin), and import specifications for real-world light fixtures using the IESProfileURL property.

2751003-080cb54111912f4f.png


今年對scnLight 的更新是新增一種燈源,就是可以在網上找到一種文件格式.ies,就可以導入不同格式的燈源。這對設計師來說應該是一個福利

//add a liteNode
let liteNode = SCNNode()
liteNode.light = SCNLight()
liteNode.light?.iesProfileURL = URL(fileReferenceLiteralResourceName: "LF6N_1_42TRT_F6LS73.ies")
liteNode.light?.type = .IES

HDR Camera

Add even more realism with the new HDR features and effects in the SCNCamera class. With HDR rendering, SceneKit captures a much wider range of brightness and contrast in a scene, then allows you to customize the tone mapping that adapts that scene for the narrower range of a device’s display. Enable exposure adaptation to create automatic effects when, for example, the player in your game moves from a darkened area into sunlight. Or use vignetting, color fringing, and color grading to add a filmic look to your game.

2751003-eda664cc179d8fbd.PNG


我也做了一個Demo來嘗試新的api效果,大東表示非常贊????,有一些屬性是支持Animate的,這在官方的Demo上有展示過一個效果場景就是當一個突然物體飛速移動時,周圍的場景會變有模糊效果,聯系一下開車場景,這種效果讓游戲開發變得更加逼真!

蘋果今年給SCNCamera添加了很多新的效果,可以找官方的APi文檔查找。

今年的 WWDC Demo

蘋果今年開源了兩個適合大家入們SceneKit的Demo,而且都有用Swift 3編寫,看Session到那裡時非常激動,現場也很多人鼓掌歡呼(表示大東很想去WWDC)

2751003-199356ae4d406905.png

2751003-0b8497eb21cc66ea.png

寫在最後,大東想說,SceneKit很強大,我也相信蘋果如果以後要推出VR,SceneKit這種制作3D場景的框架一定會被廣受利用。最近我還在探索如何用Google 的VR-iOS SDK來實現一個SceneKit場景。也希望能和大家交流學習。

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved