ソラマメブログ

2008年05月17日

斜線の対処

OBJをROKURO ProやWings 3Dでviewした形とSLでの形は若干異なります。見え方とい意味 では、SLでガタガタになるという問題もありますが、それは後日談とします。 ここでは、斜め線の違いによる形の違いについて述べます。


追記[08/05/31]: TATARA 3.0.59/NOMI 1.11/ROKURO Pro 1.40で本件は対処されました。これらのバージョン以降を 使われる場合は、ここに書いた処理は必要ありません。
追記[08/05/18]: 本件ですが、TATARAから順にROKURO Pro、NOMIも修正予定だそうです。修正後は、ここに書いた対処の必要はありません。

頂点が平面から飛び出したような形を例に説明します。まずは、Wings3DとROKURO Pro での見え方です。図はROKURO Proでの表示です。オリジナルmeshをテクスチャとして貼ってあります。Wings 3D でもROKURO Pro同様、右下がりの斜線に沿って平面が折れます。

次にSL内での見え方です。右側は、CTRL+Shift+Rでワイヤーフレーム表示したものです。 meshは、上とは斜線が異なり右上がりになっています。

そうなんです。斜め線が反対なのです。四角形な平面の折れ方がOBJとSLでは反対になってしまうのです。

OBJの方を直そうと思い、OBJのface情報をいろいろ変えて試してみましたが、駄目でした。 Wings 3Dでは、図形が消えてしまったり、青い表示(意味不明)になったり、 変化無しだったり... あたしにゃ無理でしたorz あきらめました。

あきらめたといっても、OBJを直す方をあきらめただけです。対処方法はあります。

ひっくり返して作ればいいんです

平面を折るような変形をする場合は、SLに持ち込む前に左右を鏡面処理すれば よいのです。
そのため、左右が完全に非対称なものは、できあがりイメージと左右反対に作って おく必要があります。左右対称に近いのものを作るのであれば、特に意識する必要 はありません。
作業の流れで書いた、形によっては左右を反転とはこのことだったのです。

例です。左側がOBJ(ROKURO Pro)で、右側がSLです。

左上のOBJをテクスチャにしてSLに持ち込むと右上のようになってしまいます。先に述べたように OBJとSLでは平面を折る対角線が異なるためです。そこで、OBJを鏡面処理して、左下のように します。OBJの見栄えは悪いですが、これをテクスチャにしてSLに持ち込めば右下のように 意図した形になります。

まとめると、 一旦鏡面処理をすることで、OBJとSL図形が一緒になっているということです。

最新のROKURO Pro/TATARAであればFlipで上下反転しても同じ効果が得られると思います。



この記事へのトラックバックURL

http://ada.slmame.com/t242872
この記事へのコメント
この現象に対する、対応方法は正解で私も賛成です。

なぜこうなるのか?だけコメントしますね。

3D描画レンダリングは、法線方向からみて各ポリゴンの頂点IDを「時計まわりに読む」か「反時計回りに読む」かが、分かれています。
だれか偉い人が統一すればいいんですけどね・・・(笑。

で かつ、四角のポリゴンはほぼ確実にどのレンダラーでも最終段階で3角形に分割されて計算されます。

ここまで書けばもうお判りと思いますが、頂点のIDの数字を逆に配列すれば、対角線分割も逆からになるので、記事の現象は解決されるのですね。

補足のやり方としては、3Dソフトによりますが、法線逆転ができるならば裏っかえして最初から作成するのも手ですねー。

むかーしのプレステとかサターンとかはオブジェクトすべて三角形だけでモデリングされておりました。分割方向を手作業で決定していたのです(笑。
Posted by Kaoru Rechel at 2008年05月30日 03:02
コメントありがとうございます。

はじめはfaceの並びをいじったけどうまくいかず... その後OBJの仕様書をwebで見つけたんですが、さっぱりでした。反時計と時計回りでviewerからみた向きがどうのこうの... わかりませんでしたorz 
左右反転で結果的に頂点IDが逆配列になったということですよね。

昨日(5/30)、ROKURO Proも更新されて、シリーズは全て(たぶん)、この問題がなくなりました。SLと同じ三角形になってます。
Posted by Ada QuinnellAda Quinnell at 2008年05月31日 16:35
認証文字を入力してください