X



【Java標準GUIライブラリ】 JavaFX スレッド

2020/05/30(土) 08:47:50.17ID:I1WXKADU
やりたいことはこのように複数のBoxを組み合わせていきたい
https://imgur.com/p1mGbkc.png
ただ通常のBoxでは枠線が表示されないため現状1つのBoxにCylinderを12本くっつけて枠線として表示してる
他にはRectangleを6つ組み合わせて面表示しない方法
テクスチャ―を張り付けてそれっぽく見せる方法を試したけど今のところ一番良かったのがCylinderの手法
普通のBoxとワイヤーフレームを合体させる方法が一番軽量なんだけどTriangleMesh(三角形メッシュ)になってしまって見栄えが悪いのでNG
https://imgur.com/X6VrMC7

現状解決方法としてTriangleMesy→RectanleMeshにする
オクルージョンカリングを実装する
の2つが解決方法として考えられるがどっちも参考例がなくて厳しい

他の案でこんなのしたら解決できるのでは?とかこの案はこうすれば実装できる!とかあったら教えてほしい
質問スレチだったらすまん
404デフォルトの名無しさん
垢版 |
2020/05/30(土) 10:36:51.70ID:8qnzRz3O
swing vs javafx自分の理解

メリット
・CSS
・prism。UIスレッドと分けられていて描画が停止しない。GPUが活用される。
・ラムダベースのAPI
・Scene Builderがある(個人的に便利と思わない)

デメリット
・バグが多い
・モデルとビューの分離がし辛い。StringPropertyとか使わない方が良さそう

その他
・ゲームエンジンも通常のGUIもjavafxで一本化できるかも
・標準から分離されたが、JDKと同じ範囲でサポートされるのか?
2020/05/30(土) 12:19:40.54ID:9NYPs0Wl
>>404
まあそんな感じだね
Scene Builder不要は同意
ウィンドウリサイズに対応しようと思ったらHTMLのレスポンシブ対応みたいなのが必要になるから
FXMLでノードの入れ子構造を手書きするほうがいい
みんなHTMLは手書きするよね?ホームページビルダーみたいなWYSIWYG使わないでしょ
アプリの画面開発も同じ

JavaFXにバグが多いというのも事実だけどSwingと対比されるとちょっとなあ
だってSwingもバグ多くていまだにフィックス続いてるじゃない?いつ枯れるのよって

JavaFXはモデルとビューの分離も得意
プロパティバインディング使わないなんてもったいないよ!
2020/05/30(土) 22:13:45.02ID:I1WXKADU
javafxで3dいじる人なんていないか…
悲しいなぁ
2020/06/01(月) 12:46:12.47ID:+e7s6jLC
>>403
Java3Dじゃダメなんか...
2020/06/02(火) 05:17:31.51ID:d8r0OMBd
>>407
javafx + java3dだ
書き方が悪かった
2020/06/02(火) 08:59:13.53ID:thP6e8vV
>>408
自分も興味あるのでやりたいんだけど
資料情報が少ないしどっちも開発オワコンで・・・180度反転座標で混乱してるし
JavaFX 3Dは左上原点Y軸下方向+Z奥行+
2Dウィンドウと統合の為のブラウザ画面座標系
http://xiphia.info/wp-content/uploads/2014/12/fx_axis.png

Java3Dは画面中央原点でY軸上向き+画面手前Z軸+
一般的な3Dモデラーは右手座標系
http://xiphia.info/wp-content/uploads/2014/12/right_axis.png

2014で止まってる参考↓
http://xiphia.info/2014/12/08/124
JavaFXアーキテクチャ
http://xiphia.info/wp-content/uploads/2014/12/fx_arch.png

で、モデルの読み込みも自分で実装しなきゃいけなくて、
かつ、トゥーンシェーダーは無いみたいですね
これも自分で実装しろということみたいですね。
>>403でも2Dと統合してるのなら3Dのシリンダーで立方体の縁取りをしなくても
描画線幅のプロパティとかがありそうなもんですけどね
というかテクスチャ貼れるなら四角い「◻」画像貼った方が早そうな気がする
2020/06/02(火) 09:09:08.99ID:thP6e8vV
>>409
プリズムエンジンがどういう動きをしているのか分かりませんが
OpenGLからJava 2Dに渡してシーンのステージを描いていて
ラインプロパティがCSSで変更可能なのか?どうかですね。
2020/06/04(木) 12:38:12.14ID:kBG00nRj
>>409
一応テクスチャで□画像貼り付けるやつもやったんだけど,シリンダーのほうが描画的には軽かったんだよね
自分のコードの問題かもしれないけど...

