1
我有一個3D數據文件(時間,x,y,z),我想創建一個帶有播放功能的javafx交互式動畫,暫停按鈕和旋轉3d對象。如何在javafx中創建3D數據的播放器
我沒有在JavaFx中找到任何基礎示例,似乎我必須重新創建自己的mediaplayer。
請問您有什麼建議。 謝謝,
我有一個3D數據文件(時間,x,y,z),我想創建一個帶有播放功能的javafx交互式動畫,暫停按鈕和旋轉3d對象。如何在javafx中創建3D數據的播放器
我沒有在JavaFx中找到任何基礎示例,似乎我必須重新創建自己的mediaplayer。
請問您有什麼建議。 謝謝,
看一看本library,F(X)YZ是一個開源
JavaFX的3D庫提供附加元,複合對象,控制和數據的可視化,所述鹼的JavaFX 8 3D軟件包沒有。
有幾個組件可以幫助你。例如,所有TexturedMesh
子類都是3D形狀,允許使用數學表達式創建輪廓圖(通過使用紋理)。
作爲一個例子,看看二十面體test。
private IcosahedronMesh ico;
private DensityFunction<Point3D> dens = p-> (double)p.x*p.y*p.z;
@Override
public void start(Stage primaryStage) throws Exception {
...
ico = new IcosahedronMesh(5,1f);
ico.setTextureModeVertices3D(1530,dens);
Group sceneRoot = new Group(ico);
Scene scene = new Scene(sceneRoot, 800, 600, true, SceneAntialiasing.BALANCED);
...
}
這一小段將創建這樣的事情:
現在你可以添加一些動畫:
long lastEffect = System.nanoTime();
AtomicInteger count=new AtomicInteger();
AnimationTimer timerEffect = new AnimationTimer() {
@Override public void handle(long now) {
if (now > lastEffect + 50_000_000l) {
double t=count.getAndIncrement()%10;
dens = p->(double)(p.x+t)*(p.y+t)*(p.z+t);
ico.setDensity(dens);
lastEffect = now;
}
}
};
timerEffect.start();
,你會看到類似this。
您可以在子場景頂部添加常用的媒體播放器控件,並將它們綁定到動畫。您也可以添加其他動畫來旋轉3D形狀。
因此,唯一需要添加的是將數據文件傳遞給形狀的方法......您可以在F(X)yz repository上添加功能請求,提供某些特定格式的數據,你需要的形狀...
欲瞭解更多信息,你也可以看看這個post。
請您詳細說明您要完成的是什麼?什麼樣的數據文件? – jdub1581 2015-02-12 17:41:01
@ jdub1581這是一個csv文件,用逗號分隔符,文件格式如下:時間,x1,y1,z1,x2,y2,z2,...(x1,y1,z1)是座標第一個點和(x2,y2,z2)是第二個座標等...我必須從該文件讀取數據並將結果顯示爲3D動畫,我可以將相機轉動。我需要添加視頻控件(播放/暫停,停止和時間滑塊)以在動畫中導航。 – user1828433 2015-02-12 18:15:05
好吧,我想我現在明白了一點,MediaPlayer讓我失望了。 所以,{x,y,z}值 - 網格中的頂點?或者說是「球體」的位置? 您是否需要內插前進和後退? – jdub1581 2015-02-12 23:47:11