Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
在玩 HDRP 的內置 Lit 著色器的時候,對它的 Mask Map 貼圖很感興趣,感覺似乎能夠為材質添加很多細節
不使用 Mask Map
使用 Mask Map
查了下文檔,發現 Mask Map 是分 RGBA 通道作為灰度蒙版,為材質添加金屬度、環境光遮蔽、細節貼圖蒙版與粗糙度效果的:
讓我最感興趣的是 A 通道的粗糙度蒙版,就像上圖那樣,能營造出非常類似物體表面的水霧的感覺。
恩..如果我用 Shader 讓這個 A 通道做一個平移,再加點噪聲,說不定就能做出來類似下雨時物體表面潺潺流水的效果?
使用 ShaderGraph 的 Time
與Tilling and Offset
節點將 UV 做一個平移,加上線性噪聲節點做一些扭曲,添加一點隨機性。最后直接復用原材質的 Mask Map 的 A 通道并應用擾動。用一個布爾來控制是否應用效果。添加各種屬性值就不說了。應該還不錯。
在實現過程中,由于 HDRP 的內置 Lit 著色器沒有 ShaderGraph 版本,就從論壇上找了一個官方的 Lit 著色器的 ShaderGraph 版本,基于它進行修改。
整體(糊也沒事..大部分是官方給的,用于實現 Lit 的特性,核心就那上面的一小點)
核心效果實現(就這幾個節點..真的挺簡陋的..)
磚墻材質
石碑(?) 材質
模型效果
這是個很粗糙的效果,用到的節點也很少,之后要實際應用的話肯定要補充很多細節,比如單獨做水流的 Mask 應該會好很多
個人認為的效果優缺點:
優點:
和網上其他的雨水效果比起來,對性能影響應該蠻低的。加上天氣效果以及一些點綴應該也能實現不錯的效果
簡單啊(連我都能做出來..),直接復用材質自己的 Mask Map 也懶省事了
因為不同材質的 Mask Map 不同,所以這個效果也會帶有各自材質的特點,不會說效果千篇一律看著疲勞
缺點:
對于較為光滑的平面類物體感覺效果比較一般
因為復用了原材質的 Mask Map,應用效果時材質自身的粗糙度會丟失,不太好
可遠觀而不可褻玩(bushi),在遠處看起來還不錯,如果離得太近的話就能比較明顯的看出來違和的平移與噪聲
總之還是個很粗糙的效果,不過這種思路應該還是有點意思的,必能活用于下一次..
https://forum.unity.com/threads/trying-to-replicate-the-hdrp-lit-shader-i-need-help-with-the-detail-input-part.660538/Unity Forum-ShaderGraph 版 Lit 原貼
https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@7.1/manual/Mask-Map-and-Detail-Map.htmlMask Map 文檔
https://github.com/OnyxAmber/UnityHDRP_ShaderGraphTest把著色器圖與材質傳到 Github 上了,項目太大就不傳了,直接拖入 Unity 窗口即可。使用貼圖也是 HDRP 自帶的示例。
周,中國"奮斗者"號載人潛水器兩次"打卡"馬里亞納海溝,坐底深度 10909 米,創造了中國載人深潛的新紀錄,標志著我國的深潛事業又邁上了一個嶄新的臺階。昨天, "奮斗者"號再次進行了萬米級海試。
從淺海到深海,從潛水者到深潛器,人類是如何一步步走向海底的?而制造一臺深潛器有多難?
01 偉大的先行者們
神秘的海洋自古以來就是孕育神秘傳說和偉大探索夢想的溫床。幾十米長粗壯腕足的海怪、西方的塞壬和東方的鮫人、失落的亞特蘭蒂斯、居住著龍王的海底龍宮 …… 無數神話與科幻作品的靈感來源于那片深藍,而人類對于它的探索也從未停止過。
《海王尼普頓》,作者 Antoine Coysevox
受限于技術條件與財富水平,古人們對海水深處的探索大多停留于淺表。對于沒有潛水器具的他們來說,幾十米深的水下就已經危險重重了。即使是這樣,古人還是為后人留下了寶貴潛水經驗。
在公元前 4 世紀,波斯帝國就出現了世界上最早的職業潛水者——負責從海底的沉船中打撈貨物和珠寶。此外,地中海東岸采珍珠的腓尼基人、日韓等地的海女以及我國廣東地區的古代疍民,也用肉身探索了全球各地物產較為豐富的近海海域。雖然他們所使用的潛水工具只是一些簡單的麻繩、石塊或者充氣動物膀胱,下海的初衷也是生活所迫,但客觀上,這些先民們的確是人類探索海平面以下世界的先行者。
韓國海女(圖片來源:miss 貓大人 /lvmama.com)
16 世紀,英國科學家威廉 · 伯恩第一次提出了潛水艇的設想。他在 1578 年設計了一艘由皮革密封,以木條為骨架,可以在水下滑行的"木桶"。
威廉 . 伯恩 1578 年構想的潛艇原理圖(Submarine by William Bourne, in Inventions or devices, 1578.)
威廉 . 伯恩的"木桶"具體是什么樣子已不可考,但是毫無疑問,這艘"潛水艇"的誕生為那個時代的工程師們打開了新世界的大門。他們開始思考一種之前從未設想過的交通方式。40 年后,荷蘭人科尼利斯 · 德雷貝爾在英王詹姆斯一世的支持下,制造出了世界上第一艘憑借人力驅動可以在水下航行的船只,這是世界上第一艘人力潛艇,也是現代潛艇的雛形。
科尼利斯 · 德雷貝爾潛艇復原圖 (https://www.hisour.com/zh/cornelis-drebbel-13858/)
02 從潛艇到深潛器
潛水艇的出現極大地開闊了人類的視野,從此之后那層厚厚的海水開始慢慢變"薄",深海的迷霧被人類逐漸揭開。但是,潛水艇的下潛深度非常有限,各種潛艇的工作極限深度只有幾百米,想要下潛到更深處,普通的潛水艇是遠遠不夠的,需要專門的深潛器。
深海的巨大水壓為有別于潛艇的深潛器提出了完全不同的要求。1928 年,美國人巴頓用鋼鐵制造了一個球型潛水裝置。這個"球"內置簡單的照明、呼吸和通訊設施,至于動力系統、生命維持系統之類現代深潛器標配一概欠奉,只是靠著與母船連接的一條鋼索 + 電纜下潛與上浮。
貝比和巴頓的潛水球剖面示意圖(圖片來源:中國艦船研究)
1934 年,巴頓和一名叫比伯的博物學家下潛到了 923 米的深度。后來,比伯還把下潛的經歷寫成了一本書,向公眾詳細描述了他們看到的海底世界。不過受限于當時的攝影技術,他們在海底并未取得可靠的影像資料,只能靠話語描述讓畫師畫出他們所見到的海底生物的樣子。他所講述的奇特海底生物一時之間讓他成為了科學界的笑柄——那時的人們還都以為那么深的海底是生命的禁區吶。
巴頓和貝比(左)(圖片來源:中國艦船研究)
03 向更深處進發!
不過向深淵進發、探索未知的欲望還是驅使著人類不斷下到更深。之后的幾十年里,深海探測技術的發展勢頭如火如荼,最值得一提的深潛器有兩臺:
一是瑞士探險家皮卡德在巴頓的球型深潛器基礎上改進、建造的"迪里亞斯特號"。它因 1960 年作為第一臺深潛至馬里亞納海溝底部的載人潛水器而名留青史。
迪里亞斯特號(圖片來源:維基百科)
另一臺則是 1964 年服役的美國"阿爾文號"。它的下潛深度 4500 米雖然不到迪里亞斯特號的一半,但它在接近 40 年的服役時間中下潛了 4000 多次,是深潛器界當之無愧的"勞動模范"。再加上 4500 這個下潛深度其實已經足夠探索全球絕大部分的深海區域,故而在深海探測領域它居功甚偉。
阿爾文號潛艇(圖片來源:維基百科)
此外,美國 "深海挑戰者"號、日本"深海 6500 "號、俄羅斯"和平一號"、法國"鸚鵡螺"號載人深潛器也是深潛器家族中赫赫有名的成員。當然,我們不會忘記中國的"蛟龍號"和"深海勇士"號。在這里插一個有關于 "蛟龍號"的小知識點,蛟龍的最大下潛深度是 7062 米,這個深度足以讓它探索全球海洋的 99.8% 的區域,而這次下潛的"奮斗者號",它的目標就是那僅剩的 0.2%。
"鸚鵡螺號" 載人深潛器(圖片來源:亥姆霍茲海洋研究所)
04 深潛器,真的不是你想造就能造
仔細一看上面擁有深潛器的國家名單就會發現,深潛器家族雖然看上去欣欣向榮,許多國家都參與到深海科研項目當中,但是能制造深潛器的,迄今為止還是那寥寥數個科技大國。
可能有人會覺得奇怪,人類在 1960 年就已經制造出了能夠深入到馬里亞納海溝底部的潛水器,為什么 60 年過去了,能制造深潛器的國家還是只有美、法、俄、日、中等寥寥幾個國家呢?制造一臺深潛器的技術門檻究竟在哪兒?
其實,深潛器制造就像航天工程,是一個由多種工業部門協同合作才能成行的"大項目"。我們來舉幾個例子:
1. 拋掉與母船連接的粗笨"辮子"。要潛到幾千米深的水下,像巴頓那樣的構造簡單的"金屬球"是萬萬不夠的。它的體積太過狹小,沒法容納更多的空氣,下潛時間十分有限;只能由鋼索牽引上浮與下沉,活動范圍受限于母船以及鋼索長度不說,隨著鋼索的不斷加長,鋼索斷裂的風險也會隨著深度增加而飛速上升。
深潛器必須學會在近萬米深的水下自己上浮與下潛、巡航與懸停。為實現上浮與下潛,目前潛航員們主要的工具是電磁鐵,利用電磁鐵在深潛器外部或特殊艙室吸住一塊塊壓載鐵或鐵砂,使深潛器的整體密度大于海水實現下潛,而在上浮時只需要拋掉這些東西就可以了。
蛟龍號下潛過程示意圖(圖片來源:央視視頻)
2. 讓深潛器與海面保持通訊。水下的情形十分復雜,紛擾的海流、好奇的海洋生物、操作過程中可能產生的誤差都是對深潛器的威脅,深潛器必須時刻保持與母船的通訊。但是,電磁波在水下的衰減非常快,最遠通訊的距離還不到千米。因為聲波在水中傳播時衰減遠小于電磁波,就成了第一選擇。目前,世界上最可靠的水下通信技術就是水聲通信,是一種將聲音信號轉化為電信號,再將電信號轉化為聲波頻率在 4000 赫茲左右聲信號的連續套娃技術。
水聲通信應用示意圖(https://kknews.cc/science/9x56kl5.html)
簡單的描述是無法說明這項技術到底有多難的,海洋聲音場中混雜著船舶噪聲、水流回聲以及魚類和其他海洋生物發出的其他聲音,如何對海水中傳來的聲波進行正確的辨別接受和轉化是一個巨大的難題。所以光是這項技術就能將地球上的大部分軍事科研能力弱的國家攔在門外。
3. 深海對深潛器最大的考驗還是巨大的壓強。如果我們把一輛日常生活中常見的油罐車丟入海里,在空載的情況下大概十幾二十米的水深就足以把它壓成一片扭曲的鐵皮。在萬米深海,深潛器其他部位也是灌滿了海水,內外壓強一致不至于被壓成廢鐵,但是裝有深潛員的球狀載人艙不成,它的表面每一個點所承受的壓強大概為 100.6MPa,換算成人話就是每平方米 1 萬噸的壓力,"也就"六分之一艘遼寧艦而已 …… 所以,為應對更加極端的深海我們需要特殊材料。
左邊是承受了深水高壓的保溫壺(https://www.zhihu.com/question/47453175)
一般來說,高強度、高韌性、十分穩定、抗腐蝕(并且十分昂貴)的鈦合金是最合適制造潛水倉的材料,所以,這一步又趕走了大量在新材料領域科研經費拮據的國家。我國在奮斗者號上使用的是我國自主研發的全新高強高韌鈦合金,理論屈服應力達到或者超過了 820MPa,足以應對深海的巨大水壓。
4. 加工技術。深潛器的零件制造、冷彎、焊接,精密加工等等,哪個都不是一個制造業弱國玩得轉的。舉個例子,蛟龍號的加工精度大概是一根頭發絲的 50 分之一,且由于害怕機械加工可能造成的金屬劃痕,這項工作只能由技術高超的工人手工完成。
安裝時還要注意,全程不能產生一點劃痕或者在儀器的縫隙間掉入一點異物,否則深海巨大的壓強會將這個不起眼的縫隙撕開一個巨大的口子。此外,操控、供氧、電池、照明、影像 …… 無不考驗著一個國家的精密儀器制造、電子工程技術等等方面的能力。
05 結語
這次下水的奮斗者號萬米深潛器是貨真價實的"大國重器",它不僅意味著我國邁向國際深潛設施制造前列,更代表著我國將來在深海地質、環境污染、生命起源等重大課題領域國際話語權的提升。讓我們再一次祝賀"奮斗者號"!
最后,用 "蛟龍"號首批潛航員、"載人深潛英雄"傅文韜的話來結束吧:"深海探測,既是海洋資源勘探、科學研究的需要,也是環境保護的需要。作為深海探測的重要一環,我國載人深潛事業的不斷發展,推動了海洋強國的建設,大大提升了我們的民族自信心和自豪感。"
聲明:轉載此文是出于傳遞更多信息之目的。若有來源標注錯誤或侵犯了您的合法權益,請作者持權屬證明與本網聯系,我們將及時更正、刪除,謝謝。
來源: 科學大院
本概念
這些基本概念有些可能不易理解但卻都很重要,如果看完還是很不理解的話需要自己谷歌或百度,網上關于這些概念的文章不少。
流
“流”又叫文檔流,是css的一種基本定位和布局機制。流是html的一種抽象概念,暗喻這種排列布局方式好像水流一樣自然自動。“流體布局”是html默認的布局機制,如你寫的html不用css,默認自上而下(塊級元素如div)從左到右(內聯元素如span)堆砌的布局方式。
塊級元素和內聯元素
這個大家肯定都知道。
塊級元素是指單獨撐滿一行的元素,如div、ul、li、table、p、h1等元素。這些元素的display值默認是block、table、list-item等。
內聯元素又叫行內元素,指只占據它對應標簽的邊框所包含的空間的元素,這些元素如果父元素寬度足夠則并排在一行顯示的,如span、a、em、i、img、td等。這些元素的display值默認是inline、inline-block、inline-table、table-cell等。
實際開發中,我們經常把display計算值為inline inline-block inline-table table-cell的元素叫做內聯元素,而把display計算值為block的元素叫做塊級元素。
我自己是一名從事了多年開發的web前端老程序員,目前辭職在做自己的web前端私人定制課程,今年年初我花了一個月整理了一份最適合2019年學習的web前端學習干貨,各種框架都有整理,送給每一位前端小伙伴,想要獲取的可以關注我的頭條號并在后臺私信我:前端,即可免費獲取。
width: auto 和 height: auto
width、height的默認值都是auto。
對于塊級元素,width: auto的自動撐滿一行。
對于內聯元素,width: auto則呈現出包裹性,即由子元素的寬度決定。
無論內聯元素還是塊級元素,height: auto都是呈現包裹性,即高度由子級元素撐開。但是父元素設置height: auto會導致子元素height: 100%百分比失效。
流體布局之下,塊級元素的寬度width: auto是默認撐滿父級元素的。這里的撐滿并不同于width: 100%的固定寬度,而是像水一樣能夠根據margin不同而自適應的寬度。
css的屬性非常有意思,正常流下,如果塊級元素的width是個固定值,margin是auto,則margin會撐滿剩下的空間;如果margin是固定值,width是auto,則width會撐滿剩下的空間。這就是流體布局的根本所在。
外在盒子和內在盒子
外在盒子是決定元素排列方式的盒子,即決定盒子具有塊級特性還是內聯特性的盒子。外在盒子負責結構布局。
內在盒子是決定元素內部一些屬性是否生效的盒子。內在盒子負責內容顯示。
如 display: inline-table; 外在盒子就是inline,內在盒子就是table。外在盒子決定了元素要像內聯元素一樣并排在一排顯示,內在盒子則決定了元素可以設置寬高、垂直方向的margin等屬性。如下圖
右側的table和左側的文字在一行排列(外在盒子inline的表現特征),同時有擁有自定義寬度111px(內在盒子table可以設置寬高)。
css權重和超越 !important
曾經有道面試題把我難住了:
// 假設下面樣式都作用于同一個節點元素`span`,判斷下面哪個樣式會生效 body#god div.dad span.son {width: 200px;} body#god span#test {width: 250px;}
可憐當時做了三年前端的我竟然還不知道css有權重
css選擇器權重列表如下:
在css中,!important的權重相當的高,但是由于寬高會被max-width/min-width覆蓋,所以!important會失效。
width: 100px!important; min-width: 200px;
上面代碼計算之后會被引擎解析成:
width: 200px;
*請認真填寫需求信息,我們會在24小時內與您取得聯系。