《three開發(fā)指南》閱讀筆記——第四章

1、簡單表面的MeshBasicMaterial

? ? ? ? A、報錯:

? ?????????查找官網(wǎng)沒有發(fā)現(xiàn)CanvasRenderer,找了很久也沒有發(fā)現(xiàn)可以替換其的內(nèi)容。

? ? ? ? B栈戳、報錯:

????????定位代碼Gui.add(controls, ‘overdraw’)失敗,看信息controls.overdraw的值為undefined难裆,感覺跟這個有關(guān)子檀。controls.overdraw的值從meshMaterial而來,打印信息乃戈,發(fā)現(xiàn)MeshBasicMaterial沒有屬性overdraw褂痰。
????????看之前的打印信息,controls.wireframeLineJoin的值也是undefined症虑,但是其并沒有阻塞Gui的渲染缩歪。打印的MeshBasicMaterial對應(yīng)的屬性名是wireframeLinejoin。
????????對于wireframeLineWidth谍憔,controls.wireframeLineWidth的值理應(yīng)也是undefined的匪蝙,應(yīng)該MeshBasicMaterial對應(yīng)的屬性名為wireframeLinewidth。但controls.wireframeLineWidth的值為1习贫。

? ? ? ? C逛球、調(diào)整wireframeLinewidth的值,繪制效果無變化苫昌。子線閱讀官網(wǎng)內(nèi)容颤绕,有說明無論如何設(shè)置,其繪制的寬度始終是1祟身。

? ? ? ? D奥务、調(diào)整MeshBasicMaterial.side的值,發(fā)現(xiàn)其繪制效果無變化袜硫。查看打印信息氯葬,MeshBasicMaterial.side的類型是整數(shù)。開始以為是THREE.FrontSide等的類型不同父款,打印THREE.FrontSide發(fā)現(xiàn)其也是整數(shù)溢谤。對于材質(zhì)面的理解瞻凤,個人以為像紙有正反面,個人以為MeshBasicMaterial.side設(shè)置為正面和反面的繪制效果應(yīng)該是不同的世杀。
????????后面發(fā)現(xiàn)阀参,是立方體和球體設(shè)置MeshBasicMaterial.side沒有效果,對于PlaneGeometry的物體的效果是不同的瞻坝。


2蛛壳、基于深度著色的MeshDepthMaterial

? ? ? ? A、調(diào)整camera.near和camera.far的值所刀,發(fā)現(xiàn)繪制效果無變化衙荐。


3、聯(lián)合材質(zhì)

? ? ? ? A浮创、書籍上說忧吟,需要縮小帶有MeshDepthMaterial材質(zhì)的網(wǎng)格,因為它們會直接在彼此上渲染導(dǎo)致畫面有閃爍斩披。本人沒有加上該行代碼溜族,觀察渲染,并未發(fā)現(xiàn)閃爍垦沉。


4煌抒、計算法向量顏色的MeshNormalMaterial

? ? ? ? A、本地代碼報錯:

????????對應(yīng)代碼部分厕倍,即sphere.geometry.faces.length寡壮,參照之前部分的內(nèi)容,感覺其用sphere.geometry.attributes.position.count替換讹弯。

? ? ? ? B况既、本地代碼報錯:

????????對應(yīng)代碼部分,即”let face = sphere.geometry.faces[f]”组民。因和書籍的版本相差較大坏挠,感覺添加ArrowHelper要改寫。

????????根據(jù)別人的文章調(diào)整邪乍,代碼如下:

? ? ? ? C、本地代碼報警:

????????根據(jù)告警內(nèi)容对竣,感覺MeshNormalMaterial不需要設(shè)置顏色庇楞。調(diào)整MeshNormalMaterial構(gòu)造時,傳入color的值否纬,發(fā)現(xiàn)繪制效果無變化吕晌。

? ? ? ? D、調(diào)整MeshNormalMaterial.shading的值临燃,繪制效果無變化睛驳,根據(jù)打印信息烙心,發(fā)現(xiàn)其沒有改屬性。打印THREE.FlatShading和THREE.SmoothShading的值乏沸,發(fā)現(xiàn)都是undefined淫茵。


5、為每個面指定材質(zhì)的MeshFaceMaterial

