で・・・Fusion 360のT-スプラインっていったい何なの？

# Fusion 360 スカルプトモードの勉強中です

スカルプトモードでは__T-スプライン__というオブジェクトを使ってサーフェイスモデリングを行います。
T-スプラインって何なの？ってことで調査してみました。(T-スプラインは、以後ハイフンを外してTスプラインと表記します。面倒くさいので）

# そもそもTスプラインの「T字」はどこにあるの？

素朴な疑問ですよね。実際に「T字」になっている部分を見たいわけです。

Googleイメージ検索で探してこういう表と例を見つけました（Tスプラインの開発元のドキュメンテーションの一部）。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/103139/8bd91974-b8fb-ed87-bfcb-7c8b5f2b6576.png)
(イメージのソース　https://betterlivingthroughcnc.files.wordpress.com/2011/07/page-50.png)

Vertex type (頂点タイプ）として、__T-ポイント__というのがあるので、それがまさしく「T字」なんですね。さらに __スターポイント__ というのあって、それはT字ではないけれどTスプラインの頂点タイプのひとつということです。

さらに __Ordinary control point (通常の制御点）__というのがありますが、これは後述しますがTスプライン独特の特徴ではなく、その派生元であるNURBS制御点の特徴と理解して問題ないと思います。

Tangency handle (接触ハンドル）別記事で触れましたが、ある特定の編集モードにしないと見えてこない点です。

また、[Autodeskの公式ヘルプ](https://knowledge.autodesk.com/search-result/caas/CloudHelp/cloudhelp/ENU/Fusion-Sculpt/files/GUID-0F2C56D9-6EAE-4A2D-9431-F405A5931380-htm.html)でも簡潔に解説されていました。

ということでTスプラインの「T字」および特徴的なスターポイントを下図の赤枠で示します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/103139/0192c391-1307-fe07-aa03-7e5f1f779b58.png)



# Tスプラインじゃないスプラインって何スプライン？

Tスプラインは2003年に発明された、比較的新しい手法です。2004年にT-Splines社がその技術を商用化して、のちにAutodeskに買収されて現在Fusion360のスカルプトモードで使えるようになった、というのが経緯だそうです。（[ソース：Wiki](https://ja.wikipedia.org/wiki/T-%E3%82%B9%E3%83%97%E3%83%A9%E3%82%A4%E3%83%B3)）

では2003年前までは「何スプラインだったのか？」というとB-Splineだそうです。厳密には「NURBS(Non Uniform Rational Basis Spline」という早口言葉なら割と高度な名前のスプラインです。それまでのCADはNURBSでやっていたし、現在もNURBSは利用されています。というより、Fusion 360のスカルプトモードでTスプラインを一切使わずにNURBSだけでやることも十分可能です。相互排他的な関係ではないのです。

# NURBSとTスプラインの違いは？

TスプラインはNURBSを発展させたもので、Wikiによると：

>　T-スプライン曲面は、制御点の列が曲面の端まで続かないNURBS曲面と考えることができる。 列の端の制御点網は「T字」に形が似ている。

とあります。これを分かりやすく概念図にするとこのような感じになると思います

![image.png](https://qiita-image-store.s3.amazonaws.com/0/103139/8be121b0-3547-d255-5754-3471258ea406.png)

赤い点は制御点で、それらがいくつか集まって列を構成しています。列の端の制御点（端点）をどこに置けるかが違いです。NURBSでは、列が「端から端まで」あるので端点は常に両エッジの上にあります。対してTスプラインでは、列は端から端までカバーする必要はなく、よって端点を列上のどこにでも置くことが出来ます。感覚的にいうと、「突き抜けて最後のエッジまで行かなくていい」という感じです。

全体的な特徴としては、NURBSは長方形を構造を基礎とした格子状のもので、規則的なパターンをもっており、Tスプラインは3角形や5角形などを含むことが出来、不規則的なパターンになっても問題ありません。このような全体的な構造を__トポロジー__と呼びます。

# Tスプラインのどこがすごい？

NURBSを使って2003年までCADって来て、航空機やら船やらを設計してきたわけですからそのままでいいんじゃないかって思いますが、Tスプラインにはいくつかの大きな利点があります。

## 制御点の数が少なくて済む！

T-Splines社のSederburg氏の論文で最初に触れています。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/103139/7d8e04e4-f61b-29b0-3a01-3f99712b5b1f.png)

ソース（PDF): http://www.ndar.com/press_conferences-cd/articles/T-Splines%20Chesapeake%20paper.pdf


NURBSの場合、格子状に制御点を配置するので、曲面上でなんら効果のない制御点がわんさと残ってしまうことが起こるそうです。そうなると、計算的負荷がかかるだけでなく、デザインに変更を加える時に制御点が多すぎて大変とのこと。

## サーフェイスモデル１つで全てを表せる！

私はCADの経験がないのでNURBSをベースにしたCADデザインのワークフローはよく分からないんですが、[Transitioning from NURBS to T-splines というYouTube動画](https://www.youtube.com/watch?v=suv90ahXa5s&feature=plcp) でこの点が強調されていました。どうやらNURBSベースのCADでは、サーフェイスモデルをいくつかに分けてモデリングして、それらを「くっつける」作業が別途あるらしいですね。その点、Tスプラインでモデリングすると、それらのくっつける作業がひつようなく、今までは分けて作っていたモデルを全体の一部として作れるということだそうです。

## 水漏れがない

これはNURBSでいくつかのサーフェイスモデルを繋げる作業が必要ないことがすなわち、水漏れを起こすような隙間がないことを意味しているということだそうです。水漏れを起こせない船やボート、容器などの設計において実用的な利点もあるということですね。

## 編集が簡単

これはTスプラインの特徴の総合的な結果といえるでしょう。制御点が少ない、計算量が少なくて済む、長方形の格子トポロジーに限定されない、NURBSを続けて使うことが出来る、接合部分の編集の必要がないか極めて簡単、といった特性が「編集をより簡単にさせる」ということですね。

# Fusion 360 でTスプラインを意識的に使う

Fusion 360では、長方形の格子状のトポロジーだけでサーフェイスモデルを作成すると、NURBSだけで構成したことになります。
そこにスターポイントを含むようなサーフェイスモデルを作ると、Tスプラインが使われている状態になります。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/103139/6ed05792-c82e-c79e-a337-080ca59030cf.png)

一部のフェイスを細かく分割して（Tポイントが出来る状態にして）、細部をモデルしていくやり方。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/103139/6dae192c-cde3-d5a5-67a3-5489159cd343.png)


ワンクリックで作れる「球体」ですが、２つのフレーバー（？）が用意されています。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/103139/89d9f81a-a02a-de92-cf76-0f6536516c82.png)

勝手に「NURBS指向」と「Tスプライン指向」と表現してますが、この二つはトポロジーの違いを良く表していると思います。全く同じ形状だけど、明らかにTスプラインで構成された方がシンプルです。またTスプラインの特徴であるスターポイントが数か所にあります。


# Tスプライン、ベストプラクティス

いくつかあるようです。

## 出来るだけできるだけ長方形を使う

前述のYouTube動画でAutodeskの方が動画23：23辺りで言ってます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/103139/ee2026af-b028-404a-4405-2e4506305c48.png)


https://www.youtube.com/watch?v=suv90ahXa5s&feature=plcp

## スターポイントとTポイントを隣り合わせにしない

[Autodeskのヘルプ](https://knowledge.autodesk.com/search-result/caas/CloudHelp/cloudhelp/ENU/Fusion-Sculpt/files/GUID-0F2C56D9-6EAE-4A2D-9431-F405A5931380-htm.html)から学んだことです。下図はヘルプ動画からのスクショに、スターポイントとTポイントの位置に赤枠を加えたものです。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/103139/998744a9-c53a-3df1-b308-e8f352419a9b.png)

動画内の解説では、スターポイントとTポイントは、すくなくとも2区画離す、とありました。

# まとめ

まだスカルプトモードでまともにモデリングしたこともないんですが、Tスプラインがいったい何なのか理解することでイメージどおりにモデリングできる自信がついてきました。またスカルプトモードで発生するエラーは意味がまだよく分からないものが多いけれど、Tスプラインの原理を多少なりとも理解していれば、エラーの意味解釈が少しでも出来るようになると思います。