[ 前へ | 目次 | 次へ ]

フレームワークの使用

ここでは、基盤的な処理を自動化してくれる、簡易フレームワークについて説明します。


標準で使用できる、3DCGプログラム用のフレームワーク

前回と前々回で扱ったように、3DCGのプログラムでは、表示画面やレンダラー(描画エンジン)の生成、 画面描画やアニメーションのためのループ制御、マウス操作に対する処理など、基盤的な処理が必要になります。 これらを毎回記述するのは面倒であるため、 このような処理を自動で行ってくれるフレームワーク「 Graphics3DFramework 」が標準で用意されています。

ユーザーが定義する関数

フレームワークは、単体でも基本構造としてはできあがったプログラムであり、普通に実行する事もできます。 ただし、標準では何の立体も配置されておらず、真っ白な画面が表示されるだけです。

そこで、普通は自作のプログラムからフレームワークを読み込んだ上で、 立体の配置などの必要な処理だけを追加して使用します。 具体的には、決まった名前と引数の関数を定義して、その中に行いたい処理を記述すると、 フレームワークがそれを呼び出して実行してくれます。

フレームワークが自動で呼び出してくれる関数には、タイミングに応じて以下5つがあります:

・プログラムの最初に呼び出される関数(各種設定や、立体の配置処理などを記述)
void onStart ( int rendererID )

・画面更新周期ごとに呼び出される関数(画面描画用、3DCGでは普通あまり使用しない)
void onPaint ( int rendererID )

・画面更新周期ごとに呼び出される関数(アニメーションでのモデル移動処理などを記述)
void onUpdate ( int rendererID )

・画面サイズが変更されたときに呼び出される関数
void onResize ( int rendererID )

・プログラムを終了する時に呼び出される関数
void onExit ( int rendererID )

引数の「 rendererID 」には、フレームワークから呼び出される際に、 自動で用意されている3DCGレンダラー(描画エンジン)のIDが入っています。 これはモデルの配置などに必要です。

なお、上記の関数を全て定義する必要はありません。使うものだけを定義し、処理を記述してください。 よくあるパターンとしては、onStart関数の中でモデルの生成や配置を行い、 onUpdate関数の中でモデルを少しずつ動かしてアニメーションする、といった具合です。

onUpdate関数は、負荷にもよりますが、大体1秒間に30回ほど呼び出されます。 それと交互に、2DCGではよく使用したonPaint関数も呼び出されますが、3DCGではあまり使用しません。

プログラム例

実際にフレームワークを使用して、座標軸モデルが回転するアニメーションの3DCGプログラムを作成してみましょう。 下のように記述し、実行してみてください。

このプログラムを実行すると、ウィンドウが立ち上がり、座標軸モデルがゆっくりとアニメーションで回り続けます。 ウィンドウ上で左マウスドラッグを行うと視点が回転し、右マウスドラッグを行うと、 視点が平行移動します。さらにマウスホイールの回転操作で拡大/縮小を行う事もできます。

実行結果、黒い画面に座標軸モデルの図。
実行結果
真っ黒な画面に、座標軸モデルが表示される。マウス操作も可能。



スポンサーリンク



スポンサーリンク

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

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

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

次回のVCSSL 3.4.10において、関数1個の挙動に非互換な修正が適用されます
2019年02月12日 - VCSSLの次回の正式リリース版3.4.10において、これまでドキュメントと実際の挙動が異なっていた描画系の関数1個に、非互換な修正が適用されます。その詳細と、使用コードでの対応方法について解説します。

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

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

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

「VCSSLスタートアップガイド」内のサンプルコードです。CSVファイルにデータを書き出し、さらにそれを読み込んで、魔法陣のような3次元曲面のグラフを描画します。
2019年05月17日
[公式ガイドサンプル] CSVファイルにデータを書き出し&読み込んで、複雑な3次元曲面のグラフを描く(花形)

「VCSSLスタートアップガイド」内のサンプルコードです。CSVファイルにデータを書き出し、さらにそれを読み込んで、花の形の3次元曲面のグラフを描画します。
2019年05月16日
[公式ガイドサンプル] CSVファイルにデータを書き出し、読み込んで3次元のメッシュグラフを描く

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

スポンサーリンク