2011年5月30日星期一

2009年12月29日星期二

cityEngineLite最新进展

09年下半年的工作比较忙,要迎接检查,还要学车~总之,就是很忙。加上10月功夫网又再次发威,害得我上不了blogger,也没法更新。

在这半年里,cityengine又更新了几次,这是目前已经实现的操作:
T,R
S
I
[ ]
Subdiv
Repeat
FootPrint
Extrude
FComp
Set
Offset
FCombine

下一步就要实现Occ了,现在求交点交线的功能已经做好了,还在测试,问题比较多。
Roof暂时先放着,因为它比较容易。
CGAgrammer的解释器有了较大的变动,主要是因为要执行combine操作,它必须能以组为单位来同时操作一些shape,而之前的实现都无法做到。

看看最新的例子:


1:null~FootPrint(poly){footprint}
2:footprint~S(Y,4) facades
3:facades~FComp(sidefaces){facade} FComp(topfaces){roof}
4:facade:gcurrentScope.position[0]>0~S(ZD,4) sideroom
5:sideroom~FComp(sidefaces){facade} FComp(topfaces){roof}
6:roof~FCombine(AF) roof2
7:roof2~roof2a roof2b
8:roof2b~Offset(-0.1) level2
9:level2~S(YD,10) level2facades
10:level2facades~FComp(sidefaces){facade2} FComp(topfaces){lv2roof}
7:facade2~Subdiv(Y,r(1),0.3){Subdiv(X,0.5,r(1),0.5){side|mf|side}|topline}
8:mf~Subdiv(Y,2,r(1)){firstfloor|Repeat(YD,3){Subdiv(Y,0.3,r(1),0.3){t0|Repeat(X,2){t2}|t0}}}
10:t2:gcurrentScope.size[0]>1.6~Subdiv(X,r(1),1.4,r(1)){t3|windowtile|t3}
11:lv2roof~Offset(0.1) lv2roof2
111:lv2roof2~S(Y,0.12) roof3D
12:windowtile~S(Z,gcurrentScope.size[1]) I(window1):0.3 ~S(Z,gcurrentScope.size[1]) I(window2):0.3 ~S(Z,gcurrentScope.size[1]) I(window3):0.4





2009年11月18日星期三

暂停更新

Nothing yet.

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:

2009年5月23日星期六

city engine lite最新进展

上一篇日志里提到了语法解释器已经完成,cga语句已经可以解释成cga命令。
现在主要的任务是将cga命令翻译成maya命令。
目前已经遇到的困难:
1、Comp命令如何实现?
在CGA中,shape是scope的一个属性,在maya里shape节点是Transform节点的子节点,很相似。不同的是,对scope执行Comp可以产生低维度的scope,低维度的shape也在这一过程中产生。maya的shape,这里说多边形物体,分解之后,产生单一的多边形面,也仍然是3D的。我在实现中使用的是旋转标准平面使之符合物体面的方法,这样只用物体坐标系的X和Y就可以表示2D面。另一种方法,不旋转面,在可以预见的后续操作中,会很麻烦,分割scope的时候就必须考虑法线、支点、基准边的问题。现在这些问题就要在Comp命令里考虑。

2、贴图坐标如何处理?
这也是个麻烦的东西,现在还没有什么头绪。应该是随scope大小和位置的变化的。

3、Roof,Occ,Snap
Roof要等Comp完成后才有点眉目。Occ和Snap现在也没有什么头绪,求交点和交线看来是少不了了。

看看目前的完成的部分:
这是3条CGA规则:

1:default~S(9,10,2) Subdiv(Y,4,4,2){wall|window|Subdiv(X,r(1),r(1),r(1)){tile|tile|tile}}:1
2:window~T(0,0,2) newwin
3:newwin~Subdiv(X,r(1),r(1)){lwin|rwin}


CGAgrammar解释后产生的图形,简单了点,下一次试试更复杂的规则:

2009年5月12日星期二

最新进展 09年5月12日凌晨

自从去年10月份写了2篇日志后,这个blog就暂时没有动静了。
这段时间里,完成了几样东西:
1、杂兵的rig基本完成,没有特别惊人的技术,只用了一般的ikfk。完成了一个ikfk转换的脚本,还有一个双向控制的脚本。
2、测试了一下city scape,很强大,但是no crk。另外,它的模型是模型库里的固定模型,不能随机化(也许是我不知道)。
3、测试了一下city engine,更强大,但是我的机子跑不动,单纯的创建几个模型还可以,一个城市的模型就彻底内存不够了,它和maya通过fbx交换数据,fbx本身也是个很慢很吃内存的冬冬。
4、从去年就在打算的city engine lite已经完成了最重要的部分,语法解释器。已开始用antlr,最后发现实在不好写语法规则。最后还是纯手写的语法解释器,里面的数学运算和逻辑运算都交给python。比如T(math.cos(height),1,2)。
如何和cityengine来比的话,这只是万里长征的第一步,cityengine可以创建创建城市街道的样式,我的cityenginelite目前还只是解释语法。
后续的工作好多~~

2008年10月5日星期日

回顾昨天,展望明天

对解夏的mv进行重制这个想法大概是从2007年9月开始的。想法的最早的来源是07年七月去北京的时候,在同学的蛊惑之下去了玩了一天,无意中看到了05年itcartoons制作的《解夏》的mv,flash动画版。回家之后仔细的观看了一边,感觉故事不错,制作也不错,但是对人物的设定不是很赞同,画面也不够明亮(也许要表现的内容本来就很灰暗)。另一个感觉就是我可以做一个更漂亮的3d动画版,研究3d动画技术这么久了,却一直没有什么像样的作品,正好借这个机会做一个。

真正着手开始制作大概已经是07年10月份了吧,先把原做的flash给拆掉,弄出每个镜头的序列,这个工作到现在也没有做完,大概只拆到一半。50多的镜头,5000多frame。

拆flash和第一个分镜头的制作差不多是同时开始的,到目前为止,一共做好3个镜头,人物做好一个(不过动画的时候才发现很多地方不合格,又要重制),还有一个人物没有做setup。
人物一共有7个,5种形象。
08年初有放下几个月没有动。

在制作中发现有很多东西非常难实现,第三个镜头中有一个水滴的镜头,制作的时候才发现流体无法模拟如此平静的水面。最后只能用粒子来模拟,效果也不能让人满意。

先写到这里。