• 沒有找到結果。

第六章 結論與未來工作

6.2 未來工作

立 政 治 大 學

Na tiona

l Ch engchi University

72

6.2 未來工作

由於東方風格的雲紋圖樣資料非常眾多,目前所提出之語法在實作上可能無 法讓使用者完全地滿意所相對應符合的立體雲紋圖樣,在往後還會再嘗試更多不 同的參數以接近符合於與傳統東方風格雲紋的結構比例,並再整合進 L-system 的語法當中可以更加擴充延伸至各式不同的組合式雲紋生成,對於雲紋結構的組 合搭配,也可以再進一步地分析出哪些結構的搭配組合較符合於傳統東方風格雲 紋。

由於目前的實作環境是以 L-studio 為基礎,對於動態的呈現以及風格化的處 理實作上無法加以擴充,可以此語法結構為基礎,在 OpenGL 的環境下作進一步 的研究與開發,使得針對風格化的處理更為彈性,以模擬建構出最貼近於東方風 格的立體雲紋圖樣。

另外一點,對於許多藝術家而言,設計新圖騰往往仍然需要以他們本身的手 繪方式最為直接,本系統目前在做初始值設定與參數調整仍然以輸入參數的方式 做系統生成,在未來工作當中,必須更進一步地將 UI 介面建構出來並且以 Sketch-base 的方式做初始的雲紋輪廓外觀等指定,系統再根據這些輸入資訊作分 析,將數據結合至 L-system 生長規則語法當中,則可幫助使用者更便利的設計 出許多東方風格立體雲紋圖樣,而無須理會參數指定的麻煩。

[4] Prusinkiewicz and Aristid Lindenmayer “The Algorithmic Beauty of Plants.”

Springer Verlag New York, Inc., New York, NY, USA 1990

[5] Przemyslaw Prusinkiewicz, Mark Hammel, Jim Hanan, and Radomir Mech.

L-systems: from the theory to visual models of plants. In M. T. Michalewicz, editor, Proceedings of the 2nd CSIRO Symposium on Computational Challanges in Life Sciences. CSIRO Publishing, 1996

[6] Przemyslaw Prusinkiewicz, Introduction to Modeling with L-systems, University of Calgary

[7] HERTZMANN, A. 1999. Introduction to 3D non-photorealistic rendering:

Silhouettes and outlines. In Non-Photorealistic Rendering. SIGGRAPH 99 Course Notes

[8] McGuire, M., & Fein, A.. Real-time rendering of cartoon smoke and clouds. In NPAR ’ 06: Proceedings of the 4th international symposium on Non-photorealistic animation and rendering (pp. 21–26). New York, NY, USA:

ACM2006

[9] A. Selle, A. Mohr, and S. Chenney. Cartoon rendering of smoke animations. In NPAR ’ 04: Proceedings of the 3rd international symposium on Non-photorealistic animation and rendering, pages 57–60, 2004

[10] Hampshire, N.. Dynamic animation and re-modelling of l-systems, Master's thesis, Bournemouth University, Bournemouth, UK 2009

[11] Y.J. Yu, H.Y. Jung, H.G. Cho, A new water droplet model using metaball in the gravitational field, Comput. Graph. 23(1999) 213–222

‧ 國

立 政 治 大 學

Na tiona

l Ch engchi University

74

[12] Przemyslaw Prusinkiewicz , Structured Dynamical Systems, University of Calgary

[13] Antoine Bouthors and Fabrice Neyret. Modeling clouds shape. In E. Galin M.

Alexa, editor, Eurographics (short papers), august 2004

[14] Fabricio Anastacio, Przemyslaw Prusinkiewicz, Mario Costa Sousa:

Sketch-based parameterization of L-systems using illustration-inspired construction lines and depth modulation. Computers & Graphics 33(4): 440-451 2009

[15] Yodthong Rodkaew, Somporn Chuai-Aree, Suchada Siripant, Chidchanok Lursinsap, Prabhas Chongstitvatana: Animating plant growth in L-system by parametric functional symbols. Int. J. Intell. Syst. 19(1-2): 9-23 2004

[16] S. Manousakis. Musical l-systems. Master’s thesis, Conservatoire Royal de La Haye, 2006.

[17] L-studio http://algorithmicbotany.org/lstudio/index.html

#define C1Aang1 80

#define C1Aang2 11

#define C1Aang3 30

#define C1Aang4 5

#define CR 0.87

/* --- C1B define --- */

