【Java標準GUIライブラリ】 JavaFX スレッド
やりたいことはこのように複数のBoxを組み合わせていきたい https://imgur.com/p1mGbkc.png ただ通常のBoxでは枠線が表示されないため現状1つのBoxにCylinderを12本くっつけて枠線として表示してる 他にはRectangleを6つ組み合わせて面表示しない方法 テクスチャ―を張り付けてそれっぽく見せる方法を試したけど今のところ一番良かったのがCylinderの手法 普通のBoxとワイヤーフレームを合体させる方法が一番軽量なんだけどTriangleMesh(三角形メッシュ)になってしまって見栄えが悪いのでNG https://imgur.com/X6VrMC7 現状解決方法としてTriangleMesy→RectanleMeshにする オクルージョンカリングを実装する の2つが解決方法として考えられるがどっちも参考例がなくて厳しい 他の案でこんなのしたら解決できるのでは?とかこの案はこうすれば実装できる!とかあったら教えてほしい 質問スレチだったらすまん swing vs javafx自分の理解 メリット ・CSS ・prism。UIスレッドと分けられていて描画が停止しない。GPUが活用される。 ・ラムダベースのAPI ・Scene Builderがある(個人的に便利と思わない) デメリット ・バグが多い ・モデルとビューの分離がし辛い。StringPropertyとか使わない方が良さそう その他 ・ゲームエンジンも通常のGUIもjavafxで一本化できるかも ・標準から分離されたが、JDKと同じ範囲でサポートされるのか? >>404 まあそんな感じだね Scene Builder不要は同意 ウィンドウリサイズに対応しようと思ったらHTMLのレスポンシブ対応みたいなのが必要になるから FXMLでノードの入れ子構造を手書きするほうがいい みんなHTMLは手書きするよね?ホームページビルダーみたいなWYSIWYG使わないでしょ アプリの画面開発も同じ JavaFXにバグが多いというのも事実だけどSwingと対比されるとちょっとなあ だってSwingもバグ多くていまだにフィックス続いてるじゃない?いつ枯れるのよって JavaFXはモデルとビューの分離も得意 プロパティバインディング使わないなんてもったいないよ! javafxで3dいじる人なんていないか… 悲しいなぁ >>407 javafx + java3dだ 書き方が悪かった >>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のシリンダーで立方体の縁取りをしなくても 描画線幅のプロパティとかがありそうなもんですけどね というかテクスチャ貼れるなら四角い「◻」画像貼った方が早そうな気がする >>409 プリズムエンジンがどういう動きをしているのか分かりませんが OpenGLからJava 2Dに渡してシーンのステージを描いていて ラインプロパティがCSSで変更可能なのか?どうかですね。 >>409 一応テクスチャで□画像貼り付けるやつもやったんだけど,シリンダーのほうが描画的には軽かったんだよね 自分のコードの問題かもしれないけど... JavaFX3DのShape3DにBoxがあって一応線だけ(ワイヤーフレーム)表示がある それと普通のBoxを組み合わせるとこんなんなるんだけど やっぱり立方体だけど少し見栄えが良くない でも数万個単位になるとシリンダー12個使うよりは当然軽いんだよねぇ... https://imgur.com/3KfENIX.png >>411 根本的解決では無いけど デフォルトで背面カリングされてるのかな せめてシリンダー12個より細長くて黒い直方体12個のほうがポリゴンは減らせると思う >>411 >>412 のJavaFX3Dをはじめてやってみたけどこんな感じ? JavaFX_3D_Cube_Outline_Test https://i.imgur.com/HY2x9vF.png >>412 背面カリングはデフォルトでされてるね! なるほど シリンダーじゃなくて直方体で試してみる! >>413 ポリゴンの数めっちゃ違うのね そういうのも考えないと駄目だよな 軽くしたいって言ってるのに考えが足りんかった 最近書き込んでないけど3D軽くするアイデア募集してますよー 誰でもいいんだ…頼む… 別の 3Dでさ、軽くなるか重くなるかわからないけど p5js の 3Dだとデフォルトで豆腐表示みたいですよ 輪郭の色とかも変えられた https://i.imgur.com/7Y35cPf_d.jpg https://i.imgur.com/CerH8PS.gif 40年近く前のアルゴリズム程度ならそんなに重たく無さそうだけどな https://www.youtube.com/watch?v=co3ilmGNnTM Java 3D Game from scratch - Stickman Sokoban (1982) 3D test Java - 3D Engine From scratch (with source code) https://www.youtube.com/watch?v=co3ilmGNnTM >>418 案あざます! ただjavafxで進んでるのでこのまま行きたいからちと厳しいです Java 3DもJava FXも情報少ないねー 別の質問なんだけどJava FXには AndroidのWebViewみたいなブラウザ機能付けれないのかな? WebGLで組み込めたりしないのだろうかと思っただけです。 >>419 >>420 わかりやすいのあざす! gifサイズめちゃくちゃデカくて申し訳ない やりたいことはこんな感じでいろんな立体を作れるんだ 1000個程度なら軽いんだが 数千になってくるとカクつき始めてしまう 数千個メモリにある状態でも描画を無くせば軽いので(見た目を透明にすれば軽いので) 描画処理に工夫出来ればと思ってるんだ https://imgur.com/MMRc3G1.gif 否定っぽい意見で返すこともあるけど、こんなのはどう?って意見マジで助かるからバンバン欲しい そこからアイデア生まれたりもするしね >>423 へーFX 3Dでここまで出来てるんだ面白そうだね 良いね👍 自分にはそれだけのプログラミング技術がないorz ちなみにそれはシリンダーを直方体にしたら少しはマシになったやつのかな? マイクラのはどうしてんでしょうかね? インスタンスを 3D色ペンにしてるというより objローダーか何かで読み込んでるのかな? 【MineCraft】 Mononoke hime Deidarabotti【でいだらぼっち】 https://www.youtube.com/watch?v=oVrPmdZ7oC4 プリミティブを毎度合成して作るくらいなら 3Dモデルを作って呼び出したほうが良いかもね もうひとつこっちは純粋なjavafxの質問! 質問ばっかでスマン 自由な形のボタンって作れますか? 透過pngの形に合わせてボタンの形と見た目も変わる感じ わかりにくいgifだけどこんな感じでオシャレなボタンを作りたい https://imgur.com/jRWHAuD.gif 例として矢印型のボタンを作るとか! 調べた限りボタンに画像を貼り付けるくらいしか近い資料はない 別の手法として2枚の画像を重ねておいてマウスが重なったら表示を変更する この手法でボタンみたいにマウスが重なった際の見た目の変更を設ける でその画像にクリックイベントをつけるってのが考えられるんだけどとてもスマートとは言えない こっちもわかる人いたりしたらお願いします! >>424 シリンダー直方体にしたら多少良くなりました! マジでその少しでもありがたい! マイクラは凄いよねぇ あの膨大なブロックの描画を可能にしてるんだから サポート終了だしJava FXやってる人少ないんだろうなー 自由形状ならペイントのポリゴンでポイント指定しまくって書けそうだけど ボタンとなるとマウスの座標判定いるのかな・・・ https://docs.oracle.com/javase/jp/8/javafx/api/javafx/scene/paint/ImagePattern.html >>422 JavaFXにもWebViewあるよ エンジンはWebKit >>425 非矩形Nodeはclipすることで作れる clip範囲外はマウスイベントも発生しない >>427 >>429 ありがとうございます! こっちはいけそう! お酒入れてしまったので明日やってみます! >>423 表現力高めようとしたら結局テクスチャーになると思う。 それとご存知かもしれませんが JavaFXに移植出来るかどうかわからないけど three.js のexampleにボクセルペインターってのがありますので JavaScriptのソースコードが右下のアイコンから見れるので参考にしてみてはどうでしょうか? 既に参考にされてるのなら申し訳ない。 https://threejs.org/examples/webgl_interactive_voxelpainter.html 上の方でスレッドアーキテクチャの話出てたけどここに書いてあった 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で勝手にクロスプラットフォームになるしかなり良さそう 自分用のツールをこれで作ってみようとしたら使えるようにするまでがとんでもなく面倒くさいな できあがったものを他人に使わせるのも面倒だしjavaによるGUI実施はやる気なくなる >>435 GUIの実装はどれもそこそこ面倒な気がするけど、 AccessとかVBA+Excelみたいなミドルウェア系は別すれば何だと楽? C#じゃ答えになってないだろ WinFormsとかWPFとかUIツールキットじゃないと VSでGUI作るのが楽 Eclipseじゃ勝負にならん ビジュアルデザイナーを使ったGUI作成って楽かなあ? なんかホームページ・ビルダーでHTMLを作るようなまどろっこしさを感じるんだよね HTMLなんて補完機能の充実したエディタで書く方が楽じゃん? DOMの階層構造を把握しやすいから GUIも同じじゃないかな? XAMLとかFXMLをエディタで手書きするほうが書きやすい ビジュアルエディターだと階層構造を管理しにくいし なによりウィンドウリサイズへの対応がやりにくい リサイズ対応しようと思ったら構造管理しやすい手書きのほうが楽と思っちゃう あのぅJavaFXってAndroidアプリ画面GUIに使えますか? >>442 https://gluonhq.com/products/mobile/ これを使えば出来るかもしれないが、したことはないし、 出来たという話は聞いたことがない。 >>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. デスクトップアプリの開発でJavaFX使ってるからFXPortsをAndroidで動かすのに興味はある だがパフォーマンスはどうなんだろうか? それとAndroidとの相互運用はどうなんだろうか? たとえばインテント投げようと思ったらActivityの参照を得る方法が必要だよね FXPortsでそういったAndroidネイティブアメリカンに介入する手立ても残されてるといいのだけど >>444 試してみたらいろいろ教えてね JavaFXの未来が暗いのでWebアプリ方式にしようかと思っているのだけれど、 ObservableList(とTable連携)がないことを知って絶望している。 最近Andoridでアプリ作ったけどうんざりしたよ Androidフレームワークの設計ひどすぎるでしょ 特にAndoidXは未完成でGoogleが何度も後方互換性のないAPI変更を繰り返してる それに比べるとJavaのAPI設計ってとても良く出来てる 新API追加に何年も検討しているのも無駄じゃないんだなって Androidの開発でもJavaFX使いたいぜ FXPortsやってみようかな openjfxってjava8バージョンは何でmavenにないんだ? >>449 Oracle版 jdk 8に含まれていたときの名残かな。 OpenJFXのページにもOracle版に入っているからそっちを使えみたいなことが書かれたいたように思う。 相当昔の話なので記憶違いかもしれないけど。 最近Androidアプリ作ってて思ったんだがAndroidのデータバインディングってクソだな ViewのメンバーがObservable/WritableValueになってないからバインディングクラスを自動生成して実現している その自動生成クラスの定義をレイアウトXMLに書かねばならずレイアウトファイルにロジックが介入してしまう こういう悪い設計を見てしまうとJavaFXがいかに優れているか良く分かる JavaFXはすべてがObservableなPropertyとして設計されてるのが素晴らしい FXが標準添付から外れてしまったので・・・ そしてSwingの新刊が2020/6に出てるのにビックリした 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人である。 Gluon FX Mobile は興味ある ほんとに Android で JavaFX 使えるのかな? Android には独自のアクティビティ・ライフサイル管理とかあるんだけど そこと JavaFX の兼ね合いがどうなってるのか気になる FX Mobile 使ったことある人いる? >>456 openjfxにパッチ当てたやつとgraal(おそらくこれもパッチ当ててる)のnative image。 androidがどれくらい動くかは知らないけど これのgluonの話題が出てくるところから読むといい。 ttps://github.com/oracle/graal/issues/3036 すんません sceneのキー入力イベントが特定のキーにしか反応しません(ctrlとかalt) scene に貼り付けたTextAreaなら他のキーにも反応するんですがこういった選別はイベントのどこら辺で決められてるんでしょうか? JavaFXを利用したGUI http://www.osaka-kyoiku.ac.jp/ ~fuji/lecture/keijis/lesson06.html まだ使ってる人いるのかな Compose Multiplatformにいっちゃた? ∧_∧ (`・ェ・´) レスが少くても 0 0 気にしちゃダメ! | | また次があるよ!がんばって! ∪∪ ワイはJNA経由でC#でこさえたUIつこてる 古いwin32システムコールも呼べるし 慣れると楽やで! read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる