[ 前へ | 目次 | 次へ ]
Now Loading...
ダウンロード
PC (※スマートフォンでは動きません) でダウンロードし、ZIPファイルを右クリックメニューから展開して、できたフォルダ内の「 VCSSL.bat(バッチファイル) 」をダブルクリックすると起動します。 Linux等では「 VCSSL.jar 」をコマンド実行してください。
» 詳しい使用方法や、エラーで展開できない際の対応方法などはこちら

[公式ガイドサンプル] ポリゴンを生成して3D空間に配置する

このプログラムは、 「 VCSSL 3DCG開発ガイド 」 の 「 ポリゴンの生成・配置と各種ポリゴン 」 の回に登場するサンプルコードです。 ここでは、そのサンプルコードを実行環境ごとダウンロードして、実際に実行してみる事ができます。 プログラミングガイド的な詳しい解説については、上記ページをご参照ください。

スポンサーリンク


使用方法

ダウンロードと展開(解凍)

まず、PC(スマホは未対応)で上の画面の「 ダウンロード 」ボタンを押してください。 するとZIP形式で圧縮されたファイルがダウンロードされます。

Microsoft® Windows® をご使用の方は、ここでまずZIPファイルを右クリックし、「プロパティ」を選んで開かれる画面で、 下の方にあるセキュリティ項目の「許可する」にチェックを入れて「OK」で閉じてください。 これを行わないと、ZIP展開やソフト起動時に、警告メッセージが出て展開完了/起動できない場合があります。

その後、ZIPファイルを右クリックして「すべて展開」や「ここに展開」などで展開(解凍)してください。 展開が成功すると、ZIPファイルと同じ名前のフォルダができ、その中にZIPファイルの中身が入っています。

※ Linux 等でも右クリックメニューから展開できますが、ファイル名が文字化けする場合、コマンド端末でZIPファイルのある場所まで cd した上で「 unzip -O cp932 ZIPファイル名 」で展開してみてください。

プログラムの起動

Microsoft® Windows® をご使用の場合

上記の通りにZIPファイルを展開したフォルダ内にある、 「 VCSSL.bat(種類はバッチファイル) 」をダブルクリック実行してください。 もしプログラムを書き変えながら使いたい場合は、代わりに「 VCSSL_Editor.bat 」を実行してください。

※ もし、ここでセキュリティ警告メッセージが出て起動できない場合は、 ダウンロードと展開 の項目に書かれている手順通りに、ZIPファイルの展開をやり直してみてください。

正常に起動できると、最初にメモリー使用量や、(必要な場合のみ)Java®実行環境を自動で入手するか 等を尋ねられるので、適時答えると、プログラムが起動します。2回目以降はすぐに起動します。

※ ここで入手したJava®実行環境は、ZIPファイルを展開した中の「 jre 」フォルダ内にダウンロードされ、このプログラムの実行のみに使用されます。PC全体に影響する形でインストールされる事はありません。

Linux 等やその他のOSをご使用の場合

ZIPファイルを展開したフォルダ内へコマンドライン端末で cd して、以下の通り入力して実行してください:

java -jar VCSSL.jar
(プログラムの内容を書き変えながら使いたい場合は、代わりに VCSSL_Editor.jar を実行)

» javaコマンドが使用できない等のエラーが表示される場合は…

起動後

起動すると、3DCGの表示ウィンドウが表れ、そこに3D空間の内容が表示されます(下図)。 表示ウィンドウ上で、マウスでの視点操作や拡大・縮小も可能です。

3DCG表示ウィンドウ
3DCG表示ウィンドウ
3D空間の内容が表示されます。マウスでの視点操作や拡大・縮小も可能です。
※ 点や線に比べて、三角形や四角形がやや暗い色に見えるのは、面のあるポリゴンには光の加減が加味されるためです。

今回のサンプルコードでは、上図の通り、 3D空間内に点や線、三角形や四角形などの基本的な図形を配置しています。 VCSSLでは、このような基本的な形をした、3D空間内での描画要素を「 ポリゴン 」と呼びます。 複雑な立体形状も、ポリゴンをたくさん組み合わせて構成されます。

なお、カラフルな3つの矢印は、3D空間の向きやスケール感を把握しやすくするために配置している座標軸モデルで、 赤色がX軸、緑色がY軸、青色がZ軸の方向を表しています。矢印の長さはちょうど 3.0 です。

ポリゴンの裏面を描画するには?

ところで、マウスで視点を操作するとわかるのですが、標準では下図の通り、三角形および四角形のポリゴンの裏面は描画されません:

マウスで視点を操作した様子
マウスで視点を操作し、ポリゴンの裏面を見た様子
三角形および四角形ポリゴンの裏面は、標準では描画されません

これは、三角形および四角形ポリゴンが、通常は立体の表面を構成する要素に使用される事が多いため、 見る機会の少ない裏面の描画を省いて負荷を軽減する「カリング」という機能が、標準で働いているからです。 カリングは、必要に応じて無効化する事もできます。詳細は下のコード解説の最後で触れます。

