スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
Maya には Merge という機能がありますね。
恐らくわりと使用頻度が高い機能の一つだと思います。

ご存知の通り、一定の Threshold (しきい値)を与え、
コンポーネント同士の距離がそれ以下ならば結合するという仕様になっています。

しかしながら Threshold を0に、
つまり『完全に同じ位置にある場合に結合する』という事はできません。

これは何故でしょうか。
ある程度コンピュータに関する知識を持ち合わせている人なら分かる事と思いますが。
解説いたしましょう。

まず前提としてコンピュータは『2進法』に基づいて計算しています。
2進法の仕組みについてはこちらのブログ
以前に解説していますのでご参考にしてください。

そして Maya は座標値を double 型で計算しています。
『 Mel 講座』カテゴリの記事でもしばしば出てくる float より精度は高いものの
同様に浮動小数点数の事です。

ところが、実は2進数は小数が苦手です。
10進数で正確に表せる小数でも2進数では循環小数になってしまうことが多く、
浮動少数点数を使用する場合の多くは内部的に循環小数を
丸めて(一定の桁数以上の精度の数値を端数として処理して)いるため
多かれ少なかれ誤差が発生するのです。

つまり、例えばユーザが『 0.2 』という数字を使用しようとしても
実はコンピュータは「限りなく0.2に近い数字」というくらいの認識しかしていないのです。
そのため「限りなく0.2に近い数字」同士の二つを比べる事になったとしても
それらが等しいのか、どちらが大きいのかなどという判定がうまくできないのです。

よって、プログラミング言語によって様々な対策が考えられたりもしていますが、
基本的に私での等号の判定は推奨されません。

以上が、Maya の Merge 機能で
『複数のコンポーネントの座標が完全に同じ位置にある場合に結合する』
という事ができない理由でした。


なんだか上手に説明できていない気がしますが。
お分かりいただけたでしょうか。

ご不明な点があればコメントよろしくお願いします。
コメント
管理者のみ閲覧可能にする
Profile
HN らい

都内某社テクニカルディレクター
都内某専門学校講師
都内某企業講師
元中国某社S3Dスーパーバイザー
Contact
(ENGLISH OK. 可以用中文。)
Categories
Archives
RSS Link
QR Code