JavaFX 3Dグラフィックス〜チュートリアル1:バージョンが古かった〜

イントロダクション

今までに、Gluonのプラグインでスマホアプリの起動をやってきました。とりあえずは画面が表示されて、画面の遷移もできた状態です。

 

次は。。。

じゃんけんゲームを作ろうとしていますが、今回は3D描画でやりたいと思っています。数学の勉強も兼ねるので。。。そこで使用するのが

JavaFX 3D

昔、Java3Dとかいうライブラリがあってそれと似た様な感じのソースになってました。が参考にしたサイトが古いのか?うまく動かずOracleのチュートリアルで頑張ろうという流れになりました。参考にするサイトはこちらです。

Oracleのチュートリアル

チュートリアルのページを読んで見ると部分的にしか記載がないのでコードが全部書いてあるものを探しました。ここであたりかな?とか部分的にやろうとしましたが、全部つながっている様です。諦めて全部やります。

初めに、参照するソースをダウンロードする必要があります。MoleculeSampleApp.zip

上のZipファイルです、駄菓子菓子これはNetBeas用のプロジェクトらしくEclipseには使えないと思ったのですが、ソースだけ失敬することにしました。

余計なものもありますが、こんな感じでパッケージエクスプローラ上は表示されています。

とりあえずはこれで準備完了。

チュートリアルを追いかける

まぁ色々書いてあるけど、このコードコピって貼り付けて。。。と書いてあります。実際にコピペでも読むだけよりは全然違います。

そして実行

あれ?なんかチュートリアルと違うぞ?なんなんだろう?

ソースを追いかけていくと。。。なるほどソース読んで足りないコードを追加しろというわけですな。

実行結果はこんな感じになりました。


これも違う様な気が。。。

続きをやったけど、コードのコピーをしている最中にビルドエラーが出るし。。。

ちょいとこのチュートリアルは中止するかな?

うん、やめとこう(笑)

<追記>

ちょいと気になり、JavaFXのバージョンを確認したところ

JAVA_HOME/jre/lib/javafx.propertiesの中を見ると。。。

javafx.runtime.version=8.0.141
javafx.runtime.build=b14

とりあえずは「古い」ということで。。。

ここは、3Dではなく2Dでやろうかと。。。

言い訳ですが、戦略的撤退です!

でわでわ。。。

[rakuten ids="akibamac:10585811"]









Eclipse Android〜Gluonでアプリを作る3: 3Dモデル〜

イントロダクション

今までに、以下の様なことをやりました。

  1. EclipseにGLUONのプラグインをインストールとハローワールド
  2. 画面の遷移

3Dモデルを表示する

とりあえずは、球(Sphere)を表示しました。

シンプルに球のみです、ソースコード以下に。。。

// Viewクラスを継承して作成
public TestingView() {
	Sphere sp = new Sphere(30.0);
	setCenter(sp);
}

前提として、JankenGameクラスからBasicViewを表示した後にボタンを押下してから上のクラスを表示しています。

public class BasicView extends View {

    public BasicView() {
        
        Label label = new Label("Hello JavaFX World!");

        Button button = new Button("Change Text!");
        button.setGraphic(new Icon(MaterialDesignIcon.LANGUAGE));
        button.setOnAction(e -> {
        	setCenter(new TestingView());
        });
        
        VBox controls = new VBox(15.0, label, button);
        controls.setAlignment(Pos.CENTER);
        
        setCenter(controls);
    }

    @Override
    protected void updateAppBar(AppBar appBar) {
//        appBar.setNavIcon(MaterialDesignIcon.MENU.button(e -> System.out.println("Menu")));
//        appBar.setTitleText("Basic View");
//        appBar.getActionItems().add(MaterialDesignIcon.SEARCH.button(e -> System.out.println("Search")));
    }
    
}

上の赤い字が作成したクラスです。

ここからが難しい

どんな画面にして「じゃんけんゲーム」を開始するか?サンプルで作成するので深く考えるつもりはありませんが、如何せん「見た目」に関してはとことん弱いので大きな課題です。。。

まとめ

「JanakenGame」クラスが起動して→「BasicView」が起動(表示)→ボタンを押下すると「TestingView」が起動(表示)する流れでアプリケーションを作成しました。

Gitには以下のファイルがアップロードしてあります。

  1. JankenGame.java
  2. BasicView.java
  3. TestingView.java

ソースの内容は上のファイルを参照してください。

[rakuten ids="akibamac:11074285"]









Eclipse Android〜Gluonでアプリを作る2〜