コード解説

このプログラムのコードはVCSSLで記述されています。

内容を書き変えて改造したい場合には、 プログラムのコード「 Polygon.vcssl 」をテキストエディタで開いて改造してください。 スクリプト言語なので、コンパイラなどの別ソフトは不要で、コードを書き換えるだけでOKです。 VCSSLはC系の単純な文法の言語なので、C言語などに触れた事のある方なら簡単に読めると思います。

コード全体は以下の通りです。

以上です。50行程度の比較的短いコードですね。 ポリゴン1個ずつの生成・配置に要している行は、それぞれ2〜3行ほどです。

このコードは 「 VCSSL 3DCG開発ガイド 」 の 「 ポリゴンの生成・配置と各種ポリゴン 」 の回に登場するサンプルコードなので、詳しい説明はそちらのページをご参照ください。

以下では、コード先頭から軽く流し読みする感じで、各行で何をやっているのかを見ていきます。 まずは先頭です:

最初の行は文字化け対策で、コードを書いてあるファイルの文字コードが「Shift_JIS」である事を明示しています。 文字コードは他にも「UTF-8」などを使用できます。

その後の2行は、VCSSLの標準ライブラリから、3DCGを扱うための 「 Graphics3D 」ライブラリと 「 Graphics3DFramework 」ライブラリを読み込んでいます。 Graphics3D ライブラリだけでも3DCGの描画は可能なのですが、それだと表示画面の構築や、毎秒数十回の画面更新処理などを、 自分で書く必要が生じます(参照)。 ただ、そういった処理は大体決まりきった内容なので、自分で書くのは面倒です。 そこで、そういった土台周りの処理を自動で行ってくれる、一種の簡易フレームワークが Graphics3DFramework ライブラリです(参照)。

続きです:

ここでは onStart という関数を宣言していますが、この関数はコード内のどこからも呼んでいません。 では一体どこから呼ばれて実行されるのかというと、先ほど読み込んだ Graphics3DFramework です。

Graphics3DFramework を import したプログラムでは、 起動と同時に背後でフレームワークが動き始め、あとは適時、必要な処理を自動で行ってくれます。 プログラム全体の「流れ」も、フレームワークがコントロールします。 ではコード内には何を書くかというと、特定のタイミングでフレームワークに行ってほしい処理を、 あらかじめ決まっている名前の関数の中に書きます。 例えば最初に一回だけ行いたい処理は onStart 関数、毎秒数十回の画面更新毎に行いたい処理は onUpdate 関数、といった具合です (参照)。 するとフレームワークが、適切なタイミングでその関数を実行してくれます。

さて、ここで宣言している onStart 関数は、フレームワークが起動後に、 画面構築や3D描画エンジン(レンダラー)の生成などの準備が終わった段階で、1回だけ呼び出されます (引数には、3D描画エンジンのID番号が渡されます。これは、各種設定や立体の配置などを行う際に使用します)。 通常はこの onStart 関数内に、立体を3D空間に配置したり、初期設定を行ったり、といった処理を記述します。

実際に今回の onStart 関数の内容を見ていきましょう。先頭は:

のように、まず画面の初期設定を行って、さらに3D空間を把握しやすくするための座標軸モデルを配置しています。

そこからが、今回のサンプルコードのメインテーマである、ポリゴンを生成して配置していく処理です。 最初の点ポリゴンの生成と配置をクローズアップして見てみましょう:

ここで呼んでいる「 newPointPolygon 」という名前の関数は、 点ポリゴンを生成する関数です。 他にも、「 new〜Polygon 」という名前で、線や三角形、四角形ポリゴンなどを生成する関数があります。 一覧と詳細については、VCSSL 3DCG開発ガイドの 「 ポリゴンの生成・配置と各種ポリゴン 」の回をご参照ください。

さて、ポリゴン生成関数( new〜Polygon 関数 )は、 生成したポリゴンに整数のID番号を割りふって、それを戻り値として返します。 ポリゴンを配置したり変形・移動させたりする際は、 それが「どのポリゴンに対する操作なのか」を指定するために、このID番号が必要になります。

実際に上では、生成した点ポリゴンのID番号を、int 型の変数 point に控えています。 そして、その直後に mountPolygon 関数で、そのID番号を引数に渡して、 点ポリゴンを3D空間に配置しています。

さて、コードの残りの部分です:

ここでは、先ほどの点ポリゴンの場合と全く同じ要領で、線、三角形、四角形ポリゴンを生成して、3D空間に配置しています。 重なると見づらいので、 movePolygon 関数でポリゴンを移動させて、位置を微調整したりもしています。 ここでも、移動対象のポリゴンを指定するために、変数に控えておいたポリゴンのID番号を引数に渡しています。

ところで、冒頭でも少し触れた通り、標準ではポリゴン裏面の描画を省く「カリング」という機能が効くため、 三角形および四角形ポリゴンの裏面は描画されません:

