iOS 10 SceneKit 新特性 – SceneKit 製作 3D 場景框架

發表於2016-11-04

開頭語:

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

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

112751003-dc9da93e9da0ff8f
Swift Playground

你可以看這裡對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更加幫助理解。

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

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

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

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

122751003-99e020212b857cf0
圖片源於網路

當然還要有後面背景圖

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

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

132751003-8b7b9c11596d3913

當然你還可以新建一個.scn檔案來製作

  • 先拖一個SphereNode
    142751003-0c934a5b3e54a487
  • 更改Material的屬性
    152751003-3a7a5d8a5c572d1f
  • 更改Lighting Environment 和 Background 屬性
    162751003-522c1d8948a5f695

可以自己嘗試不同的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.

172751003-080cb54111912f4f

今年對scnLight 的更新是新增一種燈源,就是可以在網上找到一種檔案格式.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.

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

蘋果今年給SCNCamera新增了很多新的效果,可以找官方的APi文件查詢。

今年的 WWDC Demo

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

192751003-199356ae4d406905
202751003-0b8497eb21cc66ea

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

相關文章