SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine(コードジン) DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

japan.internet.com翻訳記事

Java 3Dの変換処理を理解する

Java 3D API解説

全般的な背景情報 4

画面出力およびユーザー入力GUIの例

 図8は、このプログラムによって生成されるユーザー入力GUIおよび画面出力の例を示しています。

図8 Java3D010の画面出力とユーザー入力GUIの例
図8 Java3D010の画面出力とユーザー入力GUIの例

ユーザー入力GUI

 図8の右側のユーザー入力GUIでは、プログラムで実行される次の4種類の変換の動作を制御するパラメータを入力できます。

  • 平行移動
  • 回転
  • 平行移動
  • 拡大縮小

Replotボタン

 入力GUIの下部にある[Replot]ボタンをクリックすると、ユーザー入力パラメータと、図7のTransformGroup階層を使用して、図8の左側に示すように、新しい3Dユニバースが作成され、表示されます。

8個のLeafオブジェクト

 階層には8個のLeafオブジェクトがあり、これらはすべてColorCubeクラスのオブジェクトです。この8個のオブジェクトは、図7の階層内で斜体で示されています。これらは、図8のユニバース内でも明確に表示されています。

 図8のユニバースには、細長いColorCubeオブジェクトで構成される、2組の3D軸(1組に付き3オブジェクト)が表示されます。1組の3D軸は、図8のユニバースイメージの右上の部分にあります。もう1組は、前面が青色、左面が赤色、上面が紫色の大きなColorCubeオブジェクトの内側から突き出ています。

 残りのColorCubeオブジェクトは、赤色の面を見せて、3D空間の原点を中心にして配置されています。

太字で示されている変換

 図7の中で、括弧で囲まれた太字は、プログラムによって実行される変換を示しています。赤色の太字で示されている4つの変換は、図8の入力GUIへのパラメータ入力を通じてユーザーが制御できる変換を表します(これらは、図8のGUIの左端の列に示されている変換に相当します)。

 図7で黒色の太字で示されている変換は、ユーザーの制御が及ばないハードコードパラメータを使用します。たとえば、図7の先頭と末尾の近くにある2つの黒色の拡大縮小(scale)変換は、ColorCubeオブジェクトの寸法を拡大縮小して、図8に示されている3D軸として使用する細長いオブジェクトを作成するのに使用されます。同様に、図7の中央近くにある黒色の回転(rotate)変換は、ColorCubeオブジェクトが画面上に最初に表示されるときに、その青色の面がユーザーに向くように(z軸に対して垂直になるように)、オブジェクトを回転させるために使用されます。

redCubeオブジェクト

 図7の先頭近くにあるredCubeという名前のColorCubeオブジェクトは、階層内のすべての変換の上に位置しています。そのため、どの変換の影響も受けずに、図8のユニバースの中心に本来の状態で表示されます。その本来の状態では、赤色の面がz軸に対して垂直であり、原点に配置されます。

赤色の平行移動変換および回転変換

 図7の上部近くにある赤色の平行移動(translate)変換および回転(rotate)変換は、図8の入力GUIの左端の列に示されている上の2つの変換に対応します。この2つの変換は、階層のLeafにあたる残りの7個のColorCubeオブジェクトに影響します。この7個のLeafオブジェクトはすべて、rotatedGroupという名前のグループの子孫(子、孫、ひ孫など)であるTransformGroupオブジェクトに属するためです。

一番上の黒色の拡大縮小変換

 しかし、図7でplainAxisGroupを使用する黒色の拡大縮小(scale)変換は、plainAxisGroupの子である3つのColorCubeオブジェクトにのみ影響します。この変換はそのグループのプロパティであり、他のColorCubeオブジェクトはそのグループの子ではありません。

赤色の平行移動変換および拡大縮小変換

 図7の中央近くにある赤色の平行移動(translate)変換および拡大縮小(scale)変換は、図8の入力GUIの左端の列に示されている下の2つの変換に対応します。この2つの変換は、残りの4つのColorCubeオブジェクトに影響します。これらのオブジェクトがすべて、scaledGroupという名前のグループの子孫にあたるためです。階層の上にある4つのColorCubeオブジェクトには影響しません。

この階層関係を念頭に置く

 プログラムを実行し、図7に赤色の太字で示されている4つの変換の動作を制御する入力パラメータを操作する際には、この階層の関係を念頭に置く必要があります。

十分な背景知識の次は、いよいよコードへ

 背景となる知識はこの辺にして、いよいよプログラムを操作してみましょう。操作は簡単です。Java 3Dでの変換を作成し、使用する方法についても簡単に理解できることを願っています。

次のページ
プレビュー

この記事は参考になりましたか?

japan.internet.com翻訳記事連載記事一覧

もっと読む

この記事の著者

japan.internet.com(ジャパンインターネットコム)

japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.comEarthWeb.com からの最新記事を日本語に翻訳して掲載するとともに、日本独自のネットビジネス関連記事やレポートを配信。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

Richard Baldwin(Richard Baldwin)

大学教授(テキサス州オースティン、Austin Community College)、およびプライベートコンサルタント。Java、C#、およびXMLの組み合わせに特に注目している。JavaアプリケーションとC#アプリケーションの、プラットフォームや言語に依存しない多くの利点に加えて、Java、C#、およびXMLの組み合わせは、Web上で構造化情報を提供するうえでの主要な原動力になると信じている。これまで多くのコンサルティ...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/2145 2010/01/05 11:13

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー