SceneKit 材質(Material)

前言

光照與材質料祠,是決定模型怎么樣被渲染的關鍵參數(shù)骆捧,不同的設置帶來的直觀效果不一致澎羞,所以熟悉光照與材質髓绽,能夠快速調試到理想的效果。
SCNMaterialProperty.content決定了材質長什么樣子妆绞,可以是純色也可以是renderer(渲染)的顺呕,而renderer的數(shù)據(jù)源主要有以下四種:

  • UIImage
  • 全景格式的圖像,如cube images
  • CALayer
  • SpriteKit scene
  • SKTexture
visual properties
  • diffuse:指定了材質對光照的漫反射括饶,人眼看到的物體實際上就是人眼接收到物體的漫反射株茶,所以diffuse就是物理的基本樣貌(ps: ambient材質對環(huán)境光的漫反射,而diffuse已經包含了環(huán)境光和方向光的漫反射,當locksAmbientWithDiffuseNO時,ambient才生效图焰,一般情況下使用diffuse已經足矣)启盛。
-(void)viewDidLoad {
    SCNView *scnView  = [[SCNView alloc]initWithFrame:self.view.bounds];
    scnView.backgroundColor = [UIColor blackColor];
    scnView.scene = [SCNScene scene];
    scnView.allowsCameraControl = TRUE;
    [self.view addSubview:scnView];
    省略處......
    SCNSphere *sphere = [SCNSphere sphereWithRadius:2];
    SCNNode *sphereNode = [SCNNode nodeWithGeometry:sphere];
    [scnView.scene.rootNode addChildNode:sphereNode];
    sphere.firstMaterial.diffuse.contents =@"earth-diffuse.jpg"
}

運行效果如圖:

c88d60ba-8a07-4647-8c1b-dc342afd426b.png

可以看出物體太過貼近屏幕鳖粟,我們可以自己加個攝像頭SCNCamera标沪,在省略處加上

   SCNCamera *camera = [SCNCamera camera];
    SCNNode *cameraNode = [SCNNode node];
    cameraNode.camera = camera;
    camera.automaticallyAdjustsZRange = TRUE;
   //表示在z軸上距當前屏幕10個單位
    cameraNode.position = SCNVector3Make(0, 0, 10);
    [scnView.scene.rootNode addChildNode:cameraNode];

此時的效果是:


自定義攝像頭.gif

此時再添加一個環(huán)境光漠畜,在省略處接著添加上以下代碼

    SCNNode *ambientlightNode = [SCNNode node];
    ambientlightNode.light =[SCNLight light];
    ambientlightNode.light.type = SCNLightTypeDirectional;
    ambientlightNode.light.color = [UIColor whiteColor];
    [scnView.scene.rootNode addChildNode:ambientlightNode];

關于SCNLightType的多種類型瘾敢,有興趣的可以分別試下效果晃财,此時再運行

環(huán)境光.gif

  • normal指定了材質表面每個點的法線方向,在處理光照時,會根據(jù)normal計算陰影,它提供了一種假的幾何凸起。
sphere.firstMaterial.normal.contents = @"earth-bump.png";
之后.png

*reflective指定了材質對周圍環(huán)境的反射剪芥,物體表面會有周圍環(huán)境的倒影榜田。例如如果是在樹林里材質的表面應該會泛綠,在沙漠里則會泛黃

 sphere.firstMaterial.reflective.contents = @"earth-reflective.jpg"
  sphere.firstMaterial.fresnelExponent = 0
反射.png
  • emission:指定了材質便面發(fā)光(亮度較高)的位置具钥,emission并不能讓材質發(fā)光桃漾,只不過在計算光照時敦迄,emission紋理中較亮的點不會參與到光照計算中,使這些點在陰暗的環(huán)境下顯得更亮一些猛拴。
sphere.firstMaterial.emission.contents = @"earth-emissive.jpg"
散發(fā).png
//指定紋理或者顏色芳室,當此屬性設置的時候emission屬性將會被忽略
 sphere.firstMaterial.selfIllumination.contents = [UIColor blueColor];
紋理.png
  • transparent指定了材質上面每個點的透明度,不同于transparency控制的是整個材質的透明度雹拄,transparent精準的控制每個點。
   sphere.firstMaterial.transparent.contents = @"cloudsTransparency.png";
    sphere.firstMaterial.transparencyMode = SCNTransparencyModeRGBZero;
    sphere.firstMaterial.transparency = 0.5;

透明度.png

*multiply的內容念祭,會在材質被渲染之后粱坤,疊加在材質上站玄,multiply默認是無效的

sphere.firstMaterial.multiply.contents = [UIColor yellowColor];
黃色.png
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末钞瀑,一起剝皮案震驚了整個濱河市显晶,隨后出現(xiàn)的幾起案子七嫌,更是在濱河造成了極大的恐慌,老刑警劉巖吗蚌,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件腿倚,死亡現(xiàn)場離奇詭異,居然都是意外死亡褪测,警方通過查閱死者的電腦和手機猴誊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來侮措,“玉大人,你說我怎么就攤上這事乖杠》衷” “怎么了?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵胧洒,是天一觀的道長畏吓。 經常有香客問我,道長卫漫,這世上最難降的妖魔是什么菲饼? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮列赎,結果婚禮上宏悦,老公的妹妹穿的比我還像新娘。我一直安慰自己包吝,他們只是感情好饼煞,可當我...
    茶點故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著诗越,像睡著了一般砖瞧。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上嚷狞,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天块促,我揣著相機與錄音荣堰,去河邊找鬼。 笑死竭翠,一個胖子當著我的面吹牛持隧,可吹牛的內容都是我干的。 我是一名探鬼主播逃片,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼屡拨,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了褥实?” 一聲冷哼從身側響起呀狼,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎损离,沒想到半個月后哥艇,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡僻澎,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年貌踏,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片窟勃。...
    茶點故事閱讀 39,727評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡祖乳,死狀恐怖,靈堂內的尸體忽然破棺而出秉氧,到底是詐尸還是另有隱情眷昆,我是刑警寧澤,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布汁咏,位于F島的核電站亚斋,受9級特大地震影響,放射性物質發(fā)生泄漏攘滩。R本人自食惡果不足惜帅刊,卻給世界環(huán)境...
    茶點故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望漂问。 院中可真熱鬧赖瞒,春花似錦、人聲如沸级解。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽勤哗。三九已至抡爹,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間芒划,已是汗流浹背冬竟。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工欧穴, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人泵殴。 一個月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓涮帘,卻偏偏與公主長得像,于是被迫代替她去往敵國和親笑诅。 傳聞我的和親對象是個殘疾皇子调缨,可洞房花燭夜當晚...
    茶點故事閱讀 44,619評論 2 354

推薦閱讀更多精彩內容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn)吆你,斷路器弦叶,智...
    卡卡羅2017閱讀 134,652評論 18 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,079評論 25 707
  • 我認識你,永遠記得你妇多。那時候伤哺,你還很年輕,人人都說你美者祖,現(xiàn)在立莉,我是特地來告訴你,對我來說七问,我覺得現(xiàn)在的你比年輕的時...
    瑜珂閱讀 384評論 0 0
  • 我同學找我一起去吃肉蜓耻,我現(xiàn)在是可以過去的所以就答應了。哇果然是很久沒有吃肉烂瘫,這次吃了好多呢媒熊。 我們吃完了之后也沒有...
    愛夢的我閱讀 151評論 0 0