• 点群から滑らかなB−Spline曲面生成

    前回は一応1枚のB-splineでフィットするところまでだった。しかし1枚のB-splineとはいってもバキバキに折れている面である。今回はこれをさらにスムージングして少なくとも C1連続1枚のB-splineでフィットしてみた。コントロールポイント自体は格子状に計算されているのでコントロールポイント列を連続なspline 曲線と思えば難しい計算ではない。結果は
    こんな感じである。
    Bunnyの背中にしわがよってしまっている。これは滑らかさの制約
    min (W=∫∫ |Suu|^2 + 2|Suv|^2 + |Svv|^2 du dv)
    を入れずに計算をサボったからである。しかし既に元になるimplicit sufaceを生成しているのでコントロールポイントを増やせばこのしわも消えていくはずである。そうすると
    となって。。。。結構良い感じである。難点はコントロールポイントを増やさなければならない点である。別のモデルでも試してみると

    これも良い感じであるが指の先に若干異常が見られる。さらにコントロールポイントを増やさなければならない。
    この難点を避けるには1枚のB-splineにようなテンソル積型の曲面1枚を諦めるのがとりあえずの回避策だろう。というかこのほうが楽チンである。例えば適当なセグメントに分けて

    こんな感じで複数のパッチで張るのである。この図は各パッチ毎にコントロールポイント数を調整せずに一律に生成しているがこれをパッチ毎にコントロールポイント数を調整してやれば最適なコントロールポイント数で曲面張りが出来る。

    全演算時間:26分(PentinumM 1.86GHz 2GB)


    ※これら計算結果はWCCTLによって得られたものです
2006年02月19日 11時15分44秒

inserted by FC2 system