JavaFX3DのShape3DにBoxがあって一応線だけ(ワイヤーフレーム)表示がある
それと普通のBoxを組み合わせるとこんなんなるんだけど
やっぱり立方体だけど少し見栄えが良くない
でも数万個単位になるとシリンダー12個使うよりは当然軽いんだよねぇ...
https://imgur.com/3KfENIX.png
2020/06/04(木) 15:34:36.68ID:yJnIrqKv
>>411
根本的解決では無いけど
デフォルトで背面カリングされてるのかな
せめてシリンダー12個より細長くて黒い直方体12個のほうがポリゴンは減らせると思う
2020/06/04(木) 17:47:44.45ID:yJnIrqKv
>>411
>>412のJavaFX3Dをはじめてやってみたけどこんな感じ?
JavaFX_3D_Cube_Outline_Test
https://i.imgur.com/HY2x9vF.png
2020/06/04(木) 18:41:26.61ID:kBG00nRj
>>412
背面カリングはデフォルトでされてるね!
なるほど
シリンダーじゃなくて直方体で試してみる!
2020/06/04(木) 18:43:13.45ID:kBG00nRj
>>413
ポリゴンの数めっちゃ違うのね
そういうのも考えないと駄目だよな
軽くしたいって言ってるのに考えが足りんかった
2020/06/22(月) 05:29:27.16ID:Vt2ToWRK
最近書き込んでないけど3D軽くするアイデア募集してますよー
誰でもいいんだ…頼む…
417デフォルトの名無しさん
垢版 |
2020/06/22(月) 14:23:05.85ID:pTvGSbV8
別の 3Dでさ、軽くなるか重くなるかわからないけど
p5js の 3Dだとデフォルトで豆腐表示みたいですよ

輪郭の色とかも変えられた
https://i.imgur.com/7Y35cPf_d.jpg
https://i.imgur.com/CerH8PS.gif
2020/06/22(月) 14:33:45.92ID:pTvGSbV8
>>417
縮小版貼っちゃったんで貼り直し
https://m.imgur.com/7Y35cPf.jpg
https://m.imgur.com/CerH8PS.gif
2020/06/22(月) 19:18:23.53ID:6gQqm8wo
40年近く前のアルゴリズム程度ならそんなに重たく無さそうだけどな

https://www.youtube.com/watch?v=co3ilmGNnTM
Java 3D Game from scratch - Stickman Sokoban (1982) 3D test
2020/06/22(月) 19:27:05.93ID:6gQqm8wo
Java - 3D Engine From scratch (with source code)
https://www.youtube.com/watch?v=co3ilmGNnTM
2020/06/22(月) 21:31:07.11ID:Vt2ToWRK
>>418
案あざます!
ただjavafxで進んでるのでこのまま行きたいからちと厳しいです
2020/06/22(月) 21:42:46.24ID:Fk7G678i
Java 3DもJava FXも情報少ないねー
別の質問なんだけどJava FXには
AndroidのWebViewみたいなブラウザ機能付けれないのかな?
WebGLで組み込めたりしないのだろうかと思っただけです。
2020/06/22(月) 21:48:49.23ID:Vt2ToWRK
>>419
>>420
わかりやすいのあざす!
gifサイズめちゃくちゃデカくて申し訳ない
やりたいことはこんな感じでいろんな立体を作れるんだ
1000個程度なら軽いんだが
数千になってくるとカクつき始めてしまう
数千個メモリにある状態でも描画を無くせば軽いので(見た目を透明にすれば軽いので)
描画処理に工夫出来ればと思ってるんだ

https://imgur.com/MMRc3G1.gif

否定っぽい意見で返すこともあるけど、こんなのはどう?って意見マジで助かるからバンバン欲しい
そこからアイデア生まれたりもするしね
2020/06/22(月) 22:08:27.57ID:Fk7G678i
>>423
へーFX 3Dでここまで出来てるんだ面白そうだね
良いね👍
自分にはそれだけのプログラミング技術がないorz

ちなみにそれはシリンダーを直方体にしたら少しはマシになったやつのかな?

マイクラのはどうしてんでしょうかね?
インスタンスを 3D色ペンにしてるというより
objローダーか何かで読み込んでるのかな?


【MineCraft】 Mononoke hime Deidarabotti【でいだらぼっち】
https://www.youtube.com/watch?v=oVrPmdZ7oC4


プリミティブを毎度合成して作るくらいなら
3Dモデルを作って呼び出したほうが良いかもね
2020/06/22(月) 22:09:56.99ID:Vt2ToWRK
もうひとつこっちは純粋なjavafxの質問!
質問ばっかでスマン

