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

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

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

使用方法

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

まず、PC(スマホは未対応)で上の画面の「 ダウンロード 」ボタンを押してください。 するとZIP形式で圧縮されたファイルがダウンロードされるので、そのZIPファイルを右クリックして「すべて展開」や「ここに展開」などで展開(解凍)してください。 展開が成功すると、ZIPファイルと同じ名前のフォルダができ、その中にZIPファイルの中身が入っています。

» 展開がエラーで止まってしまう場合は…

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

プログラムの起動

Microsoft® Windows® をご使用の場合

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

実行すると、最初にメモリー使用量や、(必要な場合のみ)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のプログラミングガイドは下記で無料公開しています。 上記のコードを改造したい方や、新しいコードを書いてみたい方はぜひご活用ください!

ブラウザで読めるWeb版だけでなく、PDF版も無料で配布しています!

スタートアップガイド( プログラミングがはじめての方向け )
プログラミングの入門書に相当する内容です。プログラミングが初めての方はこちらがおすすめです。
即席ガイド( C系言語ユーザー向け )
C言語や C++ などのC系の言語を扱われている方が、即席でVCSSLを扱うための簡易ガイドです。
文法ガイド
VCSSLの文法や基本的な機能を淡々とまとめた、リファレンスマニュアル的な位置づけのガイドです。
GUI開発ガイド
ボタンや入力項目などのGUI部品が並ぶ、画面を備えたVCSSLプログラムを開発するためのガイドです。
2DCG開発ガイド
画面上や画像ファイルなどに、2次元的な描画を行うVCSSLプログラムを開発するためのガイドです。
3DCG開発ガイド
画面上や画像ファイルなどに、3次元的な描画を行うVCSSLプログラムを開発するためのガイドです。
標準ライブラリ 仕様書
コード内で呼び出される関数は、大半が標準ライブラリのものです。その詳細仕様を掲載しています。

ライセンス

このVCSSLコード( 拡張子が「.vcssl」のファイル )は実質的な著作権フリー(パブリックドメイン) である CC0 の状態で公開しています。 そのままでのご利用はもちろん、言語の種類を問わず、改造や流用などもご自由に行ってください。

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

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

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


スポンサーリンク



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

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

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

この階層の目次
お知らせ

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アカウント

スポンサーリンク