表示システム
< 前へ [ トップへ ] 次へ >


 3Dプログラミングを始めるにあたって、まず最初に必要になるのが、3Dコンピュータグラフィックスをパソコンの画面上に表示する為のシステム ― 表示システムです。ここでは、表示システムについて解説します。
 RINEARN-X 3Dでは、描画エンジンを直接呼び出して独自の表示システムを開発する事も可能ですが、より簡単に、様々な用途に対応できる、標準の表示システムも容易されています。



 即席利用を可能にしてくれるRealtime3DFrameクラス

 一口に表示システムと言っても、3Dコンピュータグラフィックスを独立ウィンドウ上に表示するものや、フルスクリーンで表示するもの、または別のプログラム中に埋め込まれた形で表示するものなど、様々なものが考えられるでしょう。
 RINEARN-X 3Dには、ユーザーが即席で利用可能な表示システムとして、Realtime3DFrame クラスが用意されています。これは独立ウィンドウの形態をとる表示システムです。Realtime3DFrameクラスは基本的な座標管理や画面表示システムをはじめ、リアルタイム情報更新やマウスによる視点操作機能など基本的な機能をすべて標準搭載しており、誰でも簡単にリアルタイム3Dコンピュータグラフィックス技術を利用できるように設計されています。


 3D画面を起動する

 それでは、実際にRealtime3DFrameクラスを起動してみましょう。ソースコード(ここではTest.JAVA)に、以下のように記述してください。


import rxvesapi.system3d.geometry.*;
import rxvesapi.system3d.renderer.*;
import rxvesapi.system3d.model.*;


public class Test{

  public static void main(String[] args){

    /*3D仮想空間を起動*/
    Realtime3DFrame frame = new Realtime3DFrame();

  }
}


▼実行結果

 このようにウィンドウが立ち上がって、何も無いフルグレーの画面が表示されたなら成功です。 ここに映っているのがあなたがこれから造り上げていく舞台となる3D仮想空間であり、時間も流れています。画面に何も無いのはまだ何も配置していないからであり、画面には確かに3D仮想空間が表示されているのです。これからあなただけの世界を作り上げていきましょう。
 箱庭やゲームを作って遊んでみるのも面白いかもしれません。複雑な分子・結晶構造の可視化など、学術用途でもあなたを大いに助けてくれることでしょう。

なお、背景の色は setScreenBackground( Color 背景色 ) メソッドで設定できます。


import rxvesapi.system3d.geometry.*;
import rxvesapi.system3d.renderer.*;
import rxvesapi.system3d.model.*;


import java.awt.Color;


  public class Test{

    public static void main(String[] args){

    /*3D仮想空間を起動*/
    Realtime3DFrame frame = new Realtime3DFrame();

    /*背景をホワイトにする*/
    frame.setScreenBackground( Color.white );

  }
}



 画面の基本操作

 Realtime3DFrameはマウス入力やキー入力のフィードバック機能を搭載しており、カメラアングルの変更や視点の平行移動などを簡単に行う事ができます。

・カメラアングルの変更
 画面上をマウスでドラッグすると、カメラアングルが回転的に移動します。基本的には注視点を軸として、ドラッグした方向に空間を掴んで回す感覚になります。また画面中心を軸として円を描くようにドラッグすると、仮想空間も画面中心を軸として回転します。

・視点の平行移動
キーボードの↑↓キーで奥/手前、また← →キーで左右に視点を平行移動します。また[Shift]キーを押しながら↑↓キーで画面上下方向に視点を平行移動します。


 ボタンなどのコンポーネントを配置するには

 Realtime3DFrameのウィンドウ上には、通常のJFrameと同様に、ボタンやラベル、テキスト入力エリアなどのコンポーネント類を配置する事が可能です。
 ただし、Realtime3DFrameの add メソッドを直接呼び出すのでは無く、まず getDisplayPanel( ) メソッドを呼び出し、3D画面パネルを取得してください。このメソッドはRealtime3DPanelという、JPanelを継承したオブジェクトを返します。
 そして、取得した3D画面パネルのaddメソッドを呼び出し、コンポーネントを配置してください。


import rxvesapi.system3d.geometry.*;
import rxvesapi.system3d.renderer.*;
import rxvesapi.system3d.model.*;


