人生、気合いと具合 - blog

2013年12月

この記事はJavaFX Advent Calendar 2013 15日目の記事です。
昨日は @making さんの「JavaFXからREST Webサービスにアクセスする」でした。

さて、JavaFX 8というか、Java SE 8のJavaFXでは3D対応が目玉の一つになっています。
私はまったくといっていいほど3D関連のプログラミングとかモデリングとかやったことないのですか、ある程度は理解しておかないとあっという間においていかれるのでちょっとずつやってみます。

とりあえず箱でも置いてみる...ぜんぜん見えない。
ネットで探したサンプルとかをそのままでやればそりゃ見えるんだけど、ちょっと値を変えてみるかー、とかやると途端に難しいんだけども。

で、めっちゃいろんな値をためしてみてわかってきたこと => ちゃんと見えてくれるカメラと箱の位置関係がめっちゃ狭い?
手作業で直しては実行、だと効率が悪いなーということで、TranslateTransitionでカメラの位置を動かして試してみた。(早く気付け)
    @Override
    public void start(Stage stage) throws Exception{
        Group root = new Group();
        Box box = new Box(20, 20, 20);
        PhongMaterial material = new PhongMaterial();
        material.setDiffuseColor(Color.BLUE);
        box.setMaterial(material);
        root.getChildren().add(box);

        PerspectiveCamera camera = new PerspectiveCamera(true);
        camera.getTransforms().add(new Translate(0, 0, -50));

        AmbientLight ambientLight = new AmbientLight(Color.rgb(200, 200, 200, 1));
        root.getChildren().add(ambientLight);
        
        Scene scene = new Scene(root, 1024, 768, Color.GRAY);
        scene.setCamera(camera);
        stage.setScene(scene);
        stage.show();

        TranslateTransition t = new TranslateTransition(Duration.millis(2000), camera);
        t.setByZ(-150);
        t.setCycleCount(Animation.INDEFINITE);
        t.setAutoReverse(true);
        t.play();
    }
まあこの値も結構な試行錯誤の結果なんだけども、んー、ちょっと距離が離れただけでいきなり消えるな。
これは何か設定とかありそう?(と、ここでやっとJavaDocを見る)

なるほど...たぶん setFarClip というやつですね。デフォルトが100と書いてある。
とりあえず
    camera.setFarClip(1000);
の一行を追加して実行。やっと想像していた感じで見れた!

なんか、思いのほか数値的に少ない変化でかなり見え方が変わりますね。ぜんぜんわからんのですが、3Dだとそういうもんなのでしょうか。
画面のドットで考えるのが染み付いてしまっているのでどうしても違和感が。Clipがデフォルト100になってるってことは、やっぱりその範囲くらいで考えたりするのがスタンダード?

さて、ぎりぎりですがとりあえず、いろふAdvent Calendar 2013 8日目の記事です。
昨日は@sue445さんのirofさんをJUnitで走らせてみたです。

いろふさんといえば、「ハトをふんだ!」というのが印象深いのですが、たぶんAdvent Calendarネタにあがってなかったので作ってみました。(被ってたらすまん)

irof_p





















まあハトが迫ってくるので、ジャンプしてかわすというか。
でも当たり判定が上手くいかなかったんですよ。なんかそれだけで1時間以上使ってる...

というわけで、とりあえずスクリーンショットだけ。ちゃんと後で完成版としてアップしますので。
=> アップロードしました。ソースもあとでどうにかします。

マウスボタンを押している間は上昇、上まで行くか、ボタンを離すと下降。
下降中に再度マウスボタンを押すとスピードを遅くなって、落下タイミングを調整することができます。さすがいろふさん。

ダウンロード : http://homepage2.nifty.com/bugworm/webapp/irof/pigeon.jar
 jarをダブルクリックで起動。

このページのトップヘ