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

[公式ガイドサンプル] 立体モデルを回転させる

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

スポンサーリンク


使用方法

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

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

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

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

» 展開がエラーで止まってしまう場合や、ファイル名が文字化けしてしまう場合は…

プログラムの起動

Windows をご使用の場合

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

正常に起動できると、初回のみ、Java実行環境を入手するか等を尋ねられるので、適時答えて済ませると、プログラムが起動します。 2回目以降はすぐに起動します。

» うまく起動できずにエラーになってしまう場合は…

Linux 等をご使用の場合

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

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

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

起動後

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

3DCG表示ウィンドウ
3DCG表示ウィンドウ
3D空間の内容が表示されます。マウスでの視点操作や拡大・縮小も可能です。

上図における赤/緑/青色の矢印が、それぞれX/Y/Z軸を表しています。

今回のサンプルコードでは、まず 箱型モデルを生成して配置し、それをZ軸まわりに 45度( = π/4ラジアン)だけ回転させています。 箱型モデルは、生成・配置された時点では、X/Y/Z軸が3面の中心を貫く角度(各辺が各軸に平行または直角になる角度)で配置されます。 確かにそこから、Z軸=青矢印まわりに角度がついていますね。

コード解説

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

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

コード全体

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

以上です。20行ちょっとの短いコードですね。

このコードは 「 VCSSL 3DCG開発ガイド 」 の 「 立体の回転 」 の回に登場するサンプルコードなので、3D機能の土台からの説明は、上記の開発ガイドをご参照ください。

以下では、コードを読みながら、要点のみをかけ足で説明していきます。

先頭: 文字コード宣言とライブラリの読み込み

以下では、各行で何をやっているのかを見ていきます。 まずは先頭です:

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

その後の2行は、VCSSLの標準ライブラリから、3DCGを扱うための 「 Graphics3D 」ライブラリと 「 Graphics3DFramework 」ライブラリを読み込んでいます。

Graphics3D だけでも3DCGの描画は可能なのですが、それだと表示画面の構築や、毎秒数十回の画面更新処理などを、 自分で書く必要が生じます(参照)。 毎回それを書き下すのは手間なので、そういった土台周りの処理を自動で行ってくれるフレームワークが Graphics3DFramework です(参照)。

最後の「 import Math 」は、数学関連の関数/定数を提供する「 Math 」ライブラリを読み込んでいます。 これにより、円周率 π の値を、今回のコード内で定数「 PI 」として使えるようになります。

フレームワークから準備完了後に呼び出される onStart 関数

さて、上で読み込んだフレームワークは、プログラム起動後に、画面構築などの下準備を全て済ませた上で、 下記のような「 onStart 」という関数内に書いた処理を実行してくれます:

今回はこの onStart 関数内に処理を記述しています。

画面の初期設定など

では、onStart 関数内の記述を頭から見ていきましょう。 まず下記のように、画面の初期設定を行っています。内容はコメント通りです。

モデルを生成して配置

その後は、座標軸モデル(赤/緑/青の矢印モデル)と箱型モデルを、それぞれ生成して配置しています。

上の「 new〜Model 」のようなモデル生成関数は、生成したモデルに、「モデルID」という一種の管理番号を割り振って、それを戻り値として返します。

モデルに対して操作をするには、そのモデルIDを各種操作関数に渡します。 上でも既に、モデルを配置する mountModel 関数に渡していますね。

モデルの回転

ここからが、今回の本題です。

箱型モデルは、生成・配置された時点では、X/Y/Z軸が3面の中心を貫く角度(各辺が各軸に平行または直角になる角度)で配置されます。 下図の左側のような具合です:

そして今回のコードでは、上図左側の状態から、rotModelZ 関数を用いて、Z軸まわりに少し回転させています。下記のコードで、その処理の結果が上図の右側、といった具合です。

この rotZModel 関数は、最初の引数に、移動対象のモデルのIDを指定します。 ここでは箱型モデルのIDを控えてある変数 box ですね。

そして、その後の引数に、Z軸まわりの回転角度を指定します。 ただし角度の単位は、日常生活でなじみのある「度」ではなく、 プログラム関連や理工系の分野などでよく使われる「ラジアン」を用います。

※ ラジアンとは

ラジアンは、角度を、「 半径 1 の円において、円弧(円周を切り取った一部)の長さ 」で表したものです。 半径 1 の円をぐるっと一周した長さは \( 2 \pi \) なので、「 360度 = \( 2 \pi \)ラジアン 」になります。 その半分の180度は\( \pi \)ラジアン、さらに半分の90度は\( \pi / 2 \)ラジアン、さらに半分の45度は\( \pi / 4 \)ラジアン…といった具合です。

