美文网首页
SIGGRAPH 2000 Course Notes学习笔记

SIGGRAPH 2000 Course Notes学习笔记

作者: bluefish_ | 来源:发表于2016-06-21 09:59 被阅读0次

    网址在这里

    Introduction

    这个笔记由几位专业人士准备,因而感觉非常好读。主要关于subdivision,从最基础的数学介绍到应用,还有一些bonus代码。

    Advantages:

    • arbitrary topology
    • scalability
    • uniformity of representation
    • numerical stability
    • code simplicity.

    比起样条(spline)更便利,同时是recursive structure,方便实现和计算,效率比较高。

    Foundations I: Basic Ideas

    细分思想

    先从插值细分(Interpolating Subdivision)开始讲起。我个人理解是,在一段线段里再插入几个点,让线段变成几条小线段,从而使折线更平滑。原来的点不变,只是多了插入的点。

    Subdivision defines a smooth curve or surface as the limit of a sequence of successive refinements.

    也就是说,细分是想用有限的序列不断地精细化,来表现平滑曲线曲面。
    在插值细分中,需要确定一个规则,即如何决定在哪里插入新的点。不同的规则自然会导致不同平滑度和不同形状的曲线曲面。
    规则需要考虑到的点有以下几条:

    • Efficiency:用少量浮点运算计算新点位置,e.g. 加权平均
    • Compact support: 当一个点插入时,其影响应当是有限的,能够控制住的
    • Local definition: 新点的计算规则不应该基于较远的点
    • Affine invariance: 点集的affine transformation不会影响曲线曲面的形状,e.g. 加权平均中权重和为1
    • Simplicity: 规则要简明
    • Continuity: 注意产生的曲线曲面的连续性和可微性

    细分与其他方式的对比:

    • Efficiency: 细分是比较高效的。其实有些细分就是spline modeling中knot insertion的推论和归纳。但是隐式曲面(不是很懂)计算就比较低效了。

    An algorithm such as marching cubes is required to generate the polygonal approximation needed for rendering.Variational surfaces can be even worse: a global optimization problem has to be solved each time the surface is changed.

    • Arbitrary topology: 细分是在研究者们尝试解决spline的任意拓扑问题时产生的。这个也是隐式曲面的特长所在。(不是很懂)
    • Surface features: 即对于形状大小的控制。variational surfaces很好,灵活性高,也能精确创造性状。隐式曲面则不行。spline虽然可以,但是计算上非常低效。细分比spline好。
    • Complex geometry: 这个应该是subdivision的专长了,由于是计算决定精细度,很容易实现level-of-detail rendering。

    复习样条的内容

    Splines are piecewise polynomial curves of some chosen degree.

    样条是B-样条(即basis spline)的线性组合。这些B-样条是控制点的系数。想要连接样条,连接处的曲线段的各级导数最好是相等的,这样才能维持住spline整体的连续性。同时控制点的移动仅会影响一小部分的曲线。这里有一个小动画,通过拖动控制点,可以很清楚地看到其移动带来的影响是local的。p.s. 加载可能要vpn

    下面介绍如何用repeated convolution构建B-splines。

    x(t) = ∑x_iB^i_0(t)
    _表示下标,^表示上标。目前没找到在markdown里加latex的方法……

    如果 x(t) 是piecewise constant coordinate functions,那么 B_0(t) 就是一个box function,在 [0,1) 上为1,其他为0。然后上标 i 表示translation,即把 B_0(t) 右移 i。

    the continuous convolution of two functions f and g: (f ⊗ g)(t) = integrate{ f(s) g(t−s) ds }.

    于是B_1(t)= integrate{ B_0(s) B_0(t−s) ds },是一个linear hat function。

    于是a B-spline of degree p可以归纳为:

    B_p(t)= integrate{ B_p−1(s) B_0(t−s) ds }.

    其连续性有以下定理:

    Theorem 1 If f(t) is C^k continuous, then (B_0 ⊗ f )(t) is C^k+1 continuous.

    即一个n级spline是C^n-1 continuous。

    B-样条的微调能力

    B-样条遵从一个refinement equation。这是一条连接样条和细分的性质。

    In other words, the B-spline of degree l can be written as a linear combination of translated (k) and dilated (2t) copies of itself.

    相关文章

      网友评论

          本文标题:SIGGRAPH 2000 Course Notes学习笔记

          本文链接:https://www.haomeiwen.com/subject/xycgdttx.html