#define C1BR1 0.9

#define C1BR2 0.9

#define C1BWid1 1

#define C1BWid2 2

#define C1Bang1 9.0

#define C1Bang2 0.05

#define C1Bang3 12

/* --- C2 define --- */

#define C2R1 0.9

#define C2R2 0.92

#define C2Wid1 1

#define C2Wid2 1

#define C2ang1 14

#define C2ang2 0.5

#define C2ang3 6

#define C2ang4 0.5

/* --- C3 define --- */

#define C3ang1 60

#define C3ang2 80

/* --- C4 define --- */

#define C4ang1 58

#define C4ang2 5

#define C4ang3 80

#define C4ang4 11

#define ford 15

#define ford2 0.3

#define ori 0.07

#define ball_s 0.35

/* --- System define --- */

#define STEPS 25 Lsystem: 1

derivation length: STEPS

Define: {array len[MAXN0] = {8,6,4,3,2};}

/* --- AXIOM --- */

Axiom: Cloud1(x,x,x,x)

/* --- CLOUD1 & CLOUD2 --- */

Cloud1(str1,T,num,recr)  SYM(str1,T,num,recr,str1)

Cloud2(str1,T,num,recr,str2): recr>0  SYM(str1,T,num,recr,str2)

/* --- SYM --- */

[-(120)g(ford)[C(num,T)]gSYM(type2,T,num,Cnt-1,type1)] /* 3 120 degree */

SYM(type1,T,num,Cnt,type2):Cnt>0&&type1==4

[-(5)g(ford)[C(num,T)]gSYM(type2,T,num,Cnt-1,type1)]

[-(95)g(ford)[C(num,T)]gSYM(type2,T,num,Cnt-1,type1)]

[+(85)g(ford)[C(num,T)];(5)gSYM(type2,T,num,Cnt-1,type1)]

[+(175)g(ford)[C(num,T)]gSYM(type2,T,num,Cnt-1,type1)] /* 4 90 degree */

SYM(type1,T,num,Cnt,type2) : Cnt>0 && type1==5

[C(num,T)]

[+(130)g(ford)[-(130)C(num,T)]g(ford)[-(130)C(num,T)]

;(4)-(130)g(-ford)SYM(type2,T,num,Cnt-1,type1)]

[-(130)g(ford)[+(130)C(num,T)]g(ford)[+(130)C(num,T)]

;(5)+(130)g(-ford)SYM(type2,T,num,Cnt-1,type1)] /* 5 mountain cloud */

SYM(type1,T,num,Cnt,type2) : Cnt>0 && type1==6  [C(num,T)]

[+(90)g(ford)[-(90)C(num,T)];(4)-(90)g(1.5)SYM(type2,T,num,Cnt-1,type1)]

[-(90)g(ford)[+(90)C(num,T)];(5)+(90)g(3.2)SYM(type2,T,num,Cnt-1,type1)]

/* 6 line cloud */

SYM(type1,T,num,Cnt,type2) : Cnt>0 && type1==7  [g(0.2)[C(num,T)]]

[&(45)g(ford)[^(45)C(num,T)];(4)g(ford)SYM(type2,T,num,Cnt-1,type1)]

[/(45)[+(120)g(ford)[-(120)C(num,T)];(5)g(ford)SYM(type2,T,num,Cnt-1,type1)]]

[\(45)[-(120)g(ford)[+(120)C(num,T)];(6)g(ford)SYM(type2,T,num,Cnt-1,type1)]]

/* 7 Tetrahedron */

SYM(type1,T,num,Cnt,type2) : Cnt>0 && type1==8  [g(0.5)C(num,T)]

[&(45)[g(ford)[C(num,T)];(4)g(ford)SYM(type2,T,num,Cnt-1,type1)]]

[/(45)[+(90)g(ford)[C(num,T)];(5)g(ford)SYM(type2,T,num,Cnt-1,type1)]]

[^(45)[|g(ford)[C(num,T)];(6)g(ford)SYM(type2,T,num,Cnt-1,type1)]]

[\(45)[-(90)g(ford)[C(num,T)];(7)g(ford)SYM(type2,T,num,Cnt-1,type1)]]

/* 8 Square pyramid */

SYM(type1,T,num,Cnt,type2) : Cnt>0 && type1==9  [C(num,T)]

[+(90)g(ford)[-(90)C(num,T)];(4)-(90)g(-ford)SYM(type2,T,num,Cnt-1,type1)]