で、回転方向については、 「 回転軸のプラス方向に、右ねじ(普通のねじ)を打ち込む際に、ドライバーを回す回転方向がプラス 」 となります。 ここで「回転軸のプラス方向」というのは、座標軸モデルの矢印が向いている方向です。 なお、逆方向に回したい際は、マイナスの角度値を指定します。

言い換えると「 軸のプラス方向を向いて、時計回りがプラス 」なんですが、筆者にはねじとドライバーのイメージの方が体感的にイメージしやすいです。

※ 回転方向は、3DCGを扱うライブラリ/ソフト/APIなどによって異なり、逆の場合もよくあります。 具体的には、座標系や座標変換を「右手系」で扱うものは上記の通りで、「左手系」で扱うものは逆になります。 VCSSLの3DCG機能は右手系です。

という事で、先ほどのコードは、 「 box モデルを、Z軸の向きに右ねじを打ち込む回転方向に、\( \pi / 4 \)ラジアン( = 45度)回転させる 」 という処理になっていたわけです。

なお、今回はモデルを回転させましたが、 全く同様に、rotPolygonX, rotPolygonY, rotPolygonZ, rotPolygon といった関数群でポリゴン単位の回転も可能です。 引数もほぼ同様で、最初の引数にモデルのIDの代わりに、ポリゴンのIDを指定するだけです。

今回のコード解説は以上です。 他の3D関連処理も一通り知りたいという方は、 VCSSL 3DCG開発ガイド のコーナーをご覧ください。

記事の著者

松井 文宏 - Fumihiro Matsui
RINEARN代表、VCSSL & Vnano やリニアングラフ3D/2D、その他 諸々を開発しています。

ライセンス

この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 氏の米国およびその他の国における商標または登録商標です。
  • その他、文中に使用されている商標は、その商標を保持する各社の各国における商標または登録商標です。


スポンサーリンク



[ 前へ | 目次 | 次へ ]
[公式ガイドサンプル] 立体モデルを回転させるアニメーション

「VCSSL 3DCG開発ガイド」内のサンプルコードです。立体モデルを、アニメーションで回転させ続けます
[公式ガイドサンプル] 立体モデルを回転させる

「VCSSL 3DCG開発ガイド」内のサンプルコードです。立体モデルを、指定した角度だけ回転させます。
[公式ガイドサンプル] 立体モデルを移動させるアニメーション

「VCSSL 3DCG開発ガイド」内のサンプルコードです。立体モデルの位置を、アニメーションで動かします。
[公式ガイドサンプル] 立体モデルを移動させる

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

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

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

関数電卓 RINPn をアップデート、折りたたみ可能なキーパネルを搭載
2022/11/11 - 関数電卓 RINPn のアップデート版を公開しました。画面デザインを少し見直し、今回から、1クリックで折りたたみ/展開が可能なキーパネルを搭載しました。詳細をご紹介します。

リニアングラフ3Dをアップデート、軸反転がリセットされるバグの修正など
2022/11/03 - リニアングラフ3Dのアップデート版をリリースしました。軸反転がリセットされるバグや、設定ファイル読み込み時に等高線の区間数が反映されないバグの修正を行いました。

各ソフトウェアのアップデートのお知らせ
2022/10/12 - リニアングラフ3Dなどの各ソフトウェアのアップデート版を、一括でリリースいたしました。各ソフトの更新内容をお知らせします。

新着
角度の「度」とラジアンとを相互変換し、図示もするツール

45度などの「度」の値と、ラジアンの値とを相互に変換できるツールです。対応する角度の図示もできます。
2022/11/22
[公式ガイドサンプル] 立体モデルを回転させるアニメーション

「VCSSL 3DCG開発ガイド」内のサンプルコードです。立体モデルを、アニメーションで回転させ続けます
2022/11/18
[公式ガイドサンプル] 立体モデルを回転させる

「VCSSL 3DCG開発ガイド」内のサンプルコードです。立体モデルを、指定した角度だけ回転させます。
2022/11/17
[公式ガイドサンプル] 四則演算の計算順序や、カッコを使った順序指定

「VCSSLスタートアップガイド」内のサンプルコードです。四則演算が計算される順序や、カッコを使って順序を指定する方法を例示します。
2022/10/31
[公式ガイドサンプル] 割り算の結果や、余りなどを画面に表示する

「VCSSLスタートアップガイド」内のサンプルコードです。整数や小数(実数)における割り算結果や、整数の場合の余りを画面に表示します。
2022/10/30
開発元Twitterアカウント