import java.awt.*;
import javax.swing.*;

  public class Test{

    public static void main(String[] args){

    /*3D仮想空間を起動*/
    Realtime3DFrame frame = new Realtime3DFrame();

    /*画面パネルのレイアウト設定を初期化*/
    frame.getDisplayPanel().setLayout( null );

    /*ボタン*/
    JButton b = new JButton( "START" );
    b.setBounds( 10, 10, 100, 30);

    /*画面パネルにボタンを配置*/
    frame.getDisplayPanel().add( button );

  }
}

▼実行結果



 Realtime3DFrameを使用しない方法もある

 Realtime3DFrameクラスを用いずに、オリジナルの表示システムを自分で構築する事も可能です。というのもRealtime3DFrameクラス自身も実は特別なクラスでは無く、RINEARN 3Dの各クラスを組み合わせて作成されているからです。従って自分でRealtime3DFrameクラスのような独自の表示システムを構築する事は十分に可能なのです。その方がカメラワークなどの自由度も格段に上がりますし、オリジナル設計のマウス&キーフィードバック機能を搭載したり、状況に応じて処理速度を可変させるなど小回りの効くプログラムが記述できるでしょう。
 しかしながら自分で独自の表示システムを構築するには、RINEARN-X 3Dの各クラスの役割をある程度熟知している必要がありますし、基本的な3D描画プロセスの流れを把握していなければなりません。従ってそのような手法は上級者向けと言えるでしょう。

▼ Realtime3DFrameを使用した場合と、表示システムを自分で構築した場合の比較。

Realtime3DFrameを利用 表示システムを自分で構築
開発の難易度 非常に簡単 上級者向け
最大処理能力 同じ 同じ
カメラワークの自由度 低い 自由に設計可能
マウス操作 視点の回転に対応 自由に設計可能
キー操作 視点の平行移動に対応 自由に設計可能
画面の表示方法 独立ウィンドウが起動 自由に設計可能


 実際にオリジナルの表示システムを構築するには、ScreenSystem3DEGクラスを活用します。ScreenSystem3DEGは3D描画エンジンの役割を担っているクラスで、RINEARN 3Dを構成する各クラスの中でも中核に位置するクラスです。
 例えばリアルタイムの表示システムでは、毎秒数十回程度の周波数で繰り返すループを独立スレッドで走らせ、そしてループ毎にScreenSystem3DEGから3DCG画像を取得し、それを画面上に表示するように設計します。

< 前へ [ トップへ ] 次へ >


スポンサーリンク



スポンサーリンク

この階層の目次
新しいお知らせ

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

RINEARNのソフトウェア向けにOpenJDKで生成したJava実行環境(JRE)の提供を開始
2019年02月06日 - Javaのリリースモデル変更への対応として、OpenJDKのjlinkツールを用いて、RINEARNのソフトウェア実行用に生成したJava実行環境(JRE)の提供を開始しました。その詳細と、今後の方針について解説します。

シンプル&コンパクトなプログラム関数電卓! 「 リニアンプロセッサー nano 」の概要
2019年01月26日 - RINEARNでは現在、プログラム関数電卓ソフト「 リニアンプロセッサー 」の派生版として、シンプル&コンパクトな方向性を目指した「 リニアンプロセッサー nano 」を開発中です。その概要をご紹介します。

コードアーカイブ新着
入力された数式を積分して値とグラフを表示するツール

画面上で数式を入力すると、それを数値的に積分し、値とグラフを表示してくれるGUIツールです。
2019年01月20日
z = f(x,y,t) の形の数式を3Dグラフとしてアニメーション描画するツール

入力欄に z = f(x,y,t) の形の数式を入力すると、それを3次元のグラフにアニメーション描画してくれる簡易ツールです。
2018年11月26日
y = f(x,t) の形の数式を2Dグラフとしてアニメーション描画するツール

入力欄に y = f(x,t) の形の数式を入力すると、それを2次元のグラフにアニメーション描画してくれる簡易ツールです。
2018年11月25日
t を媒介変数とする x(t), y(t), z(t) の数式を3Dグラフに描画し、アニメーションもできるツール

入力欄に x(t), y(t), z(t) の形の数式を入力すると、それを t を媒介変数として3次元のグラフに描画し、アニメーションもできる簡易ツールです。
2018年11月20日
t を媒介変数とする x(t), y(t) の数式を2Dグラフに描画し、アニメーションもできるツール

入力欄に x(t), y(t) の形の数式を入力すると、それを t を媒介変数として2次元のグラフに描画し、アニメーションもできる簡易ツールです。
2018年11月19日
公式Twitterアカウント

スポンサーリンク