[ 前へ | 目次 | 次へ ]
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軸を表しています。

今回のサンプルコードでは、3D空間内に 箱型モデルを生成して配置し、それをZ軸まわりに、アニメーションで回転させ続けています。 確かに、Z軸=青矢印まわりに回転していますね。

コード解説

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

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

コード全体

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


coding UTF-8;  // 文字化け対策

// 必要なライブラリの読み込み
import graphics3d.Graphics3DFramework ;
import Graphics3D ;

// モデルのIDを控えておく変数
int axis, box ;

// プログラムの最初に呼び出される関数
void onStart ( int rendererID ) {

    // 画面サイズや背景色の設定(省略可能)
    setWindowSize(800, 600) ;
    setBackgroundColor(0, 0, 0, 255) ;

    // 座標軸モデルを生成して配置
    axis = newAxisModel( 3.0, 3.0, 3.0 ) ;
    mountModel( axis, rendererID ) ;

    // 箱型モデルを生成して配置
    box = newBoxModel( 2.0, 2.0, 2.0 ) ;
    mountModel( box, rendererID ) ;
}

// 画面更新周期ごとに、毎秒数十回呼び出される関数
void onUpdate (int renderer) {

    // Z軸まわりに少しずつ回転
    rotModelZ( box, 0.02 );
}
RotModelAnimation.vcssl

以上です。30行程度の短いコードですね。

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

また、今回のコードは特に、下記の前回のコードを少し拡張したものになっています:

上記のコードとほぼ重複する箇所については、今回は端折り気味に解説します。 なので、上記のコード解説も併せてご参照ください。

それでは、今回のコード内容を読みながら、要点を追ってみましょう。

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

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


coding UTF-8;  // 文字化け対策

// 必要なライブラリの読み込み
import graphics3d.Graphics3DFramework ;
import Graphics3D ;
import Math; // 円周率(PI)の値を使うため
import.txt

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

その後は、まずVCSSLの標準ライブラリから、3DCGの描画機能を提供する 「 Graphics3D 」ライブラリを読み込んでいます。 併せて「 Graphics3DFramework 」も読み込んでいますが、 これは表示画面の構築や、毎秒数十回の画面更新など、土台周りの処理を自動で行ってくれるフレームワークです (参照)。自力で実装もできますが、簡易用途ではこれを使うと楽ができます。

モデルのIDを控える変数の宣言

続いて、立体モデルに割り振られるIDを控えるための変数を宣言しています。


// モデルのIDを控えておく変数
int axis, box ;
globalvars.txt

モデルのIDは、モデルに対して何か操作をする際に、対象モデルを指定するために使用します。 値はモデル生成時に発行されます。

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

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

後で触れる onUpdate 関数とは違い、ここは最初に一度だけ実行されるので、 画面関連の初期設定や、立体モデルの生成・配置などを行っています。


// プログラムの最初に呼び出される関数
void onStart ( int rendererID ) {

    // 画面サイズや背景色の設定(省略可能)
    setWindowSize(800, 600) ;
    setBackgroundColor(0, 0, 0, 255) ;

    // 座標軸モデルを生成して配置
    axis = newAxisModel( 3.0, 3.0, 3.0 ) ;
    mountModel( axis, rendererID ) ;

    // 箱型モデルを生成して配置
    box = newBoxModel( 2.0, 2.0, 2.0 ) ;
    mountModel( box, rendererID ) ;
}
onstart.txt

処理内容は上記コード内のコメントの通りです。 ここでモデルを生成している new〜Model 関数は、そのモデルのIDを割り振って返すので、 それを先ほど宣言した変数「 axis 」と「 box 」に格納しています。

画面更新周期ごとに呼び出される onUpdate 関数

ここまでは、前回のコードとほぼ同じような内容でした。ここからが今回の拡張点です。

今回は、前回は使わなかった onUpdate 関数を宣言し、その中でモデルを回転させています。


// 画面更新周期ごとに、毎秒数十回呼び出される関数
void onUpdate (int renderer) {

    // Z軸まわりに少しずつ回転
    rotModelZ( box, 0.02 );
}
onupdate.txt

上記の中で使っている rotModelZ 関数は、モデルをZ軸周りに、指定した角度だけ(追加的に)回転させる処理を担います。 詳細は前回のコード解説をご参照ください。

さて、前回は上記の rotModexZ 関数を、onStart 関数の中に記述していました。 onStart 関数は最初に一度だけ実行されるので、モデルの角度が少し変わっただけで、その後は動いたりは一切しませんでした。

しかし今回は、新たに「 onUpdate 」関数の中で rotModexZ 関数を記述しているのがポイントです。 この onUpdate 関数は、画面の更新周期毎に、具体的には毎秒数十回ほど、繰り返し実行され続けます。

なので、その中の rotModelZ 関数も繰り返し呼ばれ続けて、毎秒数十回、モデルの角度が小刻みに回っていきます。 そうすると、人間の目には連続的に回っているように見えるのです。

子供の頃に、ノートの各ページに少しずつ違う絵を書いて、 いわゆるパラパラ漫画としてアニメーションさせた方は多いのではないでしょうか。 ちょうどあれと同じ要領ですね。

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

ライセンス

この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空間に配置します。
この階層の目次
RINEARN からのお知らせ
※ VCSSL は RINEARN が開発しています。

各ソフトやVCSSLの英語版ドキュメント整備がほぼ完了
2025-06-30 - RINEARNでは2年前から、AIの補助による英語版ドキュメントの大幅拡充計画を進めてきました。今回、主要ドキュメント&コンテンツの英訳がほぼ完了し、一応の目標水準に達しました。詳細をお知らせします。

VCSSLの最新版をリリース: 外部プログラムとの連携機能を少し強化、他
2025-05-25 - VCSSL 3.4.52をリリースしました。外部プログラム(C言語製の実行ファイル等)との連携機能を少し強化し、文字化け対策やOS判別などを可能にしました。他にも細かい機能追加があります。詳細をお知らせします。

VCSSLの最新版をリリース、Java 24上での非互換な挙動を対処
2025-04-22 - VCSSL 3.4.50をリリースしました。Java 24環境上でのネットワークドライブ関連のファイルパス解決で、従来環境とは異なる挙動が生じていたのを解消しました。詳細をお知らせします。

リニアングラフやVCSSLの最新版をリリース、目盛りの位置や内容を自由に指定可能に!
2024-11-24 - リニアングラフ3D/2Dを更新し、自由な位置に、自由な表記内容の目盛りを描けるようになりました! 併せて、Java言語やVCSSLでの、プログラム制御用APIも拡張しています。詳細をお知らせします。

Exevalator 2.2 をリリース、TypeScript 対応によりWebブラウザ上で動作可能に
2024-10-22 - オープンソースの式計算ライブラリ「Exevalator(エグゼバレータ)」の2.1をリリースしました。新たに TypeScript に対応し、Webブラウザ上での式計算にも使えるようになりました。詳細を解説します。

アシスタントAI作成の舞台裏(その2、作成編)
2024-10-12 - アシスタントAIの作成方法解説の後編です。実際にChatGPTの「GPTs」機能を用いて、アシスタントAIを作成する手順や、独自の知識をもたせたり、精度を出すためのノウハウなどを解説しています。

アシスタントAI作成の舞台裏(その1、基礎知識編)
2024-10-07 - アシスタントAI作成方法解説の前編です。今回はまず、アシスタントAIを作る前に抑えておきたい、基礎知識を延々と解説しています。そもそもLLM型AIとはどんな存在か? RAGとは何か? 等々です。

ソフトの利用をサポートしてくれるアシスタントAIを提供開始!
2024-09-20 - RINEARN製ソフトの使い方の質問応答や、一部作業のお手伝いをしてくれる、アシスタントAIを提供開始しました。ChatGPTアカウントさえあれば、誰でも無料で使用できます。使い方を解説します。

Exevalator 2.1 をリリース、新たに Visual Basic に対応
2024-07-28 - オープンソースの式計算ライブラリ「Exevalator(エグゼバレータ)」の2.1をリリースしました。今回から、新たに Visual Basic(VB.NET)でも使用できるようになりました。詳細を解説します。

関数電卓 RINPn(りんぷん)、Esc キーで計算式の一発クリアが可能に
2024-07-20 - 関数電 RINPn の Ver.1.0.2 をリリースしました。今回から、キーボードの「 Esc 」キーを押すと、入力中の計算式を一発でクリアできるようになりました。詳細を解説します。