国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

擠壓造型Extrusion的節點說明和應用實例

2024-07-21 02:16:16
字體:
來源:轉載
供稿:網友


擠壓造型extrusion的節點說明和應用實例----------------------------1。擠壓造型的節點說明:extrusion節點 extrusion{       spine [0 0 0,0 1 0] # mfvec3f     crosssection [1 1,1 -1,-1 -1,-1 1,1 1] # mfvec2f     scale [1 1] # mfvec2f     orientation  [0 0 1 0] # mfrotation     begincap  true # sfbool     endcap true # sfbool     ccw true # sfbool     solid true # sfbool     convex true # sfbool     creaseangle 0 # sffloat }     <域>:spine 該域定義龍骨折線,包括一系列三維點,依次連接相鄰點就得到一條折線。該域的

坐標在節點的局坐標系上定義。

crosssection 定義二維折線,包括一系列二維的坐標,依次連接相鄰坐標點就得到一條

分段線性折線。該則先在節點的局部坐表系xz平面中定義,二維的坐標的第一個數是x坐

標,另一個是z坐標。 /*我們重點關心上面兩個域*/

scale 該城定義二維折線的尺度縮放變換參數。在節點局部坐標系的xz平面內,尺度變

換以平面的坐標原點為參照點,值的第一個數對應x軸的變換,第二個數對應z軸。尺度變

換參數值必須大于零。一般該域值的個數與spine域一樣,順序對應著每個龍骨構造點處

的二維拆線的尺度變換。如果該城只指定了一個值,每一處的二維折線都使用這個值進行

變換。 

orientation  該域定義三維旋轉變換參數。一般該域值的個數與spine域一樣,順序對應

著每個龍骨構造點處的二維折線的旋轉變換。如果該域只指定了一個值,每一處的二維折

線都使用這個值進行變換。注意這個旋轉變換并不在節點的局部坐標系上定義,而在對應

每個龍骨構造點處的一個特殊的構造點坐標系上進行。 

begincap  該域說明延伸體是否有起始端面(對應龍骨中第一個構造點)。如果

begincap= false,則不產生起始端面,否則,起始端面是將crosssection域中的二維折

線首尾相連構成的多邊形,處于龍骨第一個構造點坐標系的xz平面。  endcap 該域說明延伸體是否有終止端面(對應龍骨中最后一個構造點)。如果endcap=

false,則不產生終止端面,否則,終止端面是將crosssection域中的二維折線首尾相連

構成的多邊形,處于龍骨最后一個構造點坐標系的xz平面。 

ccw extlusion節點自動生成幾何面的法線,該域決定法線方向與二維折線走向的關系。

當cow=true時,二維折線走向(由折點定義的順序指定)、龍骨走向(由龍骨構造點定

義的順序指定)與法線方向應成右手關系;反之,當cow=false時,二維折線走向、龍骨

走向與法線方向應成左手關系。如果域solid=true,只有逆著法線方向觀察,才可以看到

幾何面。 

solid 對于一個幾何體的面,法線方向的表面被認為是“外”表面,與此相反的是“內”

表面, 當solid域為true時,只顯示“外”表面,“內”表面并不顯示著色。當幾何體是

閉合的時候,該域用于瀏覽器實現優化。如果solid= false,則意味著“內”、“外”表

面都要顯示,瀏覽器必須計算兩個表面,這時如果使用質材,面上的某點在兩個表面使用

質材圖像上的同一像點。 

convex 該域告訴測覽器幾何體是否為一個完全的凸面體。如果不能確定,該域應該設為

false。convex域用于測覽器實現優化。 

creaseangle 該域影響瀏覽器對幾何體相鄰表面之間棱的處理。creaseangle指定一個大

于0的角度值(弧度),如果相鄰表面法線之間的夾角的絕對值小于這一角度,創覽器對

相鄰表面做平滑處理,棱不能被明顯地察覺到。該域通常用于生成光滑的表面。  <事件>:set-spine eventin   mfvc3f             設置spine路徑的值。  set-crosssection eventin   mfvec2f     設置crosssection路徑的值。  set-scale eventin   mfvec2f            設置scale的值。 set-orientation  eventin   mfrotation  設置orientation的值   <說明>:    extrusion節點為描述多種形狀的形體提供了一種有效和直接的方式,那些可以用zd

截面圖形經在空間中沿某一路徑移動而形成的形體均可采用此方式。

    crosssection域描述了一個x-z平面上的2d準形截面。將crosssection的拷貝放在每

個spine路徑的連接處,按照scale、orientation域的值進行縮放或旋轉,然后將相鄰連

接處的交叉部分的相應頂點連接起來形成物體的側面。如果begincap endcap已被說明,

適當的平面多邊形端帽(caps)便可被加在所構建形體的末端。

------------------------2。vrml代碼如下:

#vrml v2.0 utf8

#用戶視角viewpoint {        position 0 4 10        description "look"}#背景background {        skycolor         [            0.0 0.2 0.7,            0.0 0.5 1.0,            1.0 1.0 1.0        ]        skyangle [1.309,1.571]}group {        children         [                def body transform #螺絲紋,擠壓造型                {                        children shape                         {                                appearance def dcolor appearance                                 {                                        material material                                         {                                                diffusecolor .2 .1 .32                                                specularcolor .31 .388 .388                                                ambientintensity .07                                                shininess 1                                        }                                }                                geometry def whorl extrusion                                 {                                        crosssection                                         [                                                0.05 0,0 0.08,-0.05 0,0.05 0                                         ]                                        spine [ ]                                        scale [ ]                                        begincap true                                        endcap true                                                             solid true                                }                        }                }, # end body                def top transform #釘子帽,圓柱                {                        translation 0 5.05 0                        children shape                         {                                appearance use dcolor                                 geometry cylinder                                 {                                        radius 0.5                                         height 0.1                                }                        }                },                transform #釘子的身子,圓錐                {                        translation 0 2.5 0                        rotation 1 0 0 3.14                        children shape                         {                                appearance use dcolor                                geometry cone                                 {                                        bottomradius 0.25                                        height 5                                        side true                                }                        }                },                def myscript script                {                        field sffloat a 0.01                        eventout mfvec3f spin_changed                        eventout mfvec2f scal_changed

                        url "vrmlscript:                        function initialize()                        {                                y_add = 0;          //y方向上的增量                                cent = math.pi/16;  //螺旋時的角度的增量                                angle = 0.0;                                sc = 0;             //縮放比例                                n = 64 * 5;                                    for(i = 0; i < n - 20; i++)                                {                                        b = angle / (64*math.pi);                                        part_x = b * math.cos(angle);                                        part_z = - b * math.sin(angle);

                                        /*spin就是一個多邊形逼近形成的圓,y上加

                                         上增量,就形成了螺旋上升的造型。*/                                       spin_changed[i] = new sfvec3f(part_x,  y_add, part_z);                                        scal_changed[i] = new sfvec2f(sc,sc);                                        angle += cent;                                        y_add += 1 / 64;                                        sc += 0.01;                                }                        }"                }        ]        route myscript.spin_changed to whorl.set_spine        route myscript.scal_changed to whorl.set_scale}

3。解釋crosssection [] 就是一個在x-z平面上的封閉圖形,例子中是一個三角形;spine [ ] 是crosssection的圖形拉動的軌跡,(x,y,z)三維坐標形成的一個數組scale [ ] 造型在各個spine點的縮放比例。

其實只要高中的立體幾何學會了,擠壓造型理解起來就是小菜一碟。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 孟村| 拉萨市| 遵化市| 台东县| 德惠市| 石台县| 绥中县| 公安县| 山丹县| 永吉县| 桐庐县| 临泉县| 喀喇| 桑植县| 炎陵县| 郴州市| 海安县| 循化| 湟源县| 阿勒泰市| 永川市| 兴文县| 保德县| 屯昌县| 宝应县| 云龙县| 绥棱县| 海安县| 永济市| 闽清县| 天峨县| 宜宾县| 麟游县| 景东| 靖州| 盱眙县| 太和县| 宁津县| 左贡县| 阿克苏市| 嘉兴市|