[-(90)g(ford)[+(90)C(num,T)];(5)+(90)g(-ford)SYM(type2,T,num,Cnt-1,type1)]

[&(60)+(30)g(ford)[^(60)-(30)C(num,T)]]

[&(60)-(30)g(ford)[^(60)+(10)C(num,T)]] / * 9 M-type I */

SYM(type1,T,num,Cnt,type2) : Cnt>0 && type1==10  [C(num,T)]

[+(90)g(ford)[-(90)C(num,T)];(4)-(90)g(ford)SYM(type2,T,num,Cnt-1,type1)]

[-(90)g(ford)[+(90)C(num,T)];(5)+(90)g(ford)SYM(type2,T,num,Cnt-1,type1)]

[^(130)+(30)g(ford)[&(130)+(30)C(num,T)]]

[^(130)-(30)g(ford)[&(130)-(30)C(num,T)]] /* 10 W-cloud */

C(num,T):num==5 [+(90)g(3)[-(150)C41(2,2,5,0)]][g(1)O(2)]

[^(110)g(3)[&(110)g(-1.5)C4(1,1,6,T)]][-(90)g(3)[C42(2,2,5,0)]]

C1Aend(c) : c>0  C1Aend_s(c)C1Aend_e(c,1.6)

C1Aend_s(c)  #(0.2)@Gt(1)@Gs

C1Bcurve1(s) --> @#(4)#(C1BWid1)@Gr(1)@Gt(1.0)@GsC1Bcurve2(s) C1Bcurve2(s) --> -(C1Bang1)/(C1Bang2)C1BLine1(s)C1Bcurve2(s*C1BR1) C1Bcurve3(s) --> @#(3)#(C1BWid2)@Gr(1)@Gt(1.0)@GsC1Bcurve4(s) C1Bcurve4(s) --> -(C1Bang3)\(C1Bang2)C1BLine2(s)C1Bcurve4(s*C1BR2) /* cloud 2 */

C2(T)[+(55)g(3)[-(55)C2curve1(1)]]

[+(145)g(3)[-(45)C2curve1(1)]]

[-(50)g(3)[-(30)C2curve1(1)]]

[-(225)g(3)[+(30)C2curve3(1)]]

[+(135)g(4)milt-tail(T,T)]

C2curve1(s) --> @#(1)#(C2Wid1)@GsC2curve2(s)

C2curve2(s) --> -(C2ang1)/(C2ang2)C2Line1(s)C2curve2(s*C2R1)

C2curve3(s) --> @#(1)#(C2Wid2)@GsC2curve4(s)

C2curve4(s) --> +(18)/(C2ang4)C2Line2(s)C2curve4(s*C2R2)

/* cloud 3 */

C3(d0,db,n,T): n==0 && T!=0  [-(C3ang1)\(C3ang2)g(d0)][milt-tail(T,T)]

C3(d0,db,n,T):n>0  \(C3ang1)+(C3ang2)g(d0)[O(db)]C3(d0,ran(0.2)+db,n-1,T) /* cloud 4 */

C41(d0,db,n,T):n>0

-(C4ang3)\(C4ang4)g(d0)[O(db)]C41(d0,ran(0.7)+db,n-1,T) C4(d0,db,n,T): n==0  [-(20)/(30)][|milt-tail(T,T)]

C4(d0,db,n,T):n>0

+(C4ang1)\(C4ang2)g(-d0)[dO(db)]C4(ran(0.3)+d0,ran(0.3)+db,n-1,T) C42(d0,db,n,T):n>0

-(C4ang3)\(C4ang4)g(d0)[O(db)]C42(d0,ran(0.7)+db,n-1,T)

/* --- TAIL --- */

milt-tail(T,t):T==1&&t>-2

[#(1.5)@Gt(1)@Gs#(0.1)-(50)\(10)f(8)@Gc(60)]milt-tail(T,t-1) /* single tail */

milt-tail(T,t):T>1&&t>0g[tail(t+6)]milt-tail(T,t-1) /* multi tail */

tail(t): t>0  tail_s(t)tail_e(2*t,WIDS) tail_s(t)  #(WIDS)@Gt(1)@Gs#(WIDE)

tail_e(n,w) : n>0  -(6)\(5)f(len[n])#(w*WR)@Gc(80)tail_e(n-1,w*WR)

/* --- SPHERE --- */

O(o) : o>0  @O(o+ori)

homomorphism

tail_e(n,w) : n>0  -(5)f(0.3)@Ge(60)@O(w)