有关Spore建模技术的猜测
预定于今年9月份发售的Spore已经吸引媒体的眼球超过4年了。自从GDC2004 Will Wright关于Spore的一部带demo的演讲[1],有关它的实现细节已经陆续暴露出来了,尤其是GDC2007 Chris Hecker关于带语义的动画编辑[2]。
我想讨论的是关于它procedural modeling的部分。其实建模部分由于演示视频,可以很直觉地知道是基于隐式表面的。由于隐式表面几个特殊的性质,如混合简单、CSG操作简单、杜绝mesh常有的defects。而且一些玩家网站也报道了Spore的编辑器使用了"metaball"[3]。
既然如此,根据视频中的细节操作,我想Spore的建模实现应:
1、不会直接使用metaball进行建模,由效率和建模效果来看也不应该;
2、通过一些预定义的,由隐式表面描述的part,来组装生物;
3、躯干通过match point的隐式表面生成算法生成,但考虑到效率可能只有有限的点可以控制,但这些点的位置可以在表面上的任意位置[4] [5];
4、躯干和肢体的混合,可能会采用convolution的方式进行混合,但也可能不,因为膨胀的效果可能不明显[7];
5、使用一些带阶跃的隐式函数,来方便对隐函数求值时culling(或性能优化);
6、用户结束任一编辑操作,就把定义好的隐式表面多边形化以供实时渲染器渲染[6]。
[1] [SPORE] Demonstration by Will・Wright (Part1)
我想讨论的是关于它procedural modeling的部分。其实建模部分由于演示视频,可以很直觉地知道是基于隐式表面的。由于隐式表面几个特殊的性质,如混合简单、CSG操作简单、杜绝mesh常有的defects。而且一些玩家网站也报道了Spore的编辑器使用了"metaball"[3]。
既然如此,根据视频中的细节操作,我想Spore的建模实现应:
1、不会直接使用metaball进行建模,由效率和建模效果来看也不应该;
2、通过一些预定义的,由隐式表面描述的part,来组装生物;
3、躯干通过match point的隐式表面生成算法生成,但考虑到效率可能只有有限的点可以控制,但这些点的位置可以在表面上的任意位置[4] [5];
4、躯干和肢体的混合,可能会采用convolution的方式进行混合,但也可能不,因为膨胀的效果可能不明显[7];
5、使用一些带阶跃的隐式函数,来方便对隐函数求值时culling(或性能优化);
6、用户结束任一编辑操作,就把定义好的隐式表面多边形化以供实时渲染器渲染[6]。
[1] [SPORE] Demonstration by Will・Wright (Part1)