[ 前へ | 目次 | 次へ ]

立体の反転

ここでは、モデルやポリゴンの反転を扱います。 立体の反転には、面の向きを裏表で反転させる「リバース反転」と、 形状を鏡映しに反転させる「ミラー反転」が存在します。


モデルのリバース反転

モデルの面には、裏表の向きが存在します。 面は表側から見た場合のみ描画され、裏側から見ても何も存在しないように見えます。 標準モデルでは、通常は外側が表面となっており、従って内側からは何も見えません。

しかし、例えばゲーム制作などにおいて、天球を作成するような場合や、 トンネル状の通路を作成するような場合など、 モデルの内側を表面にしたい場合がしばしばあります。 このような場合には、リバース反転を行う事で、 モデルの裏表を反転させる事ができます。

モデルのリバース反転を行うには、reverseModel関数を使用します。

- 関数仕様 -

void reverseModel ( int modelID )

引数modelIDでは、設定対象のモデルのIDを指定します。

ポリゴンのリバース反転

ポリゴンにも、三角形ポリゴンと四角形ポリゴンには裏表が存在します。 これらポリゴンに対してリバース反転を行うには、 reversePolygon関数を使用します。

- 関数仕様 -

void reversePolygon ( int polygonID )

引数polygonIDでは、設定対象のポリゴンのIDを指定します。

モデルのミラー反転

モデルをX軸などの方向へ、 鏡映しに反転させたいといった場合には、ミラー反転を行います。 モデルのミラー反転を行うには、mirrorModel関数を使用します。

- 関数仕様 -

void mirrorModel (
  int modelID,
  bool x, bool y, bool z
)

最初の引数modelIDでは、設定対象のモデルのIDを指定します。 続く引数x、y、zでは、 それぞれX、Y、Z方向のミラー反転の有無を指定します。

ポリゴンのミラー反転

モデルと同様、ポリゴンのミラー反転を行うには、 mirrorPolygon関数を使用します。

- 関数仕様 -

void mirrorPolygon (
  int polygonID,
  bool x, bool y, bool z
)

最初の引数polygonIDでは、設定対象のポリゴンのIDを指定します。 続く引数x、y、zでは、 それぞれX、Y、Z方向のミラー反転の有無を指定します。

ミラー反転では、面の裏表も反転してしまう

ミラー反転を行う際には、注意しておく点があります。 それは、ミラー反転を行うと、同時に面の裏表も反転してしまうという点です。 従って、モデルやポリゴンに対してミラー反転を一度行う度に、 reverseModel関数やreversePolygon関数も同時に呼び出して、 面の裏表を正しくしてやる必要があります。

このようになる理由は、 時計回りを鏡映反転すると反時計回りになる事に由来しています。 面の裏表の向きは、 ポリゴンを構成する頂点が反時計回りに並ぶ場合に表と判定されていますが、 この向きはミラー反転すると逆転します。 従って、こちら側が表に見えていたポリゴンをミラー反転すると、 向こう側が表になってしまうのです。

ミラー反転による面反転の図
ミラー反転に伴う面反転
ミラー反転を行うと、時計回りが反時計回りに逆転するため、面の向きが反転してしまう。従ってリバース反転も行って補正する必要がある。

プログラム例

実際に円筒モデルを配置し、Z方向にミラー反転させてみましょう。 一回のミラー反転では面の裏表が逆転するため、同時にリバース反転も行います。 以下のように記述し、実行してみてください。

このプログラムを実行すると、黒い画面に赤色と青色の円筒が表示されます。 青色の円筒は、ちょうど赤色の円筒をZ軸方向に反転した形状となっています。

実行結果、赤と青の円筒の図
実行結果
青色の円筒が本来の位置(赤色の円筒)からZ軸方向にミラー反転された様子が見て取れる。



スポンサーリンク



スポンサーリンク

この階層の目次
[ 前へ | 目次 | 次へ ]
お知らせ

Vnanoのスクリプトエンジンアーキテクチャ解説1: 全体像
2019年05月28日 - RINEARNでは現在、 アプリケーション組み込み用スクリプトエンジン「 Vnano 」を、オープンソースで開発中です。今回は、このスクリプトエンジンのアーキテクチャ面を掘り下げて解説します。

リニアンプロセッサー nano の先行開発版やソースコードリポジトリを公開
2019年04月16日 - オープンソースで開発中の小型プログラム関数電卓ソフト、「 リニアンプロセッサー nano 」の先行開発版やソースコードリポジトリを公開しました。概要と使用方法、ビルド方法などについて解説します。

各ソフトウェアの最新版を一括でリリース、OpenJDKのJava実行環境(JRE)に対応
2019年03月06日 - RINEARNでは3月6日に、主要なソフトウェアの最新版を一括でリリースしました。今回のアップデートには、以前お知らせした、OpenJDKで生成したJREへの対応が含まれています。その概要等をお知らせします。

新着
連番ファイルから3Dグラフをアニメーション描画するツール

フォルダ内の連番データファイルを読み込み、3Dグラフを高速で連続描画して、アニメーションさせるツールです。
2019年06月03日
連番ファイルから2Dグラフをアニメーション描画するツール

フォルダ内の連番データファイルを読み込み、2Dグラフを高速で連続描画して、アニメーションさせるツールです。
2019年05月24日
[公式ガイドサンプル] 立体モデルを生成して3D空間に配置する

「VCSSL 3DCG開発ガイド」内のサンプルコードです。立体モデルを生成し、3D空間に配置します。
2019年05月21日
[公式ガイドサンプル] ポリゴンを生成して3D空間に配置する

「VCSSL 3DCG開発ガイド」内のサンプルコードです。立体の基本的な構成要素となるポリゴンを生成し、3D空間に配置します。
2019年05月20日
[公式ガイドサンプル] CSVファイルにデータを書き出し&読み込んで、複雑な3次元曲面のグラフを描く(魔法陣形)

「VCSSLスタートアップガイド」内のサンプルコードです。CSVファイルにデータを書き出し、さらにそれを読み込んで、魔法陣のような3次元曲面のグラフを描画します。
2019年05月17日
開発元Twitterアカウント

スポンサーリンク