自由な形のボタンって作れますか?
透過pngの形に合わせてボタンの形と見た目も変わる感じ
わかりにくいgifだけどこんな感じでオシャレなボタンを作りたい

https://imgur.com/jRWHAuD.gif

例として矢印型のボタンを作るとか!

調べた限りボタンに画像を貼り付けるくらいしか近い資料はない

別の手法として2枚の画像を重ねておいてマウスが重なったら表示を変更する
この手法でボタンみたいにマウスが重なった際の見た目の変更を設ける
でその画像にクリックイベントをつけるってのが考えられるんだけどとてもスマートとは言えない

こっちもわかる人いたりしたらお願いします!
2020/06/22(月) 22:11:19.57ID:Vt2ToWRK
>>424
シリンダー直方体にしたら多少良くなりました!
マジでその少しでもありがたい!
マイクラは凄いよねぇ
あの膨大なブロックの描画を可能にしてるんだから
2020/06/22(月) 22:23:03.66ID:Fk7G678i
サポート終了だしJava FXやってる人少ないんだろうなー
自由形状ならペイントのポリゴンでポイント指定しまくって書けそうだけど
ボタンとなるとマウスの座標判定いるのかな・・・
https://docs.oracle.com/javase/jp/8/javafx/api/javafx/scene/paint/ImagePattern.html
2020/06/22(月) 22:43:29.00ID:PLHzh2d/
>>422
JavaFXにもWebViewあるよ
エンジンはWebKit
2020/06/22(月) 22:46:27.27ID:PLHzh2d/
>>425
非矩形Nodeはclipすることで作れる
clip範囲外はマウスイベントも発生しない
2020/06/22(月) 22:57:47.47ID:Fk7G678i
>>428
ありがとうございます
2020/06/22(月) 23:10:09.69ID:Vt2ToWRK
>>427
>>429
ありがとうございます!
こっちはいけそう!
お酒入れてしまったので明日やってみます!
2020/06/23(火) 00:37:06.35ID:/KsjAast
>>423
表現力高めようとしたら結局テクスチャーになると思う。
それとご存知かもしれませんが
JavaFXに移植出来るかどうかわからないけど
three.js のexampleにボクセルペインターってのがありますので
JavaScriptのソースコードが右下のアイコンから見れるので参考にしてみてはどうでしょうか?
既に参考にされてるのなら申し訳ない。

https://threejs.org/examples/webgl_interactive_voxelpainter.html
2020/06/23(火) 18:56:20.48ID:0Qbjx01g
>>432
あざます!コード見て比べてみますね!
434デフォルトの名無しさん
垢版 |
2020/06/25(木) 11:08:43.82ID:ajkqqZP7
上の方でスレッドアーキテクチャの話出てたけどここに書いてあった
https://docs.oracle.com/javafx/2/architecture/jfxpub-architecture.htm#sthref4

描画前(アタッチ前)のシーングラフはユーザーが作成したスレッドで構築(最後のアタッチだけrunLaterか)
描画中(アタッチ済み)のシーングラフはFXスレッドで操作する
描画自体はPrismスレッドで処理する
メディア処理専用のスレッドもある

FXスレッドをsleepさせると描画が停止するから、FXスレッドが描画しているのかと思っていた。
FXスレッドが停止するとパルスがスケジュールされないからPrismスレッドが描画内容を更新しないということか。

FXスレッドに重い処理をさせるとパルス遅延で60fpsでなくなるが
描画中のGUIの更新はFXスレッドでやれと。
コーディングに独特な意識が必要そう。

> This introduces a lot of issues,
AWTはスレッドアーキテクチャのせいで問題が多発していたとあるし
SwingはAWTを拡張したものとあるから恐らく同じ問題を抱えているだろうし
基本設計としてはFXの方が良いんだろうな。

ちょっとしたアプリならFXの出来合いのコンポーネントとライブラリで簡単に作れるし
jdkで勝手にクロスプラットフォームになるしかなり良さそう
2020/07/13(月) 15:42:20.42ID:lkO1vfpP
自分用のツールをこれで作ってみようとしたら使えるようにするまでがとんでもなく面倒くさいな
できあがったものを他人に使わせるのも面倒だしjavaによるGUI実施はやる気なくなる
2020/07/20(月) 06:24:05.66ID:otj8NavB
>>435
GUIの実装はどれもそこそこ面倒な気がするけど、
AccessとかVBA+Excelみたいなミドルウェア系は別すれば何だと楽?
2020/07/20(月) 08:37:43.67ID:8J8ATM8k
WindowsならC#
2020/07/20(月) 08:48:49.83ID:ud2z2M50
C#じゃ答えになってないだろ
WinFormsとかWPFとかUIツールキットじゃないと
2020/07/20(月) 13:44:23.05ID:8J8ATM8k
ごめん
440デフォルトの名無しさん
垢版 |
2020/07/20(月) 14:17:49.24ID:UO0ZvIvE
VSでGUI作るのが楽
Eclipseじゃ勝負にならん
2020/07/20(月) 15:41:07.73ID:ud2z2M50
ビジュアルデザイナーを使ったGUI作成って楽かなあ?

