2009年6月5日星期五

city engine lite最新进展

就在完成上一篇帖子之后,发现了一个新的大bug:线性命令表无法处理形如Subdiv(X,1,2,3){S(Z,2) I(block) |tile|tile}这样的命令,因为在读取param之后,无法确定后续的几个命令该如何分组。最终不得不生成命令树,改用标准的递归来处理了,原先线性命令列表的方法不是不可以用,而是不能在symbol的地方嵌入命令。为了更好的符合paper上的例子,只能改了。可能还有别的bug,暂时先不找了。


这是最新的测试:
1:default~S(10,20,1) Repeat(YD,6){tile}
2:tile~Subdiv(X,0.3,r(1),0.3){wall1|tile1|wall1}
3:tile1~Subdiv(Y,0.2,r(1),0.1){wall2|Repeat(XD,4){win1}|wall}
4:win1~Subdiv(Y,r(1),r(3),r(1)){wall|Subdiv(X,r(1),r(5),r(1)){wall|S(Z,0.2) T(Z,-0.1) I(window)|wall}|wall}
5:wall1~S(Z,0.2) I(block)
6:wall2~S(Z,0.1) I(block)

产生的mesh: