2013年 11月

Duke を歩かせてみた。 JavaFX 3D アニメーション

JavaFX

今年の JavaOne でチェスの駒に扮した Duke が格好良く歩いていた。

JavaFX 3D テクノロジーを駆使したデモアプリケーションが披露されて会場をわかせていた。

とても素敵だったが Maya と言う高価な 3DCG ソフトと 3DViewer (何故か今は動かないらしい)を使って作られているらしい。(未確認です。)

ネット上にも 3D アニメーション作成のチュートリアルやサンプルもまだ見当たらない。

とは言え、JavaFX 8 には標準で 3DAPI が実装されているので近い将来目にすることもあるだろう。

でも、新しい物好きの私は待ちきれないので手探りでグリグリしてみた。

日本語での情報は下記サイトが解りやすくて良いですね。

JavaFX 3Dを理解する

カメラの円軌道のさせ方は非常に参考になりました。(^^)

// 感謝のコード
IntStream.rangeClosed(1, 1_000_000).forEach(i -> {
    System.out.println(“Thanks!”);
});

現在ネット上にある情報をあちことからかき集め、ちゃんと読めない英語の API ドキュメントを格闘しながら Duke を歩かせることに成功した!

サブシーン用のカメラの設定を

PerspectiveCamera subCam = new PerspectiveCamera(true);

とすることによって、確実に座標位置を把握することに成功した。(たぶん・・・)

JavaOne と同じことはできないがボードの上を Duke が落ちないように行ったり来たり歩かせることにした。

今回は前回使っていたプログラムをカメラの設定変更によって少し変更し、

モデルも自前で用意した。

メタセコイアというリーズナブルな 3DCG ソフトを使用して作りました。

ただ、後で解ったことだけど今は Blender という 3DCG ソフトが人気らしい。

Blender は比較的新しい参考書も出ているし、雑誌やムックでも取り上げられてる機会が多い。

メタセコイアは人気はあるけど新しい参考書や雑誌は見ないですね。

どちらにしろ不器用な私には使いこなせません。(>_<。)

話を核心に戻して、3D アニメーションアプリを作るのに必要なものを考えてみました。

まず、手足が動かせる Duke のモデル。

これはパーツを分けてそれぞれ Timeline を使ってアニメーションさせてみました。

次に、チェスボード。 といってもそれらしきものでいいのでこれも簡単に済ませました。

あとはこれらをジムさんが作られた JFX3DModelImporters を使わせていただきインポートします。

後は座標位置を調べて AnimationTimer を使いアニメーションさせています。

ボードから落ちないようにターンさせてます。

ターンの部分も Timeline を使ってます。

こんなに AnimationTimer や Timeline を使って問題ないのかなって思ったりもしますが動いてます。( ̄。 ̄;)

ひたすら行ったり来たしするだけの面白みの無いアプリとなってます。

これでは寂しいので音楽を流すことにしました。

ちょっと画面も寂しいので DUKE WALK と文字オブジェクトモデルも作って追加しました。

せっかくだからこれも動かしたくなりますよね。

オーディオスペクトラムリスナーを実装して文字数の文だけ 0.01 秒ごとにサンプリングしてそれをもとに適当にスケーリングさせて賑やかにしました。

以上、非常にシンプルに作ることができました。

ただ、影を映す方法が解らなかった。

JavaOne のデモも影は無いように見えるので現時点では無理なのかもしれない。

これでも私的には Complete Success! (^^)

完全版の動画は次になります。各種カメラ操作による写り方が理解できます。

それではこのプログラムを載せておきます。

プログラムの詳しい内容は説明しませんが何をやっているかだいたい解るようにコメントをいれてあります。

特に複雑なことはしてないので解らないことはないでしょう。

注意して欲しいのは、まだ JavaFX 触り初めて間もない私があちこちからかき集めた情報と英語の API ドキュメントとにらめっこしてたぶんこれでいいのだろうと作ったものだということです。

間違いがあれば御教示いただければ幸いです。

 

Hatena タグ:

インテル SSD 530 Series 240GB MLC 2.5inch 7mm DaleCrest BLK SSDSC2BW240A401

Computer

インテル SSD 530 Series 240GB MLC 2.5inch 7mm DaleCrest BLK SSDSC2BW240A401 買っちゃいました。

それも2個!

このブログを書いてる時に価格が一気に上がっていてビックリしました。

私が購入した SSD はバルクで保証期間が3年で普通の商品と比べると2年間短くなっていて、茶箱に入ってました。

バルクなので付属品は一切ありません。

しかし、シールが一枚ついてました。

こんなの使い道ないのでゴミ箱に直行です!

今まで インテル SSD 520 Series 240GB を2台でマザーボードの RAID 機能を利用してストライピングで運用していました。

まだ1年ほどしか使ってないのですが SSD の高速快適環境が素敵で 仮想環境も SSD で構築したくなったので無駄遣いを実行していまいました。

新しく購入したのは今まで使っていた SSD の後継機種ということらしいのでこれに OS をいれて、

今までの SSD を仮想環境用に PC の構成を変更しました。

OS の再インストールも考えたのですが面倒なのでシステムイメージから復元していまいました。(^_^;)

私の PC 構成では Trim 機能はまだ対応できてないのでスピードは OS インストール直後と比べると若干落ちてますが体感上は解らない範囲です。

もちろん、新しい SSD は微妙に性能が向上してます。

これも体感上全く解りません。

CrystalDiskMark というベンチマークソフトで確認したのですが・・・

ちょっとドツボにはまりました。

Random Read 4KB (QD=32), Random Write 4KB (QD=32) の結果が恐ろしく低くなっていたのです。

調べてみたところ NOD32 というアンチウィルスソフトが影響するようでこのソフトをオフにして実行したところ凄く高速に動きました。

これだけ性能の良い製品なのでキッチリ使いたいところですね。

Trim 機能の対応は私の PC 構成では放置されたままなのが寂しい。

1

週に一度と謳うなら早く対応よろしくね♪

 

Hatena タグ: