2014

JavaFX 3DViewer を使って Maya 3D アニメーションファイルをインポートしてみた。

JavaFX

まだ開発途中の 3DViewer を使って Maya 3D アニメーションファイルを JavaFX プログラムにインポートしてグリグリしてみた。

使い方がよく解らないので適当なことをやってます。

まず、先日インポートして再生するだけのプログラムの動画を YouTube にアップロードしたものがこちらです。

 

今回は特定の位置でジャンプ、停止などの操作を可能にできないかチャレンジしてみました。

結果としてはできたのですがキーフレーム指定での方法は解りませんでした。

このサンプルはネット上でフリーの出来上がったものを使用していますのでフレーム位置の確認方法が思いつきません。

Maya を買ってしまえばいいのだけどそうそう使う機会はないと思うので・・・(^_^;

そういうわけで時間で処理をしています。

とにかく簡単にインポートして使えるので皆さんも気軽に試してください。

JavaFX から扱うには下記コードを参考にしてもらえればいいと思います。

ただ、これで動いたと言うだけで正しい使い方とは限りませんのでご容赦のほどを!

 

maya

 

これで動かした動画です。

約3秒ほどで開始位置(頭)に戻らせてます。

思ったより簡単に再生できるんですよね!

I want Maya, however since it is expensive, I cannot buy it.

Hatena タグ:

Java Developer Connection のプログラマチャレンジ Vol.2

Java JavaFX

この前のエントリーの続きです。

前回は検索ファイルのハイライト表示が Swing のように簡単にできそうにないとしてあきらめてました。

JavaFX8 で導入された TextFlow を使えば実現できるんじゃないかと思っていたところ Twitter で TextFlow で、できるんじゃないかと教えていただいたので早速チャレンジしてみました。

結果からいうと Swing の JTextPane より柔軟性に優れ、テキストの装飾の自由度も遙かに JavaFX8 の TextFlow のほうが高いです。

0

ただし、編集できないです。(>_<。)

編集とかする必要があれば使い慣れているエディタを使うことになるだろうから良しとしましょう。(^_^;

あと JavaFX では CSS を使ってプログラムの見栄えを良くしたり、ちょっとしたエフェクトをかけたりすることができます。

例えば、Node の上にマウスカーソルがのったら、出たら、押されたら、 それらの処理を Java コードで書くと次のようになります。(たぶん、、、)

11

 

これを CSS を使うとどうなるか。

Button の例を次に示します。

12

これは Button 全てに適用させてます。

めっちゃ楽です!

Button それぞれにエフェクトを変えたい場合は ID を設定して個別の記述すればいいだけです。

CSS is Great!

しかし、こんなに便利で簡単に大きな効果を得られるのにネット上では CSS の情報はかなり少ないです。

今回かなりネットサーフィンしてあーでもない、こうでもないと悩みました。

その中で TabPane に Tab がいっぱいになってポップアップリストビューが表示されたときのチェックマークの色を変えたかったのですがどれだけ探しても解決方法をみつけることはできませんでした。

1

それと WebView のスクロールバーもマウスがのったらグラデーションするようにしたかったのですが何故かできませんでした。

なんで WebView だけ?

まだまだ JavaFX 解らないことだらけなのに CSS まで(>_<。)

でも、楽しいからもっと時間がほしい! (*^▽^*)

あと、ついでにこんなどうでも良いような(迷惑な)こともやってみました。

2

SubScene を透過させてみました。

プログラム本体を移動させて表示させると 3D マスコット(そんな良いもんじゃ無い!)みたいですね。

3

上の Label と Button は普通の Scene なのでこれを取っちゃえば面白いことができそうです。

3D 時計を作ってある時間に 3D の鳩が画面に出てきてポッポ、ポッポと鳴き出すとか(なんのこっちゃ!)

発想力が貧相だな・・・

なにはともあれ、楽しめたので Happy だ!

動画も貼っておきますので興味のある方はみてくださいませ!

 

JavaFX is Great!

Hatena タグ: ,

Java Developer Connection のプログラマチャレンジ

Java JavaFX

Java Developer Connection テクニカルティップって覚えている人っていますよね?

そこでプログラマチャレンジってのがあって当時私もチャレンジしてみたのですが

簡単そうで難しかった思い出があります。

そもそも当時の Java はタブにコンポーネントを貼れないため閉じるボタンをタブじゃないところに置かなくてはいけませんでした。

非常にダサかったです。

現在リリースされている Java8 では次世代 UI の JavaFX8 が使えますので最新の Java8 を使って作ってみました。

ちょっと予定していた機能を実装できなかったり、Java8 の Files.wark メソッドでの探索処理ではまったりでたくさん泣きました。

結局、完成には至りませんでしたがそこそこできたので良しとします。(ヲヒ

大文字、小文字を区別するかしないか

サブディレクトリも検索するかどうかをチェックボックス付きのメニューアイテムで選択できるようにしました。

ディレクトリチューザーを開くようにして容易に検索場所を指定できるようにしました。

1

 

PathMatcher を使っているのでエディタブルな ComboBox を利用して複数の拡張子を指定できるようにしました。

検索対象のファイルのリストをタブにまとめました。

そしてリストビューにファイルのパスを表示するようにしました。

2

 

リストビューのパスを選択するとそのファイルの表示をするようにしました。

swing では検索ワードを色をつけて太字とすることが可能だったのですが JavaFX ではどうしたらいいか解りませんでした。

TextFlow を使えばなんとかなるのかなって思ってみたのですがちょっと解決方法が思いつきませんでした。(残念!

3

 

そこで、それならば代わりに印刷機能を付けちゃおうって思ってやってみたのですが・・・

これまた、頭がドッカーン!!

何故か印刷ダイアログのキャンセルボタン、もしくはウィンドゥの閉じるボタンを押しても印刷してくれるという・・・

凄すぎるよ!JavaFX8 の PrintAPI

おまけに一枚分しか印刷できない。(たぶんこれは私の理解不足です。

4

 

あと、以前のエントリーで Java8 の Files.wark メソッドが便利だと書いたのですが訂正します。

使いづらいです!

java.nio.file.AccessDeniedException で仕事放棄します。(;´Д`)

しかたないので Java7 の古い API でグルグルまわしました。

基本的な機能はだいたいできたので良しとします。

あとは音とかアラートダイアログとかアバウトとか細かい作業なのでどうでもいいです。

どうせ自分専用だしね! (^_^)

あれから12,3年くらい経つのかな?

ずいぶん良くなった!

Java 最高!

Hatena タグ: ,

Windows 8.1 システム修復ディスク 作成方法 (裏技)

Windows

今さらですが Windows 8.1 のシステム修復ディスクの作成方法を紹介します。

はっきり言って Windows 8 以降 USB ストレージに回復環境を作って利用するほうが速くて便利です。

しかし、どうしても Windows 7 以前のようにシステム修復ディスクが必要だというあなたのために!

今回紹介する方法は Windows 8 がリリースされて、システム修復ディスクの作成がなくなっているため

力技で作る方法をマイクロソフトコミュニティのフォーラムで紹介されていた方からの情報です。

あくまでも自己責任でお願いします。

まず、USB メモリーに回復ドライブを作成します。

既に作成済みの方は読み飛ばしてください。

コントロールパネルを起動して、表示方法を「小さいアイコン」にします。

1

 

次に、「回復」をクリックします。

2

 

「回復ドライブの作成」をクリックします。

3

 

回復ドライブを作成するために「次へ」をクリックします。

4

 

回復ドライブを作成する USB ストレージ(メモリー)を選択します。

そして、「次へ」をクリックします。

5

 

注意事項を良く読んで間違いがないか確認して「作成」をクリックします。

6

 

これで回復ドライブの作成は終了です。

Windows 8.1 Update 用 Windows アセスメント & デプロイメント キット (Windows ADK)  を下記アドレスより

ダウンロード、インストールします。

http://www.microsoft.com/ja-jp/download/details.aspx?id=39982

7

 

「ダウンロード」をクリックします。

直接インストールする場合は「実行」をクリックします。

8

 

ファイルサイズが大きいので時間がかかりますのでのんびりしてください。

「場所の指定」は特に問題がなければデフォルトのままでいいでしょう。

9

 

「カスタマー エクスペリエンス向上プログラム(CEIP)への参加」はお好みで。

10

 

「使用許諾契約」をよく読んで問題なければ「同意する」をクリックします。

11

 

インストールするコンポーネントは

「Deployment Tools」

「Windows Preinstallation Environment (Windows PE) 」

の二つだけです。

12

 

「インストール」をクリックしてインストールを開始します。

13

 

インストールが完了するとこのような画面が表示されます。

「閉じる」をクリックして終了します。

14

 

それではシステム修復ディスクを作成するために必要な材料は揃ったので早速取りかかりましょう。

任意の場所に「Restemp」と言う名前のディレクトリ(フォルダー)を作ります。(ディレクトリの名前は適当でいいです。)

私は E ドライブ直下に作りました。

そして、「Restemp」ディレクトリの中に「ISO」ディレクトリを作ります。

次に、先ほど作成した回復ドライブの中身をすべてを「ISO」ディレクトリにコピーします。

回復ドライブの中のファイルはシステムによって違う場合がありますが、私の環境は下図のようになってました。

15

 

次のステップに移ります。

「Restemp」ディレクトリの中に先ほどインストールした Windows 8.1 Update 用 Windows アセスメント & デプロイメント キット (Windows ADK) から

「etfsboot.com」 ファイルをコピーします。

「etfsboot.com」 ファイルの場所はデフォルトのインストール場所だと

C:\Program Files (x86)\Windows Kits\8.1\Assessment and Deployment Kit\Deployment Tools\amd64\Oscdimg 配下にあります。

 

これで下準備はできたのでシステム修復ディスクの ISO ファイルを Windows 8.1 Update 用 Windows アセスメント & デプロイメント キット (Windows ADK) を使用して作成します。

スタート画面のアプリ一覧(アプリビュー)の中の 「Windows Kits」[Windows ADK」「展開およびイメージング ツール環境」 を右クリックし、「管理者として実行」 を選択する。

下図はスタートメニューを復活させるサードパーティーのアプリケーションをインストールしている私の環境の場合です。

16

 

次のコマンドを入力します。

oscdimg -n -h -l回復 -bE:\Restemp\etfsboot.com E:\Restemp\ISO E:\Restemp\Recoverydisk.iso

17

 

無事にシステム修復ディスクの ISO ファイルが作成されれば Done. と最後に表示されます。

18

 

E ドライブ直下の 「Restemp」に「Recoverydisk.iso」ファイルが作成されています。

そのファイルを CD 書き込んで終了となります。

「Recoverydisk.iso」ファイルを右クリックして表示されるコンテキストメニューより「ディスク イメージの書き込み」をクリックして

あとは出来上がるの待つだけです。

19

 

非常に簡単に作成できます。

Windows 8.1 Update 用 Windows アセスメント & デプロイメント キット (Windows ADK) をコネコネして必要コンポーネントをマウントして

コミットしてグリグリするよりもお手軽です。

ただ作成したシステム修復ディスクは起動に時間がかかります。

システムによっては5分くらいかかる場合がありますのでフリーズした。もしくは上手く起動しないと勘違いされる場合もあります。

気長に待ってみてください。

それではWindows 8.1 のシステム修復ディスクの作成方法 (裏技)を終わります。(^_^)

Hatena タグ:

Java8 時代の素数の求め方

Java

「創るJava」 の著者である、きしださんが「Java8時代の文字列連結まとめ」という面白い記事を書いてくれた。

文字列連結だと Java8 での Stream API でコネコネしても感動的な結果は得られず残念な結果となった。

つまり文字列連結は今まで通りのほうが速いよってことのようです。

さて、それではあまりにも Java8 の Stream API が可愛そうなので Stream API 威力を発揮するようなプログラムを組んでみます。

といっても簡単でシンプルなものにします。

みんな大好き素数を表示させるプログラムです。

素数と言えばエラトステネスの篩だと誰もが思うのですが、それは無かったことにしてください。( ̄。 ̄;)

それでは一番シンプルで Java8 じゃないプログラムを組んでみました。

このプログラムは 32,000,000 までの自然数に素数がいくつあるか検出し、その処理時間を計測しています。

ちなみに検出された素数はコメントアウトしてある部分を解除すれば表示されます。

それでは気になる処理時間は次のようにけっこう時間かかってます。(>_<。)

1973815個の素数を検出しました。
0時間2分53秒40869402600000626

それではこのプログラムを現代的に並行処理させてみます。

これも Java8 じゃないプログラムです。

そう、Executor を使って平行処理プログラムを組んでみました。

実はこのプログラムは随分前に Executor の学習にネットで見つけたサンプルをほぼいただいてます。

こういうのは思いつかなかったなぁ・・・

で、きっと処理時間が短縮されているだろうと予想される結果は次のとおりです。

1973815個の素数を検出しました。
0時間0分14秒2449762050000004

おおっ! 凄いぞ! さすが Java5 の主役の Executor だ!

ついでだから NetBeans のプロファイラでのスレッドと CPU を貼っておきます。

PrimeNumber4Executor

ex1

 

さて、そろそろ古き時代のコードは見飽きた頃合いになってきましたね。

Java8 時代の素数を求めるプログラムを組んでみました。

凄くシンプルで Java5 時代の Executor より綺麗です!

それに Java8 に慣れるとこちらの方がソースコードの可読性が良いと思うようになります。

さぁ、Java8 時代の素数を求めるコードの処理速度はどうなんだ!?

1973815個の素数を検出しました。
0時間0分3秒5042672730000004

なんと! Executor 使って並行処理してプログラムより5倍近く高速に処理されてます!

ParallelStream 使いどころを誤らなければ凄く幸せになれそうな気がする。

このプログラムは parallel() メソッドをちょこっと書くだけでなんと並行処理をしてくれます。

内部でJava7 の主役? として活躍した Fork/Join Framework が使われています。

こちらもついでにスレッドと CPU のプロファイル画像を貼っておきます。

Fork/Join Framework が使われているのが確認できますね。

PrimeNumber4ParallelStream

PPS1

 

この Java8 時代のプログラムですが 20 行目の parallel() メソッドをコメントアウトして

シーケンシャル処理させると処理時間は次のようになりました。

1973815個の素数を検出しました。
0時間0分49秒009503713000000857

一番最初に紹介した古いプログラムよりかは高速ですね。でも。遅いよね。

ちなみにスレッドモニターでシーケンシャル処理されていることが確認できます。

PrimeNumber4NonParallelStream

 

文字列連結では Java8 時代のプログラムは残念な結果となったけど素数検出プログラムでは本領発揮といったところですね!

最後に、Java8 凄い!(^_^)

Hatena タグ:

« 古い記事 新しい記事 »