1亚侠、CircleGeometry
? ? ? ? A、看書籍提到屬性thetaLength的值,以為其值設(shè)置超過2 *π會有報錯信息,或者其值真正繪制的弧長等于thetaLength % (2 *π)揽碘。經(jīng)過嘗試發(fā)現(xiàn)超過2 *π的部分也會被繪制:
? ? ? ? B栋齿、書籍提到segments的值最少3個,當(dāng)segments的值小于3髓迎,其繪制效果與等于3的效果一樣。
2、ShapeGeometry
? ? ????A狮杨、點擊Gui的asPoints按鈕報錯:
????????對比Shape的官網(wǎng)信息,感覺和Shape.extractPoints方法相近到忽,extractPoints的返回值有兩個橄教,看github的效果,只繪制外層線框喘漏,那應(yīng)該是用Shape.extractPoints(divisions).shape替換护蝶。
? ? ? ? 調(diào)整代碼:
????????刷新頁面,可以繪制與github示例相同的效果翩迈,但是控制臺報錯:
????????不明白為什么BufferGeometry.boundingSphere是有值的持灰,查看模塊“LineBasicMaterial”的C點內(nèi)容BufferGeometry的boundingSphere也是有值的,屬性相近负饲。對比模塊“LineBasicMaterial”的C點內(nèi)容堤魁,本示例屬性boundingSphere的center的類型應(yīng)該是Vector2,不知道怎么修改返十。
????????將BufferAttribute構(gòu)造函數(shù)的2改成3妥泉,這樣boundingSphere的center的類型是Vector3,計算應(yīng)該沒有問題吧慢。刷新頁面發(fā)現(xiàn)報錯依然存在涛漂。看BufferGeometry.attribute.position.count的值不是整數(shù)检诗,不知道是不是這個的問題匈仗。本來打算修改傳入dataList的長度余3為0,后面想“我為什么不把dataList.pust(item.x, item.y)改成dataList.pust(item.x, item.y, 0)呢逢慌?反正二維轉(zhuǎn)三維就是z坐標(biāo)為0悠轩。”攻泼。修改后刷新頁面發(fā)現(xiàn)火架,報錯信息沒有鉴象。
????????經(jīng)過這一遭,感覺用在BufferGeometry上何鸡,BufferAttribute構(gòu)造函數(shù)傳入的數(shù)字只能為3纺弊。
? ? ? ? B、A部分值繪制的外框骡男,兩個圓和一個圓沒有繪制出來淆游。可以通過Shape.extractPoints(divisions).holes獲取這部分的點隔盛,參照A部分的內(nèi)容加圓的點追加到dataList犹菱,刷新頁面后,發(fā)現(xiàn)頁面只繪制外框吮炕,并有報錯A部分的錯誤腊脱。
? ? ? ? 打印Shape.extractPoints(divisions).holes,發(fā)現(xiàn)其結(jié)構(gòu)與Shape.extractPoints(divisions).shape不一樣龙亲,調(diào)整圓點傳入方式:
????????繪制效果如下:
????????不知道是不是因為是Line陕凹,所以必須點點相連。調(diào)整代碼只傳入一個圓俱笛,刷新代碼捆姜,發(fā)現(xiàn)這個圓會于外框的一個點連起來,驗證的推測迎膜。
? ? ? ? C、點擊Gui的asSpacePoints按鈕報錯:
????????根據(jù)報錯浆兰,Shape沒有createSpacedPointsGeometry方法磕仅,對于官網(wǎng),沒有找到符合的替換方法簸呈。下載github的代碼運(yùn)行榕订,這部分也是報錯的,不知道書籍原本的效果是什么樣的蜕便。
補(bǔ)充:github上寫了與RingGeometry的示例劫恒,書籍沒有提到。
? ? ? ? A轿腺、調(diào)整thetaSegments的值两嘴,小于3的繪制效果與值為3的效果一樣。thetaSegments的值越大族壳,繪制的圖形越趨近于圓環(huán)憔辫。
? ? ? ? B、調(diào)整phiSegments的值仿荆,小于1的繪制效果與值為1效果一樣贰您。
? ? ? ? C坏平、調(diào)整thetaLength的值,面形成閉環(huán)的值為2 *π锦亦。thetaLength的超過2 *π舶替,圖形收縮繪制如:
????????thetaLength的值也可以設(shè)置為負(fù)值,相較于絕對值相等的正值杠园,其形狀大小相同坎穿,顏色不同(材質(zhì)為MeshNormalMaterial,且MeshNormalMaterial.side為THREE.DoubleSide)返劲。
? ? ? ? D玲昧、調(diào)整innerRadius的值,當(dāng)innerRadius和outerRadius同為正值或負(fù)值時篮绿,大的部分做外環(huán)的半徑孵延,小的做內(nèi)環(huán)的半徑;當(dāng)innerRadius和outerRadius一正一負(fù)亲配,會繪制兩個疊一起的圓形尘应,如:
3、CubeGeometry
? ? ? ? A吼虎、BoxGeometry的屬性widthSegments犬钢、heightSegments、depthSegments不能為0思灰,為0會有報錯信息:
????????不過上面三個屬性其中某一個A屬性為0玷犹,也能渲染物體,與屬性A相關(guān)分段的4個頁面將不會繪制洒疚。當(dāng)上面三個屬性為0的數(shù)量大于1時歹颓,物體將不會繪制。
4油湖、SphereGeometry
? ? ? ? A巍扛、繪制一個完整的球體,屬性phiLength的值需要為2 *π乏德,屬性thetaLength的值為π撤奸。phiLength的值可以大于2 *π,thetaLength的值大于π時喊括,圖形會卷著繪制胧瓜,如:
????????當(dāng)phiLength等于phiStart或者thetaLength等于thetaStart時,只繪制一條線瘾晃,當(dāng)前面兩個條件同時滿足贷痪,沒有物體繪制。
? ? ? ? B蹦误、感覺屬性widthSegments和heightSegments應(yīng)該值小于3的繪制效果等同值為3的效果劫拢。經(jīng)過嘗試widthSegments確實是肉津,heightSegments是值小于2時的繪制效果等同與值為2。
5舱沧、CylinderGeometry
? ? ? ? A妹沙、調(diào)整屬性radialSegments的值,發(fā)現(xiàn)值為2時熟吏,繪制結(jié)果為平面距糖,值為1時,繪制結(jié)果為線條牵寺,值為0時悍引,無內(nèi)容繪制并報錯(前提屬性radiusTop、radiusBottom和height不為0)帽氓。
????????設(shè)置radialSegments的值為負(fù)值趣斤,繪制效果同值為0時。
? ? ? ? B黎休、當(dāng)屬性height的值不為0浓领,radiusTop或radiusBottom的值為0時,繪制效果為圓錐势腮。當(dāng)屬性height為0時联贩,radiusTopd和radiusBottom的值都不為0時,會繪制兩個疊一起的圓捎拯,如:
????????當(dāng)屬性openEnded的值為true時泪幌,且屬性height為0時,radiusTopd和radiusBottom的值都不為0時玄渗,繪制效果如下:
????????當(dāng)height座菠、radiusTopd和radiusBottom都為0時,無內(nèi)容繪制藤树。
????????radiusTopd和radiusBottom都可以設(shè)置為負(fù)值,當(dāng)值為負(fù)值時對應(yīng)的圓形不會繪制拓萌,通過openEnded也無法使圓形繪制岁钓。
????????Height可以設(shè)置為負(fù)值,繪制效果看上去與值為正值無區(qū)別微王,通過MeshNormalMaterial反饋的顏色不同屡限,得到負(fù)值和正值的區(qū)別。
? ? ? ? C炕倘、調(diào)整屬性heightSegments的值钧大,發(fā)現(xiàn)值為0時,繪制兩個圓形并報錯(前提屬性radiusTop罩旋、radiusBottom和height不為0)啊央。
????????設(shè)置heightSegments的值為負(fù)值眶诈,繪制效果同值為0時。
6瓜饥、TorusGeomaterial
????????A逝撬、調(diào)整tube的值,絕對值相同乓土,繪制效果相同宪潮。值為0時,繪制線條趣苏。
????????B狡相、調(diào)整radius的值,絕對值相同的兩個值食磕,繪制物體的大小形狀一樣尽棕,材質(zhì)會MeshNormalMaterial時,顏色不同芬为。
????????C萄金、調(diào)整arch的值,效果同B部分媚朦,繪制一個完整的環(huán)對應(yīng)的值為2 *π氧敢,超過將會卷著繪制:
????????D、調(diào)整radialSegments的值询张,效果同30小點A部分孙乖。
????????E、調(diào)整tubularSegments的值份氧,效果同D部分唯袄。
? ? ? ? A蜗帜、調(diào)整radius的值恋拷,值為0,無內(nèi)容繪制厅缺;絕對值相同的兩個值蔬顾,繪制物體的顏色一樣,形狀大小看起來像按某個方向反轉(zhuǎn)湘捎。
????????B诀豁、調(diào)整tube的值,值為0窥妇,繪制線條舷胜;絕對值相同的兩個值,繪制物體的顏色形狀大小一樣活翩。
????????C烹骨、調(diào)整radialSegments的值翻伺,小于1時,無內(nèi)容繪制且報錯展氓;值為1時穆趴,繪制線條圓形;值為2時遇汞,繪制一個被扭曲的面未妹;值大于2,正常繪制內(nèi)容空入。
????????D络它、調(diào)整tubularSegments的值,小于1時歪赢,無內(nèi)容繪制且報錯化戳;值為1時,radialSegments的值為1埋凯,無內(nèi)容繪制点楼,radialSegments的值2,繪制直線白对,radialSegments值大于2掠廓,繪制成環(huán)的線條;值為2時甩恼,當(dāng)radialSegments的值為1時蟀瞧,繪制一條直線,radialSegments的值為3条摸,繪制一個平面悦污,radialSegments大于3,繪制被折疊的面钉蒲;值大于2切端,管道樣式封口。
????????E顷啼、調(diào)整P的值帆赢,值為0時,無內(nèi)容繪制并報錯线梗;絕對值相同的兩個值,正值和負(fù)值繪制物體的形狀大小一樣怠益,顏色不同仪搔。
????????F、調(diào)整q的值蜻牢,值為0時烤咧,有物體繪制偏陪。絕對值相同的兩個值,正值和負(fù)值繪制物體的顏色一樣煮嫌,形狀大小看起來像按某個方向反轉(zhuǎn)笛谦。
????????G、書籍提到的屬性heightScale昌阿,對比官網(wǎng)饥脑,應(yīng)該是被移除了。
8懦冰、PolyhedronGeomery
? ? ? ? A灶轰、調(diào)整radius的值,值為0刷钢,無內(nèi)容繪制笋颤;絕對值相同的兩個值,正值和負(fù)值繪制物體的形狀大小一樣内地,顏色不同伴澄。
? ? ? ? B、調(diào)整detail的值阱缓,值小于0非凌,無內(nèi)容繪制。值越大茬祷,繪制的物體也趨近于球體
9清焕、IcosahedronGeometry
? ? ? ? A、調(diào)整radius值為0祭犯,無內(nèi)容繪制秸妥;絕對值相同的兩個值,正值和負(fù)值繪制物體的形狀大小一樣沃粗,當(dāng)detail的值為0時粥惧,兩者顏色相同,detail大于0時最盅,兩者顏色不同突雪。
? ? ? ? B、調(diào)整detail的值涡贱,效果同33小點B部分咏删。
10、TetrahedronGeometry
????????A问词、調(diào)整radius值為0督函,無內(nèi)容繪制;絕對值相同的兩個值,正值和負(fù)值繪制物體的形狀大小看起來像按某個方向反轉(zhuǎn)辰狡,顏色不同锋叨。
? ? ? ? B、調(diào)整detail的值宛篇,效果同33小點B部分娃磺。
10、Octahedron
????????小節(jié)整體內(nèi)容同模塊“IcosahedronGeometry”叫倍。
補(bǔ)充:DodecahedronGeometry的屬性radius和detail的調(diào)整效果同模塊“IcosahedronGeometry”偷卧。