マウスで視点を操作した様子
マウスで視点を操作し、ポリゴンの裏面を見た様子
三角形および四角形ポリゴンの裏面は、標準では描画されません

裏面を描画させたい場合は、setPolygonCull 関数で、カリングを無効化します。 いまの場合は、onStart 関数内の最後に、以下のように追記すれば OK です:

これで、ちゃんと裏面が描画されるようになります。

カリングを無効化した結果
カリングを無効化した結果
三角形および四角形ポリゴンの裏面が、ちゃんと描画されるようになります。
※ 点や線に比べて、三角形や四角形がやや暗い色に見えるのは、面のあるポリゴンには光の加減が加味されるためです。

コード内容は以上です。

詳しいVCSSLのプログラミングガイド(無料)はこちらへ!

上記のコードはプログラミング言語VCSSLで記述されており、このサイトではVCSSLのプログラミングガイドも無料公開しています。 コードを改造したい方や、新しいコードを書いてみたい方はぜひご活用ください!

» 公式プログラミングガイド一覧

ライセンス

このVCSSL/Vnanoコード( 拡張子が「.vcssl」や「.vnano」のファイル )は実質的な著作権フリー(パブリックドメイン) である CC0 の状態で公開しています。 記事中にC言語/C++/Java言語などでのサンプルコードが掲載されいてる場合は、それらについても同様です。 そのままでのご利用はもちろん、改造や流用などもご自由に行ってください。

※ ただし、このコードの配布フォルダ内には、ダウンロード後すぐに実行できるように、 VCSSLの実行環境も同梱されており、そのライセンス文書は「 License 」フォルダ内に同梱されています (要約すると、商用・非商用問わず自由に使用できますが、使用の結果に対して開発元は一切の責任を負いません、といった具合の内容です)。 配布フォルダ内の各構成物の一覧やライセンスについては「 ReadMe_使用方法_必ずお読みください.txt 」をご参照ください。

※ Vnano の実行環境については、別途スクリプトエンジンのソースコードも一般公開しており、 何らかのソフトウェア内に組み込んでご利用いただく事も可能です。詳細はこちらをご参照ください。

この記事中の商標などについて

  • OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国における登録商標です。文中の社名、商品名等は各社の商標または登録商標である場合があります。
  • Windows は、米国 Microsoft Corporation の米国およびその他の国における登録商標です。この記事は独立著作物であり、Microsoft Corporation と関連のある、もしくはスポンサーを受けるものではありません。
  • Linux は、Linus Torvalds 氏の米国およびその他の国における商標または登録商標です。
  • その他、文中に使用されている商標は、その商標を保持する各社の各国における商標または登録商標です。


スポンサーリンク



[ 前へ | 目次 | 次へ ]
[公式ガイドサンプル] 立体モデルを生成して3D空間に配置する

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

「VCSSL 3DCG開発ガイド」内のサンプルコードです。立体の基本的な構成要素となるポリゴンを生成し、3D空間に配置します。
この階層の目次
お知らせ

Vnanoがオープンベータ版に移行、VCSSLの実行環境で標準で実行可能に
2021年04月07日 - ソフト内組み込み用スクリプトエンジン&言語「 Vnano 」がオープンベータ版に移行し、併せて、VCSSLの実行環境でもVnanoコードの実行が可能になりました。詳細をお知らせします。

リニアングラフの最新版をリリース、2D版でも描画エンジンの直接操作が可能に
2021年04月03日 - リニアングラフ2D/3Dの最新版をリリースしました。それぞれのアップデート内容をお知らせします。今回から、2D版でもJava言語APIによる描画エンジンの直接操作が可能になりました。

RINPn のオープンベータ版をリリース! 詳細な公式ガイドも同梱&公開
2021年03月08日 - 2019年より開発進行中のプログラム関数電卓「 RINPn(りんぷん)」が、正式リリースに向けた最終準備段階として、オープンベータ版へと移行しました。その詳細をお知らせします。

新着
[公式ガイドサンプル] 引き算の結果を画面に表示する

「VCSSLスタートアップガイド」内のサンプルコードです。引き算を行って、結果を画面に表示します。
2021年07月08日
[公式ガイドサンプル] 式を複数行にわたって書く

「VCSSLスタートアップガイド」内のサンプルコードです。足し算を行う式を、複数行にわたって記述します。
2021年07月07日
[公式ガイドサンプル] 足し算の結果を画面に表示する

「VCSSLスタートアップガイド」内のサンプルコードです。足し算の結果を求めて、画面に表示します。
2021年07月06日
Vnano版 | ローレンツ方程式を数値的に解くプログラム

ローレンツ方程式を4次ルンゲ=クッタ法によって解き、グラフ描画用のデータを出力するプログラムです。
2021年02月12日
Vnano版 | 積分値のグラフ描画用データを出力するプログラム

数値的に積分を行い、結果の関数をグラフに描くためのデータを出力するコードです。
2020年12月20日
開発元Twitterアカウント