イントロダクション

前回は、GLUONプラグイン(for Eclipse)をインストールしました。とりあえずは画面が表示されたので次のステップです。

参考サイトはこちらのドキュメントページです。

まずは画面の遷移を行いたい

ここのサイト(GLUONサイト)で調べて、Eclipseからアプリを動かしながら確認しました。

<クラスの構成>

「src/main/java」にメインになるクラスがありました。自分の作成するアプリの名前が「JankenGame」なので「JankenGame.java」と言うファイルが生成されていました。

中のソースはこんな感じです。

<JankenGame.java>

@Override
public void init() {
    addViewFactory(HOME_VIEW, BasicView::new);
}

@Override
public void postInit(Scene scene) {
    Swatch.BLUE.assignTo(scene);

    ((Stage) scene.getWindow()).getIcons().add(new Image(JankenGame.class.getResourceAsStream("/icon.png")));
}

init()で表示する画面(View)を登録、今回は1つだけ登録します。

実装しやすい方法で画面遷移などを実装できるので、複数パターンの画面遷移方法がある様です。

今回の実装方法は、単純に。。。

ボタンを押すと画面が変わる方法です。

初期表示される「BasicView」にボタンを登録しておき、ボタンが謳歌されたら「TestingView」を開くと言う様な形で実装しました。


JankenGameクラスから表示されたBasicView画面のコードは以下になります。

public BasicView() {
    
    Label label = new Label("Hello JavaFX World!");

Button button = new Button("Change Text!");
    button.setGraphic(new Icon(MaterialDesignIcon.LANGUAGE));
    button.setOnAction(e -> {
    	setCenter(new TestingView());
    });
    
    VBox controls = new VBox(15.0, label, button);
    controls.setAlignment(Pos.CENTER);
    
    setCenter(controls);
}

// 画面の上部分にあるバーは不要なのでコメントアウト
@Override
protected void updateAppBar(AppBar appBar) {
//        appBar.setNavIcon(MaterialDesignIcon.MENU.button(e -> System.out.println("Menu")));
//        appBar.setTitleText("Basic View");
//        appBar.getActionItems().add(MaterialDesignIcon.SEARCH.button(e -> System.out.println("Search")));
}

赤文字で記載した部分が画面の切り替え部分です。

そして、TestingViewクラスは単純にLabelを表示しているだけです。

こんな感じで画面の遷移ができました。

<ポイント>

  1. 画面を意味する「View」クラスを継承して自分の作成したい画面を作成する
  2. ViewクラスはGroupクラスなどと同じ様にLayerとして使用できる
  3. Viewクラスを継承したクラスを量産して画面をあちらこちらと切り替えができる

動かしてみたところ、こんな風に思いました。

でわでわ。。。

[rakuten ids="onkyodirect:10003046"]

Eclipse Android〜Gluonでアプリを作る〜

イントロダクション

ここ数日、JavaFXを使用していたのでAndroidのアプリでも作ろうかと考えました。JavaでAndroidってことは「Android Studio?」と思ったのですが、ありました。

Gluon

IDE Plugins

英語のサイトなので翻訳して読みます(笑)

<初めページ(リンクあり)>

ここで無料版とか、有料版とか選びます。今回は無料版を選択。

色々書いてあります。が下の方に。。。

こんなものがあり、Eclipseのプラグインでインストールできる様でした。

そして、サイトの内容は読んでいないけれどEclipseのプラグインがあると言うことで。。。


上記の様な感じで簡単にインストールでいました。

そしてこのページの手順に従いプロジェクトを作成します。

途中Emailとかの入力が求められるけど入力しなくても良さそうです。※自分は入力しました。

こんな感じで入力していきます。

そしてできたプロジェクトを見ると2つあります。

「入力名」プロジェクトと「入力名App」プロジェクトがありました。

作成されたものの内容はサイトに記載がありました。

さまざまなフォルダが作成されたことがわかります。

main: すべてのプラットフォームに共通のコード用
desktop:  デスクトップ上でのみ実行されるべきコード用
android:  Android固有のコード用
ios:  iOS固有のコード用

 

そして、Graldeのタスクビューを開きます。

Gradleのタスクビューを開くと下の様な感じになります。

そして、とりあえず起動(PC上で動きます。)自分はダブルクリックで起動できました。(有能だなぁー)

とりあえずは、起動したのでこれからアプリの作成に入りたいと思います。

チュートリアル

でわでわ。。。

[rakuten ids="akibamac:10585811"]