なんかホームページ・ビルダーでHTMLを作るようなまどろっこしさを感じるんだよね
HTMLなんて補完機能の充実したエディタで書く方が楽じゃん?
DOMの階層構造を把握しやすいから

GUIも同じじゃないかな?
XAMLとかFXMLをエディタで手書きするほうが書きやすい
ビジュアルエディターだと階層構造を管理しにくいし
なによりウィンドウリサイズへの対応がやりにくい
リサイズ対応しようと思ったら構造管理しやすい手書きのほうが楽と思っちゃう
442デフォルトの名無しさん
垢版 |
2020/07/22(水) 03:09:08.77ID:WLvtiBEO
あのぅJavaFXってAndroidアプリ画面GUIに使えますか?
2020/07/22(水) 04:24:50.88ID:DK95kP0+
>>442
https://gluonhq.com/products/mobile/
これを使えば出来るかもしれないが、したことはないし、
出来たという話は聞いたことがない。
2020/07/22(水) 12:19:20.16ID:J4Vacr3k
>>443
ありがとうございます!読んでみます
> JavaFXPorts is the open source project that brings Java and JavaFX to mobile and embedded hardware, including iPhone, iPad, Android devices, and the Raspberry Pi.
2020/07/22(水) 16:53:42.62ID:FkZf0aum
デスクトップアプリの開発でJavaFX使ってるからFXPortsをAndroidで動かすのに興味はある
だがパフォーマンスはどうなんだろうか?
それとAndroidとの相互運用はどうなんだろうか?
たとえばインテント投げようと思ったらActivityの参照を得る方法が必要だよね
FXPortsでそういったAndroidネイティブアメリカンに介入する手立ても残されてるといいのだけど

>>444 試してみたらいろいろ教えてね
2020/07/23(木) 05:47:34.08ID:4vFkIxB5
インディアン
ウソツカナイ
2020/08/03(月) 06:30:32.98ID:Yw4XreEy
JavaFXの未来が暗いのでWebアプリ方式にしようかと思っているのだけれど、
ObservableList(とTable連携)がないことを知って絶望している。
2020/08/03(月) 07:42:42.34ID:omrqzUgH
最近Andoridでアプリ作ったけどうんざりしたよ
Androidフレームワークの設計ひどすぎるでしょ
特にAndoidXは未完成でGoogleが何度も後方互換性のないAPI変更を繰り返してる

それに比べるとJavaのAPI設計ってとても良く出来てる
新API追加に何年も検討しているのも無駄じゃないんだなって
Androidの開発でもJavaFX使いたいぜ FXPortsやってみようかな
2020/08/03(月) 12:38:49.60ID:eI2W9bUh
openjfxってjava8バージョンは何でmavenにないんだ?
2020/08/04(火) 06:38:04.62ID:yByJKGd8
>>449
Oracle版 jdk 8に含まれていたときの名残かな。
OpenJFXのページにもOracle版に入っているからそっちを使えみたいなことが書かれたいたように思う。
相当昔の話なので記憶違いかもしれないけど。
451デフォルトの名無しさん
垢版 |
2020/08/18(火) 12:09:06.77ID:M2QC6gPH
最近Androidアプリ作ってて思ったんだがAndroidのデータバインディングってクソだな
ViewのメンバーがObservable/WritableValueになってないからバインディングクラスを自動生成して実現している
その自動生成クラスの定義をレイアウトXMLに書かねばならずレイアウトファイルにロジックが介入してしまう

こういう悪い設計を見てしまうとJavaFXがいかに優れているか良く分かる
JavaFXはすべてがObservableなPropertyとして設計されてるのが素晴らしい
2020/12/07(月) 22:17:25.63ID:49THwtGh
最近またSwingが増えてる?
2020/12/11(金) 00:31:36.45ID:V0O7eDvh
FXが標準添付から外れてしまったので・・・
そしてSwingの新刊が2020/6に出てるのにビックリした
2021/08/03(火) 14:16:09.19ID:E1n4xVAk
JavaFX:Web、PC、モバイル向けの1つのコードベース
https://www.infoq.com/jp/news/2021/08/javafx-web/

JavaFXはクロスプラットフォームアプリケーションの基盤を提供するが、
JavaScript/Webクライアントがはるかに一般的であるため、業界全体での使用率は低い。
同様のクロスプラットフォーム開発トレンドに関するStackOverflowトレンドレポートでは、
JavaFXがほとんど変わらないのに対し、FlutterとReact-Nativeの相対的な上昇が示されている。
直接、数を比較すると、JavaFXのUdemyの受講者は120,000人であるが、
React-Nativeの受講者は900,000人、Flutterの受講者は1,500,000人である。
2021/08/07(土) 21:51:27.92ID:An0HTTX/
それGluonの宣伝。OpenJFX関係ない
456デフォルトの名無しさん
垢版 |
2021/08/07(土) 22:19:05.08ID:dRA6eDJQ
Gluon FX Mobile は興味ある
ほんとに Android で JavaFX 使えるのかな?

Android には独自のアクティビティ・ライフサイル管理とかあるんだけど
そこと JavaFX の兼ね合いがどうなってるのか気になる
FX Mobile 使ったことある人いる?
2021/08/12(木) 19:32:27.58ID:zl0rn+Ko
もう一度FXを標準実装しろよ
2021/08/16(月) 04:35:10.09ID:XGOE55BE
>>456
openjfxにパッチ当てたやつとgraal(おそらくこれもパッチ当ててる)のnative image。

androidがどれくらい動くかは知らないけど
これのgluonの話題が出てくるところから読むといい。
ttps://github.com/oracle/graal/issues/3036
2021/11/17(水) 15:24:06.87ID:OJq8ALeu
すんません
sceneのキー入力イベントが特定のキーにしか反応しません(ctrlとかalt)
scene に貼り付けたTextAreaなら他のキーにも反応するんですがこういった選別はイベントのどこら辺で決められてるんでしょうか?
460デフォルトの名無しさん(悠久の苑)
垢版 |
2022/08/20(土) 13:41:07.72ID:+oXAOjHP
Java SE 8 / Java FX 8 概説
http://www.k-techlabo.org/www_java/javafx_main.pdf
2022/09/17(土) 12:08:01.26ID:lWTDNQnL
JavaFXを利用したGUI
http://www.osaka-kyoiku.ac.jp/~fuji/lecture/keijis/lesson06.html
2022/11/01(火) 20:50:31.50ID:wC0Gha/D
hosyu
2022/12/03(土) 19:43:10.29ID:wGycLZwY
hosyu
2023/05/22(月) 20:48:34.32ID:umhs0yxC
まだ使ってる人いるのかな
Compose Multiplatformにいっちゃた?
2023/08/19(土) 19:44:14.80ID:27QBx2+7
煙草 (ーoー)y~~~ パァ~
2023/09/03(日) 02:13:31.62ID:nycxQmXP
 ∧_∧
 (`・ェ・´) レスが少くても
  0  0  気にしちゃダメ!
  |  |  また次があるよ!がんばって!
  ∪∪
467デフォルトの名無しさん
垢版 |
2023/09/14(木) 15:16:42.95ID:Ur1UGoF9
はあ・・・
2024/02/12(月) 00:01:28.01ID:UTGeYeVt
hosyu
469デフォルトの名無しさん
垢版 |
2024/02/27(火) 14:24:59.58ID:0J04Un9A
で、結局 Java FX はその後どうなったの?
470デフォルトの名無しさん
垢版 |
2024/04/19(金) 10:10:53.85ID:uD5nyH4z
画面はネイティブAPIを使うのが主流になった
471デフォルトの名無しさん
垢版 |
2024/04/25(木) 20:11:33.64ID:WdrJmqqJ
ワイはJNA経由でC#でこさえたUIつこてる
古いwin32システムコールも呼べるし
慣れると楽やで!
472デフォルトの名無しさん
垢版 |
2024/10/15(火) 06:24:07.34ID:PNZvm2Tn
みんなFXで儲けた?
473デフォルトの名無しさん
垢版 |
2024/11/02(土) 01:06:50.37ID:qv1myJC3
EchoAPIって、Eclipseの統合環境での開発をさらに便利にし、Javaなど、さまざまな言語での作業を効率化できるって聞いて
みんな試したことある?
474デフォルトの名無しさん
垢版 |
2024/11/04(月) 22:40:52.99ID:hs1sceu4
postman互換ちゅーことはwebapi用なんじゃない?
デスクトップアプリの開発に使えるならこのスレ住民にも有益だろう
知らんけど
レスを投稿する

5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況