? ? ? ? A蹬跃、查看官網(wǎng)匙瘪,沒有發(fā)現(xiàn)MeshFaceMaterial。參照別人的文章A——實現(xiàn)立方體不同面設(shè)置不同材質(zhì)蝶缀,調(diào)整代碼實現(xiàn)書籍的魔方旋轉(zhuǎn)代碼如下:

????????看文章A有提到MultiMaterial的實現(xiàn)方式丹喻,查了下官網(wǎng),沒有發(fā)現(xiàn)MultiMaterial翁都。


5碍论、用于暗淡、不光亮表面的MeshLambertMaterial

? ? ? ? A柄慰、本地代碼報錯:

????????定位報錯代碼在”ambient: meshMaterial.ambient.getHex()”鳍悠,根據(jù)打印信息,MeshLambertMaterial沒有屬性ambient先煎。查看官網(wǎng)沒有發(fā)現(xiàn)可以替代的屬性贼涩。

????????B、調(diào)整MeshLambertMaterial.wrapAround的值薯蝎,繪制無變化遥倦,根據(jù)打印信息發(fā)現(xiàn)沒有改屬性。注意到MeshLambertMaterial也沒有屬性wrapRGB占锯。


6袒哥、用于光亮表面的MeshPhongMaterial

? ? ? ? A、同5小點的A部分消略。

? ? ? ? B堡称、同5小點的B部分。

? ? ? ? C艺演、MeshPhongMaterial.specular的值趨近黑色時却紧,調(diào)整MeshPhongMaterial.shiness的值繪制效果無明顯變化,材質(zhì)MeshPhongMaterial的繪制效果和MeshLambertMaterial相近胎撤,需要將MeshPhongMaterial.specular設(shè)置為明顯的顏色晓殊,MeshPhongMaterial.shiness的值小于20 才有明顯差別。
????????MeshPhongMaterial.shiness的值越大伤提,MeshPhongMaterial.specular的顏色越聚攏在一起巫俺。

? ? ? ? D、調(diào)整MeshPhongMaterial.metal的值肿男,繪制效果無明顯變化介汹,根據(jù)打印信息發(fā)現(xiàn)沒有改屬性却嗡。


7、用ShaderMaterial創(chuàng)建自己的著色器

? ? ? ? A嘹承、本地代碼報警:

????????去看了下源碼窗价,發(fā)現(xiàn)源碼確實沒有這個屬性,對比官網(wǎng)上ShaderMaterial的屬性赶撰,沒有可以將其替換的舌镶。

? ? ? ? B、本地代碼報錯:

????????定位代碼位置”cube.material.materials.forEach”豪娜,根據(jù)打印信息餐胀,將其換成”cube.material.forEach”。


8瘤载、LineBasicMaterial

? ? ? ? A否灾、本地代碼報警:

????????根據(jù)打印信息,用linewidth替換鸣奔。

? ? ? ? B墨技、本地代碼報警:

????????打印賦值給vertexColos的THREE.VertexColors,其值為undefined挎狸。根據(jù)打印信息扣汪,LineBasicMaterial.vertexColos的類型為Boolean,將THREE.VertexColors改成true锨匆。

????????C崭别、改完A、B部分恐锣,頁面無線條繪制茅主。猜測LineBasicMaterial.vertexColos的值影響了,將其設(shè)置為false土榴,刷新頁面還是沒線條繪制诀姚。根據(jù)8小點D部分,調(diào)整線條點的處理部分:

????????刷新頁面后玷禽,線條出來了赫段,不過線條的顏色都是白色。根據(jù)打印信息矢赁,LineBasicMaterial沒有colors屬性瑞佩,其color屬性無法接受THREE.Color數(shù)組。猜測將LineBasicMaterial.vertexColos設(shè)置為true坯台,LineBasicMaterial.color就可以接受THREE.Color數(shù)組了,刷新頁面后瘫寝,線條不繪制了蜒蕾。稠炬。。
????????查看別人實現(xiàn)線條漸進(jìn)色咪啡,看了下BufferGeometry的打印信息首启,BufferGeometry.attributes并沒有屬性color,無法通過”LineBasicMaterial.vertexColos.color=”來賦值撤摸,感覺可以和設(shè)置點位置一樣通過setAttribute來設(shè)置毅桃。看了下BufferGeometry.js文件准夷,看到有”setAttribute(‘position’,...)”的調(diào)用钥飞,沒有看到”setAttribute(‘color,...)”,感覺可能不行衫嵌《林妫看了幾篇線條的漸進(jìn)色,發(fā)現(xiàn)他們也是用”setAttribute(‘color,...)”來實現(xiàn)的楔绞,調(diào)整下線條顏色的相關(guān)代碼為:

