Enviar búsqueda
Cargar
javafx-mini4wd
•
1 recomendación
•
1,950 vistas
Kiyotaka Oku
Seguir
Software
Denunciar
Compartir
Denunciar
Compartir
1 de 61
Descargar ahora
Descargar para leer sin conexión
Recomendados
DK2 ポジトラでモデルを動かし た か っ た …
DK2 ポジトラでモデルを動かし た か っ た …
Udasan
うだたんの話 ~ VR アバターで自撮りする話
うだたんの話 ~ VR アバターで自撮りする話
Udasan
TDD BootCamp in JJUG CCC - レガシーコード対策編 -
TDD BootCamp in JJUG CCC - レガシーコード対策編 -
Shuji Watanabe
Build your AR app by using AR Foundation samples
Build your AR app by using AR Foundation samples
Hirokazu Egashira
ARCore Update (Jan 2020)
ARCore Update (Jan 2020)
Hirokazu Egashira
Introduction to AR Foundation
Introduction to AR Foundation
Hirokazu Egashira
組み込みやろうぜ!ソフト屋さん向けの組み込み電子工作講座 (情報科学若手の会2013 #wakate2013 )
組み込みやろうぜ!ソフト屋さん向けの組み込み電子工作講座 (情報科学若手の会2013 #wakate2013 )
Junpei Tsuji
Spring Bootキャンプ @関ジャバ #kanjava_sbc
Spring Bootキャンプ @関ジャバ #kanjava_sbc
Toshiaki Maki
Recomendados
DK2 ポジトラでモデルを動かし た か っ た …
DK2 ポジトラでモデルを動かし た か っ た …
Udasan
うだたんの話 ~ VR アバターで自撮りする話
うだたんの話 ~ VR アバターで自撮りする話
Udasan
TDD BootCamp in JJUG CCC - レガシーコード対策編 -
TDD BootCamp in JJUG CCC - レガシーコード対策編 -
Shuji Watanabe
Build your AR app by using AR Foundation samples
Build your AR app by using AR Foundation samples
Hirokazu Egashira
ARCore Update (Jan 2020)
ARCore Update (Jan 2020)
Hirokazu Egashira
Introduction to AR Foundation
Introduction to AR Foundation
Hirokazu Egashira
組み込みやろうぜ!ソフト屋さん向けの組み込み電子工作講座 (情報科学若手の会2013 #wakate2013 )
組み込みやろうぜ!ソフト屋さん向けの組み込み電子工作講座 (情報科学若手の会2013 #wakate2013 )
Junpei Tsuji
Spring Bootキャンプ @関ジャバ #kanjava_sbc
Spring Bootキャンプ @関ジャバ #kanjava_sbc
Toshiaki Maki
メンバーのスキルアップ、どうしてる? − Java 100本ノックで新加入メンバーを鍛えてみた −
メンバーのスキルアップ、どうしてる? − Java 100本ノックで新加入メンバーを鍛えてみた −
JustSystems Corporation
Spring Bootで変わる Javaアプリ開発! #jsug
Spring Bootで変わる Javaアプリ開発! #jsug
Toshiaki Maki
Guide to GraalVM (JJUG CCC 2019 Fall)
Guide to GraalVM (JJUG CCC 2019 Fall)
Koichi Sakata
JavaOne2014サンフランシスコ報告会in大阪
JavaOne2014サンフランシスコ報告会in大阪
bitter_fox
JJUG CCC 2016 Fall: World is not a square, rendering world coastline map with...
JJUG CCC 2016 Fall: World is not a square, rendering world coastline map with...
torutk
JS Board で IoT は楽勝か?
JS Board で IoT は楽勝か?
Shingo Fukui
20150209 甲府-web新世紀2
20150209 甲府-web新世紀2
Taisuke Fukuno
iOS6時代のTwitter / Facebook連携
iOS6時代のTwitter / Facebook連携
Masahiro Murakami
OpenCVで作るスタンプAR
OpenCVで作るスタンプAR
Takashi Yoshinaga
可変値変数 var を極力避けることを模索するための事前知識 #cswift
可変値変数 var を極力避けることを模索するための事前知識 #cswift
Tomohiro Kumagai
pairsでのAngularJS x TypeScript x e2e @めぐすた#1
pairsでのAngularJS x TypeScript x e2e @めぐすた#1
Takuma Morikawa
cloudstack devcloud
cloudstack devcloud
Kimihiko Kitase
Javaと小道具
Javaと小道具
Sho Ito
MVCもやもや話
MVCもやもや話
Tetsuya Kaneuchi
はじめよう JavaFX 2.x(第3回 岡山Javaユーザー会)
はじめよう JavaFX 2.x(第3回 岡山Javaユーザー会)
a know
Live the Knight#7
Live the Knight#7
ssuser033561
Azure のポータル画面で、AI フレーバな BOT の作成ハンズオン
Azure のポータル画面で、AI フレーバな BOT の作成ハンズオン
Yasuaki Matsuda
JavaOne2013報告会 JavaFX Update
JavaOne2013報告会 JavaFX Update
Takashi Aoe
Introduction to Kanagawa Ruby Kaigi01 #kana01
Introduction to Kanagawa Ruby Kaigi01 #kana01
Aki Ariga
㉒初期プロジェクトを改造!
㉒初期プロジェクトを改造!
Nishida Kansuke
Osaka Venture Meetup #3
Osaka Venture Meetup #3
Kiyotaka Oku
巨大不明ビルドの継続的統合を目的とするビルドパイプラインを主軸とした作戦要綱
巨大不明ビルドの継続的統合を目的とするビルドパイプラインを主軸とした作戦要綱
Kiyotaka Oku
Más contenido relacionado
Similar a javafx-mini4wd
メンバーのスキルアップ、どうしてる? − Java 100本ノックで新加入メンバーを鍛えてみた −
メンバーのスキルアップ、どうしてる? − Java 100本ノックで新加入メンバーを鍛えてみた −
JustSystems Corporation
Spring Bootで変わる Javaアプリ開発! #jsug
Spring Bootで変わる Javaアプリ開発! #jsug
Toshiaki Maki
Guide to GraalVM (JJUG CCC 2019 Fall)
Guide to GraalVM (JJUG CCC 2019 Fall)
Koichi Sakata
JavaOne2014サンフランシスコ報告会in大阪
JavaOne2014サンフランシスコ報告会in大阪
bitter_fox
JJUG CCC 2016 Fall: World is not a square, rendering world coastline map with...
JJUG CCC 2016 Fall: World is not a square, rendering world coastline map with...
torutk
JS Board で IoT は楽勝か?
JS Board で IoT は楽勝か?
Shingo Fukui
20150209 甲府-web新世紀2
20150209 甲府-web新世紀2
Taisuke Fukuno
iOS6時代のTwitter / Facebook連携
iOS6時代のTwitter / Facebook連携
Masahiro Murakami
OpenCVで作るスタンプAR
OpenCVで作るスタンプAR
Takashi Yoshinaga
可変値変数 var を極力避けることを模索するための事前知識 #cswift
可変値変数 var を極力避けることを模索するための事前知識 #cswift
Tomohiro Kumagai
pairsでのAngularJS x TypeScript x e2e @めぐすた#1
pairsでのAngularJS x TypeScript x e2e @めぐすた#1
Takuma Morikawa
cloudstack devcloud
cloudstack devcloud
Kimihiko Kitase
Javaと小道具
Javaと小道具
Sho Ito
MVCもやもや話
MVCもやもや話
Tetsuya Kaneuchi
はじめよう JavaFX 2.x(第3回 岡山Javaユーザー会)
はじめよう JavaFX 2.x(第3回 岡山Javaユーザー会)
a know
Live the Knight#7
Live the Knight#7
ssuser033561
Azure のポータル画面で、AI フレーバな BOT の作成ハンズオン
Azure のポータル画面で、AI フレーバな BOT の作成ハンズオン
Yasuaki Matsuda
JavaOne2013報告会 JavaFX Update
JavaOne2013報告会 JavaFX Update
Takashi Aoe
Introduction to Kanagawa Ruby Kaigi01 #kana01
Introduction to Kanagawa Ruby Kaigi01 #kana01
Aki Ariga
㉒初期プロジェクトを改造!
㉒初期プロジェクトを改造!
Nishida Kansuke
Similar a javafx-mini4wd
(20)
メンバーのスキルアップ、どうしてる? − Java 100本ノックで新加入メンバーを鍛えてみた −
メンバーのスキルアップ、どうしてる? − Java 100本ノックで新加入メンバーを鍛えてみた −
Spring Bootで変わる Javaアプリ開発! #jsug
Spring Bootで変わる Javaアプリ開発! #jsug
Guide to GraalVM (JJUG CCC 2019 Fall)
Guide to GraalVM (JJUG CCC 2019 Fall)
JavaOne2014サンフランシスコ報告会in大阪
JavaOne2014サンフランシスコ報告会in大阪
JJUG CCC 2016 Fall: World is not a square, rendering world coastline map with...
JJUG CCC 2016 Fall: World is not a square, rendering world coastline map with...
JS Board で IoT は楽勝か?
JS Board で IoT は楽勝か?
20150209 甲府-web新世紀2
20150209 甲府-web新世紀2
iOS6時代のTwitter / Facebook連携
iOS6時代のTwitter / Facebook連携
OpenCVで作るスタンプAR
OpenCVで作るスタンプAR
可変値変数 var を極力避けることを模索するための事前知識 #cswift
可変値変数 var を極力避けることを模索するための事前知識 #cswift
pairsでのAngularJS x TypeScript x e2e @めぐすた#1
pairsでのAngularJS x TypeScript x e2e @めぐすた#1
cloudstack devcloud
cloudstack devcloud
Javaと小道具
Javaと小道具
MVCもやもや話
MVCもやもや話
はじめよう JavaFX 2.x(第3回 岡山Javaユーザー会)
はじめよう JavaFX 2.x(第3回 岡山Javaユーザー会)
Live the Knight#7
Live the Knight#7
Azure のポータル画面で、AI フレーバな BOT の作成ハンズオン
Azure のポータル画面で、AI フレーバな BOT の作成ハンズオン
JavaOne2013報告会 JavaFX Update
JavaOne2013報告会 JavaFX Update
Introduction to Kanagawa Ruby Kaigi01 #kana01
Introduction to Kanagawa Ruby Kaigi01 #kana01
㉒初期プロジェクトを改造!
㉒初期プロジェクトを改造!
Más de Kiyotaka Oku
Osaka Venture Meetup #3
Osaka Venture Meetup #3
Kiyotaka Oku
巨大不明ビルドの継続的統合を目的とするビルドパイプラインを主軸とした作戦要綱
巨大不明ビルドの継続的統合を目的とするビルドパイプラインを主軸とした作戦要綱
Kiyotaka Oku
BaseScriptについて
BaseScriptについて
Kiyotaka Oku
ミニ四駆ジャパンカップで勝つ方法を考える
ミニ四駆ジャパンカップで勝つ方法を考える
Kiyotaka Oku
Jenkins plugin memo
Jenkins plugin memo
Kiyotaka Oku
Spockの基礎
Spockの基礎
Kiyotaka Oku
JUC2012
JUC2012
Kiyotaka Oku
GDK48総選挙の裏側
GDK48総選挙の裏側
Kiyotaka Oku
Jenkins入門
Jenkins入門
Kiyotaka Oku
Grails/Groovyによる開発事例紹介
Grails/Groovyによる開発事例紹介
Kiyotaka Oku
Griffon不定期便〜G*ワークショップ編〜
Griffon不定期便〜G*ワークショップ編〜
Kiyotaka Oku
日本Grails/Groovyユーザーグループ
日本Grails/Groovyユーザーグループ
Kiyotaka Oku
GroovyConsole2
GroovyConsole2
Kiyotaka Oku
GroovyConsole
GroovyConsole
Kiyotaka Oku
JJUG CCC 2011 Spring
JJUG CCC 2011 Spring
Kiyotaka Oku
Jenkinsプラグインの作り方
Jenkinsプラグインの作り方
Kiyotaka Oku
Devsumi Openjam
Devsumi Openjam
Kiyotaka Oku
Jenkins and Groovy
Jenkins and Groovy
Kiyotaka Oku
とある断片の超動的言語
とある断片の超動的言語
Kiyotaka Oku
Mote Hudson
Mote Hudson
Kiyotaka Oku
Más de Kiyotaka Oku
(20)
Osaka Venture Meetup #3
Osaka Venture Meetup #3
巨大不明ビルドの継続的統合を目的とするビルドパイプラインを主軸とした作戦要綱
巨大不明ビルドの継続的統合を目的とするビルドパイプラインを主軸とした作戦要綱
BaseScriptについて
BaseScriptについて
ミニ四駆ジャパンカップで勝つ方法を考える
ミニ四駆ジャパンカップで勝つ方法を考える
Jenkins plugin memo
Jenkins plugin memo
Spockの基礎
Spockの基礎
JUC2012
JUC2012
GDK48総選挙の裏側
GDK48総選挙の裏側
Jenkins入門
Jenkins入門
Grails/Groovyによる開発事例紹介
Grails/Groovyによる開発事例紹介
Griffon不定期便〜G*ワークショップ編〜
Griffon不定期便〜G*ワークショップ編〜
日本Grails/Groovyユーザーグループ
日本Grails/Groovyユーザーグループ
GroovyConsole2
GroovyConsole2
GroovyConsole
GroovyConsole
JJUG CCC 2011 Spring
JJUG CCC 2011 Spring
Jenkinsプラグインの作り方
Jenkinsプラグインの作り方
Devsumi Openjam
Devsumi Openjam
Jenkins and Groovy
Jenkins and Groovy
とある断片の超動的言語
とある断片の超動的言語
Mote Hudson
Mote Hudson
javafx-mini4wd
1.
Javaプログラマのための ミニ四駆再入門 #yonayonajavafx @kiy0taka
2.
告知
3.
富士通乾電池提供 ミニ四駆ジャパンカップ2014 • 10/5(日) 大阪大会2 •
京セラドーム大阪・9Fスカイホール • たぶん8:00から受付開始
4.
自己紹介 •奥 清隆(おく きよたか) •
id:kiy0taka、@kiy0taka •JGGUG関西支部 •関西Javaエンジニアの会 •株式会社ニューキャスト所属
5.
Mr. Java Day
Tokyo
6.
7.
8.
9.
ミニ四駆の話をと言われて https://twitter.com/skrb/status/484356816084926465
10.
富士通乾電池提供 ミニ四駆ジャパンカップ 2014
11.
ジャパンカップ • 2012年にミニ四駆30周年を記念して復活! • 第三次ブームのきっかけになった •
昨年の動員数は2万人。 • 全盛期1996年は30万人超 • 安定の富士通乾電池提供
12.
• 6月22日(日) 東京大会1 品川シーサイドフォレスト・オーバルガーデン(東京都品川区) •
6月29日(日) 大阪大会1 京セラドーム大阪・9Fスカイホール(大阪市西区) • 7月 6日(日) 愛知大会 愛・地球博記念公園 地球市民交流センター(愛知県長久手市) • 7月13日(日) 群馬大会 ニューサンピア高崎・多目的ホール(群馬県高崎市) • 7月20日(日) 静岡大会 ツインメッセ静岡(静岡県静岡市) • 8月 3日(日) 愛媛大会 今治港特設会場(愛媛県今治市) • 8月17日(日) 仙台大会 サンフェスタ・1Fイベントホール(仙台市若林区) • 8月24日(日) 東京大会2 品川シーサイドフォレスト・オーバルガーデン(東京都品川区) • 9月 7日(日) 広島大会 広島マリーナホップ(広島市西区) • 9月14日(日) 北海道大会 新千歳空港 イベントホール翔(北海道千歳市) • 9月21日(日) 福岡大会 かしいかえん シルバニアガーデン 大テント(福岡市東区) • 9月28日(日) 東京大会3 東京ビッグサイト(東京都江東区) • 10月5日(日) 大阪大会2 京セラドーム大阪・9Fスカイホール(大阪市西区) • 10月12日(日) 岡山大会 岡山おもちゃ王国(岡山県玉野市) • 10月19日(日) 東京大会4・チャンピオン決定戦 MEGA WEB(東京都江東区)
13.
14.
参加方法 • 昔のように事前抽選はない • 当日参加 •
でも遅くなると参加できない • 通称:0次予選
15.
クラス • ジュニアクラス(中学生以下) • オープンクラス(誰でも) •
チャンピオンズ(公式大会優勝者) • ファミリークラス(小学校3年生まで、または共 同製作した中学3年生までの親子) • ファミリークラスは1次予選のみ
16.
シード代表決定戦 • 全国各地のミニ四駆ステーションで行われる大 会で優勝すると2次予選から参加できる • お近くのミニ四駆ステーションへ •
http://www.tamiya.com/japan/mini4wd/ station_race/jcup2014_0603.pdf
17.
ミニ四駆を始めるため に必要な物
18.
はじめるために必要な物 • ミニ四駆 • パーツ •
工具 • コース • 友達
19.
シャーシ • http://www.tamiya.com/japan/cms/ newstopics/2276-mini4chassis.html • 14種類? •
タイプ1∼3シャーシは手に入らない • とりあえずMAシャーシから始めればいいと思う
20.
モーター • http://www.tamiya.com/japan/download/ pdf/mini4wd/parts/mini4wd_motor.pdf • たくさんある •
ハイパーミニ/ハイパーダッシュなんてもうない • MA/MSシャーシは両軸モーターなので間違えな いように
21.
パーツ • ありすぎる • とりあえずモーター全種類買っとけ •
あとファーストトライパーツセットとか
22.
ステー/プレート • 強度を上げたり、ローラーベースを広げたりする • 加工して自作パーツを作る
23.
ブレーキ • レーンチェンジャーやドラゴンバックでコースア ウトしないように減速させる • 最近のモーター/コースでは必須アイテム
24.
ダンパー • ジャンプして着地後に衝撃を吸収させる • ショック吸収タイヤなんて今や夢パーツ扱い
25.
その他のパーツ • パーツについてはきりがないのであとはググれ • ネットで買うならヨドバシ.comが最強 •
パーツ1つでも送料無料で翌日配達
26.
工具 • ドライバー • ボックスドライバー •
ニッパー • ペンチ • ヤスリ • ピンセット • デザインカッター • ノギス • ホビールーター
27.
コース • JCJC (安いとこで14Kぐらい) •
オーバルホームサーキット (8Kぐらい) • もしくは近くのミニ四駆ステーションへ • レンタルできるが送料考えると割に合わない
28.
#ミニ四駆を走らせたい お客様の中に、会社にコースあるって方はいませんか?
29.
おまけ
30.
JavaFX 3DとJBulletで 物理演算の話 ∼ミニ四駆シミュレータを作りたい∼
31.
ミニ四駆シミュレータ https://www.youtube.com/watch?v=Ag16KQ7YrSg
32.
JavaFX 3D • javafx.scene.shape.Shape3D •
Box/Cylinder/Sphere/MeshView
33.
物理演算エンジン 物理演算エンジン(ぶつりえんざんエンジン、Physics engine)とは、質量・速度・摩擦・風といった、古典力 学的な法則をシミュレーションするコンピュータのソフ トウェアである。多くの場合、ミドルウェアライブラリ を指す。 略して物理演算、物理エンジン、Physicsとも 言う。 http://ja.wikipedia.org/wiki/物理演算エンジン
34.
http://www.nicovideo.jp/tag/物理演算
35.
JBullet • Bullet Physics
Library (http://bulletphysics.org/ wordpress/) のJava版 • 本家の最新版は2.83、バージョン3系が開発中らしい • JBulletは本家の2.72がベース • 開発は2010年で止まってるっぽい
36.
ざっくりとした使い方 • DynamicsWorldを作る • 物体をDynamicsWorldに入れる •
DynamicsWorldにシミュレートさせる • 描画するのはBulletの仕事ではないので自前で用 意する → JavaFX 3D
37.
JBulletでHelloWorld
38.
HelloWorld.java • JBulletのサンプルについてる • 球体が自由落下して地面に跳ね返る •
画面はないので球体の座標が標準出力に出るだけ
39.
DynamicsWorld // おまじない! CollisionConfiguration collisionConfiguration
= new DefaultCollisionConfiguration(); CollisionDispatcher dispatcher = new CollisionDispatcher(collisionConfiguration);! // 物理世界の大きさ! Vector3f worldAabbMin = new Vector3f(-10000, -10000, -10000);! Vector3f worldAabbMax = new Vector3f(10000, 10000, 10000);! // 物理世界に存在できる物体の数! int maxProxies = 1024;! AxisSweep3 overlappingPairCache = new AxisSweep3(worldAabbMin, worldAabbMax, maxProxies);! // ソルバーなにそれおいしいの! SequentialImpulseConstraintSolver solver = new SequentialImpulseConstraintSolver();! // 物理世界! DiscreteDynamicsWorld dynamicsWorld = new DiscreteDynamicsWorld(dispatcher, overlappingPairCache, solver, collisionConfiguration);! // 重力! dynamicsWorld.setGravity(new Vector3f(0, -9.8, 0));
40.
地面を作る // 地面の形状(Box)! CollisionShape groundShape
= new BoxShape(new Vector3f(50.f, 50.f, 50.f));! ! // 地面の位置! Transform groundTransform = new Transform();! groundTransform.setIdentity();! groundTransform.origin.set(new Vector3f(0.f, -56.f, 0.f));! ! // モーションステート(これ重要)! DefaultMotionState myMotionState = new DefaultMotionState(groundTransform);! ! // 質量(単位はKg、0にすると無限大)! float mass = 0f;! // 地面の物理的なあれ! RigidBodyConstructionInfo rbInfo = new RigidBodyConstructionInfo(mass, myMotionState, groundShape, localInertia);! RigidBody body = new RigidBody(rbInfo);! ! // 力学世界につっこむ! dynamicsWorld.addRigidBody(body);
41.
球体を作る // 球体! CollisionShape colShape
= new SphereShape(1.f);! collisionShapes.add(colShape);! ! Transform startTransform = new Transform();! startTransform.setIdentity();! ! // 質量1kg! float mass = 1f;! ! // 初期位置設定! startTransform.origin.set(new Vector3f(2, 10, 0));! ! DefaultMotionState myMotionState = new DefaultMotionState(startTransform);! ! RigidBodyConstructionInfo rbInfo = new RigidBodyConstructionInfo(mass, myMotionState, colShape, localInertia);! RigidBody body = new RigidBody(rbInfo);! ! dynamicsWorld.addRigidBody(body);
42.
シミュレートする for (int i=0;
i<100; i++) {! dynamicsWorld.stepSimulation(1.f / 60.f, 10);! ...! }!
43.
JBullet HelloWorld + JavaFX 3D
44.
JBullet + JavaFX
3D • 力学世界に入れてる物体をJavaFX 3Dで描画する • JBulletのCollisionShapeと同じ形状/位置/姿勢の ものをJavaFXのShape3Dで作る • シミュレートして、それぞれの物体の位置/姿勢を JavaFXのノードに適用する
45.
Node CollisionShape
46.
地面を作る(JBullet) // 地面の形状(Box)! CollisionShape groundShape
= new BoxShape(new Vector3f(50.f, 50.f, 50.f));! ! // 地面の位置! Transform groundTransform = new Transform();! groundTransform.setIdentity();! groundTransform.origin.set(new Vector3f(0.f, -56.f, 0.f));! ! // モーションステート(これ重要)! DefaultMotionState myMotionState = new DefaultMotionState(groundTransform);! ! // 質量(単位はKg、0にすると無限大)! float mass = 0f;! // 地面の物理的なあれ! RigidBodyConstructionInfo rbInfo = new RigidBodyConstructionInfo(mass, myMotionState, groundShape, localInertia);! RigidBody body = new RigidBody(rbInfo);! ! // 力学世界につっこむ! dynamicsWorld.addRigidBody(body);
47.
地面を作る(JavaFX) // 地面の形状(Box)! Box groundNode
= new Box(100, 100, 100);! ! // 地面の位置! boxNode.setTranslateX(0);! boxNode.setTranslateY(-56);! boxNode.setTranslateZ(0);
48.
JavaFXの座標について 3D を行うのに欠かせないのが、座標です。もちろん、JavaFX でも
3 次元の座標 を扱うのですが、ちょっとだけ注意が必要です。 というのも、通常の 3D の CG Tool は y 軸が数学と同じで上方向を向いています。 ところが、JavaFX では 2D と 3D を区別なく使えるように しているためなのか、y 軸が下を向いています。 ツールで作ったモデルをインポートしたら、なぜかモデルが下を向いていたという こともあるので、注意が必要です。 もし、下向きの y 軸がいやなのであれば、z 軸を中心にし て 180 度回転させます。 JavaFX 8 で 3D その 1 - JavaFX in the Box http://skrb.hatenablog.com/entry/2013/12/25/002250
49.
座標 JavaFX JBullet x軸に180 回転してやる
50.
地面を作る(JavaFX) // 親ノードをx軸に180°回転! Group root
= new Group();! root.setRotationAxis(new Point3D(1, 0, 0));! root.setRotate(180);! ! root.getChildren().add(boxNode);
51.
Nodeの変換 JavaFX JBullet Box BoxShape Cylinder
CylinderShape Sphere SphereShape MeshView BvhTriangleMeshShape Group CompoundShape
52.
MotionState
53.
地面を作る(JBullet) // 地面の形状(Box)! CollisionShape groundShape
= new BoxShape(new Vector3f(50.f, 50.f, 50.f));! ! // 地面の位置! Transform groundTransform = new Transform();! groundTransform.setIdentity();! groundTransform.origin.set(new Vector3f(0.f, -56.f, 0.f));! ! // モーションステート(これ重要)! DefaultMotionState myMotionState = new DefaultMotionState(groundTransform);! ! // 質量(単位はKg、0にすると無限大)! float mass = 0f;! // 地面の物理的なあれ! RigidBodyConstructionInfo rbInfo = new RigidBodyConstructionInfo(mass, myMotionState, groundShape, localInertia);! RigidBody body = new RigidBody(rbInfo);! ! // 力学世界につっこむ! dynamicsWorld.addRigidBody(body);
54.
MotionState • dynamicsWorld.stepSimulation()を実行すると それぞれの物体の位置とかを計算してくれる • シミュレートごとに各物体の計算結果が MotionStateのsetWorldTransform()で渡され る •
DefaultMotionStateクラスを継承してJavaFX 用にあれしてやればいい
55.
JavaFXMotionState @Override! public void setWorldTransform(Transform
centerOfMassWorldTrans) {! super.setWorldTransform(centerOfMassWorldTrans);! ! Quat4f rotation = new Quat4f();! centerOfMassWorldTrans.getRotation(rotation);! double rad = 2 * Math.acos(rotation.w);! ! Platform.runLater(() -> {! node.translateXProperty().set(centerOfMassWorldTrans.origin.x);! node.translateYProperty().set(centerOfMassWorldTrans.origin.y);! node.translateZProperty().set(centerOfMassWorldTrans.origin.z);! node.setRotate(rad * 180 / Math.PI);! node.setRotationAxis(new Point3D(! rotation.x / Math.sin(rad / 2),! rotation.y / Math.sin(rad / 2),! rotation.z / Math.sin(rad / 2)! ));! });! }
56.
その他 • 2つの剛体を結合する制約とか • ソフトボディとか •
Vehicleとか • いろいろ調べないと分からない
57.
ライブラリ作成中 • JavaFXのノードを作って物理的なパラメータを 渡せばあれしてくれる • GroovyFX用のも作成中 •
公開は未定
58.
サンプル(Java) public class App
extends JBulletApp {! ! @Override! protected void create3D() {! Box box = new Box(50, 50, 50);! box.setTranslateY(-25);! box.setScaleX(0.5);! add(box, new BulletOption().restitution(1.0f));! ! Sphere sphere = new Sphere(5);! sphere.setTranslateY(30);! add(sphere, new BulletOption().mass(10).restitution(0.1f));! }! ! ...! }!
59.
サンプル(GroovyFX) start {! stage(title: "Hello
World", visible: true, primary: true) {! scene {! perspectiveCamera(true, nearClip:0, farClip:1000)! simulator {! box([50, 50, 50], translateY:-25, mass:0, restitution:1.0)! sphere(5, translateY:20, mass:10, restitution:0.1)! }! }! }! }
60.
まとめ • 大阪大会まで3ヶ月 • 参加される方は
@kiy0taka までご連絡を • あと会社にコースあるよって人も
61.
ご清聴ありがとう ございました
Descargar ahora