JavaFX

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 タグ:
このエントリーをはてなブックマークに追加
Share on Facebook

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 タグ: ,
このエントリーをはてなブックマークに追加
Share on Facebook

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 タグ: ,
このエントリーをはてなブックマークに追加
Share on Facebook

JavaFX の BarChart を試してみた

JavaFX

このところ JavaFX の学習をさぼっていたので(マイペースともいう)標準装備された Chart をいじってみることにした。

今回も ITPro の「JavaFX 2で始めるGUI開発 第10回 組み込みブラウザとチャート」を参考にさせてもらいました。

実はこちらの記事では Scene Builder を使っているサンプルはなかったので Scene Builder を使って創りはじめました。

スタイルの設定も簡単にできるんだろうなと甘い考えを持っていました。

結果をいうと恥ずかしながら撃沈です。(>_<。)

Scene Builder を使えばスタイルの設定が簡単にできるだろうと思っていたが使い方が解らなかった!

ネット上にサンプルがあるだろうと随分ググったけど見つけられなかった。

結局、Scene Builder 使って簡単にというのは幻となってしまった。

結局、ほとんど ITPro のサンプルまんまになってしまった。

選択した Chart が BarChart だということくらいしかないな・・・

せめて Chart 用のデータを創ってるクラスが Java 8 ならではの機能を利用しているから許してね!

そう言うことで Chart について知りたい方は ITPro の記事を読んでくださいね。

流れ的には X 軸、Y 軸を設定して、それを引数にとった Chart を作る。

BarChart<String, Number> ramdomNumberBarChart = new BarChart<>(xAxis, yAxis);

そして作った Chart にデータを読み込ませるって感じです。

肝心なところはデータを読み込ませるところですね。

このプログラムでは

XYChart.Series<String, Number> ramdomGaussian = new XYChart.Series<>();

IntStream.rangeClosed(0, 9).forEach(i -> {
            ramdomGaussian.getData().add(new XYChart.Data<>(String.valueOf(i), ramdomGaussianGenerator.counter.getOrDefault(i, 0L)));
        });

ramdomNumberBarChart.getData().add(ramdomGaussian);

としてます。

ガウス分布乱数の 0 から 9 のそれぞれの個数を BarChart にセットしました。

おっと、このプログラムの概要を説明するのを忘れてましたね。

大まかにザックリ説明するとガウス分布乱数を作り、それをもとに 0 から 9 の整数だけを 100 万個作る。

そして、それをそれぞれいくつあるかカウントして Map<Integer, Long> で保持する。

つくったガウス分布乱数 Map<Integer, Long> を 0 から 9 の BarChart として表示させる。

右肩下がりの BarChart が表示されればおそらく間違ってはないだろう。

それではツッコミどころはあるけどプログラムのソースを載せます。それはいろいろ試していたと言うことで笑ってください。

 

実行結果は次のようになります。

1

 

スタイルシートを使わない素の状態は次のようになります。

2

 

どちらにしろ右肩下がりの BarChart が表示されました。

めでたし!めでたし! (^_^)

後は、Scene Builder からスタイルの設定を簡単にする方法があればそれも試してみたい。

結局、CSS ファイルをコード側から読み込ませては意味ないし、Java 8 がリリースされたら JavaFX でプログラム組む人も増えるだろうからそのうち GOOD な情報を入手できるだろう。

いずれにしろ、JavaFX はスタイルシート使えるからプログラムの見栄えもガラッと変わってしまう。

デザインセンスのある人が使えば強力な武器となることは間違いない!

残念ながら私はデザインセンスは標準装備されてもないしオプション設定もないので泣きたくなります。

今回、Chart 関連の CSS の設定についてググってみても日本語ではあまり情報がなかった。

参考までに

JavaFX CSS Reference Guide

サンプルは無いし、英語なので泣きたくなります。(>_<。)

外国語での情報も少なかった。

これもそのうち情報が増えてくるのをゆっくりと待つとしよう。

マイペースでお気楽に楽しんでが私のモットーなので今日はここまでできた自分を褒めてあげよう!

Hatena タグ:
このエントリーをはてなブックマークに追加
Share on Facebook

JavaFX 3D Game GT Negative 6 創ってみた。

JavaFX

お正月休みに久しぶりにグランツーリスモやってみたら、もの凄く難しくてストレスたまった。

頭にきたので自分で人生2作目のゲームを創ることにした。

もちろん、JavaFX でね!

ついでに 3D ゲームにしちゃえ!(なんちゃってだけどね。

目標はシンプルで誰でもそれなりに楽しめるゲーム。しかもお手軽に創れる範囲でとしました。

そう、古の白黒ゲームのようにシンプルで優しいゲーム。

出来上がったのはこちら(動画)になります。(ちょっとファイルサイズが大きいです。ごめんね!)

自動車のモデルも作ろうかと思ったのですが面倒なのとお正月休みといえど、いろいろお仕事があるので・・・

メタセコ素材!様のモデルデータ(車とタイヤ)を使わせていただきました。

素敵なモデルデータをありがとうございました。(^_^)

この動画をご覧になって気付かれた方もいらっしゃると思うのですが、

タイヤバリア、と車のナンバープレートがちらついてます。

これ何でこうなるのか解らない! (>_<。)

えっ、ゲーム下手くそだって・・・

それは禁句です。

もの凄く傷つきますのでそってしておいてあげてください。

それとず~~~っと気になってるこのメソッドって何に使うんだろう?

setDepthTest(DepthTest.ENABLE);

これ使うといったい何が幸せになれるんだろう?

まだまだ解らないことだらけだ。

とりあえず今回のゲーム作成においての収穫はフロントタイヤをスピードに合わせて回転させながら、ステアリング操作によって舵角も付けることができたことかな。

ちょっとしたミスでなんでできないのだろうと悩んだことは秘密にしておきます。(ヲヒ

この不完全でシンプルなプログラムで遊んでみたいという人のために Dropbox に置いておきます。

Java 8 build 121 で創りましたので実行環境あるかたはどうぞ!

Dropbox 障害発生からまだ復活してないようなので Google ドライブにおいときます。

https://drive.google.com/folderview?id=0B2xIvGdIzGbAX1lvcTJSTXhPcU0&usp=sharing

MyApp ディレクトリ内にある GT Negative 6 ディレクトリをダウンロード後、

その中にある 3D_Race.jar ファイルをダブルクリックでゲーム開始します。

PC の性能が低いとゆっくりとしたゲームになるかもしれませんがお楽しみいただけると幸いです。

なんでもありのルール無用のゲームです!!!(基本的なルールの実装が面倒くさかったわけではありません。絶対に・・・)

最後にこのシンプルで不完全なゲームを創ってみて、高いお金払ってゲーム買って上手く操作できずにストレスためるより

自分で創った欠陥だらけのゲームのほうが楽しめた。

今年はいい年になるな。きっと!

JavaFX 最高!

Hatena タグ:
このエントリーをはてなブックマークに追加
Share on Facebook

« 古い記事