????????發(fā)現(xiàn)繪制的線條還是白色的结闸,后面注意到LineBasicMaterial.vertexColos的值是false,將其改為true酒朵,刷新頁面就可以了桦锄。對比github的效果,本地的顏色偏淡蔫耽。

????????D结耀、調(diào)整opacity的值,發(fā)現(xiàn)繪制無變化针肥,以為LineBasicMaterial沒有改屬性饼记,根據(jù)打印信息確實有該屬性。想起書籍之前提到慰枕,要調(diào)整opacity的值具则,需要將transparent的值設(shè)置為true,設(shè)置好后具帮,發(fā)現(xiàn)設(shè)置opacity不同的值博肋,繪制效果不同了。

? ? ? ? E蜂厅、調(diào)整linewidth的值匪凡,繪制效果無變化。根據(jù)官網(wǎng)了解到linewidth屬性同wireframeLinewidth一樣掘猿。


9病游、LineDashedMaterial

? ? ? ? A、本地代碼報錯:

????????根據(jù)報錯,BufferGeometry沒有computeLineDistances方法衬衬。根據(jù)官網(wǎng)买猖,沒有找到合適的替換方法。

????????B滋尉、調(diào)整dashSize玉控、gapSize、scale的值狮惜,繪制效果都無變化且與LineBasicMaterial的效果高诺。對比別人LineDashedMaterial的實例,發(fā)現(xiàn)computeLineDistances是THREE.Line的方法碾篡,需要被執(zhí)行虱而,虛線才可以被繪制出來。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末耽梅,一起剝皮案震驚了整個濱河市薛窥,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌眼姐,老刑警劉巖诅迷,帶你破解...
    沈念sama閱讀 221,695評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異众旗,居然都是意外死亡罢杉,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評論 3 399
  • 文/潘曉璐 我一進(jìn)店門贡歧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來滩租,“玉大人,你說我怎么就攤上這事利朵÷上耄” “怎么了?”我有些...
    開封第一講書人閱讀 168,130評論 0 360
  • 文/不壞的土叔 我叫張陵绍弟,是天一觀的道長技即。 經(jīng)常有香客問我,道長樟遣,這世上最難降的妖魔是什么而叼? 我笑而不...
    開封第一講書人閱讀 59,648評論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮豹悬,結(jié)果婚禮上葵陵,老公的妹妹穿的比我還像新娘。我一直安慰自己瞻佛,他們只是感情好脱篙,可當(dāng)我...
    茶點故事閱讀 68,655評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般涡尘。 火紅的嫁衣襯著肌膚如雪忍弛。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,268評論 1 309
  • 那天考抄,我揣著相機(jī)與錄音,去河邊找鬼蔗彤。 笑死川梅,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的然遏。 我是一名探鬼主播贫途,決...
    沈念sama閱讀 40,835評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼待侵!你這毒婦竟也來了丢早?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,740評論 0 276
  • 序言:老撾萬榮一對情侶失蹤秧倾,失蹤者是張志新(化名)和其女友劉穎怨酝,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體那先,經(jīng)...
    沈念sama閱讀 46,286評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡农猬,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,375評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了售淡。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片斤葱。...
    茶點故事閱讀 40,505評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖揖闸,靈堂內(nèi)的尸體忽然破棺而出揍堕,到底是詐尸還是另有隱情,我是刑警寧澤汤纸,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布衩茸,位于F島的核電站,受9級特大地震影響蹲嚣,放射性物質(zhì)發(fā)生泄漏递瑰。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,873評論 3 333
  • 文/蒙蒙 一隙畜、第九天 我趴在偏房一處隱蔽的房頂上張望抖部。 院中可真熱鬧,春花似錦议惰、人聲如沸慎颗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,357評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽俯萎。三九已至傲宜,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間夫啊,已是汗流浹背函卒。 一陣腳步聲響...
    開封第一講書人閱讀 33,466評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留撇眯,地道東北人报嵌。 一個月前我還...
    沈念sama閱讀 48,921評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像熊榛,于是被迫代替她去往敵國和親锚国。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,515評論 2 359

推薦閱讀更多精彩內(nèi)容