2015-10-25 29 views
1

我正在研究一个研究项目,该项目涉及到将java中的三维位置坐标(x,y,z)与其他特征(例如点的大小)一起可视化。java中的三维运动图

如果在2D中的位置,谷歌运动图将是完美的。然而,它在3D中,因为我正在观察(随着时间的推移)在三维空间中的运动。

我已经研究了很长一段时间了,我确实发现我可以在java3D中做到这一点,但库看起来已经过时了,我不确定它是否可以处理流畅的动画(假设我有坐标在每个时间点而不是路径)。与openGL(JOGL)的连接对于此任务似乎非常复杂。我不确定处理可以处理它。

在java3D的动画中,是否有直接的3D动画球体动画方式?同时改变他们的周长?我一直在阅读一些教程,但没有完全做到这一点。或者,我是否以错误的方式去解决这个问题,是否可以使用某种数学/几何图书馆?

这里是什么,我想实现一个例子:

Second 0: 
- sphere at (0,0,1): (relative) size 1, colour green 
- sphere at (1,1,1): size 2, colour green 

Second 1: 
- sphere at (0,2,2): size 3, colour green 
- sphere at (4,4,1): size 4, colour red 
- sphere at (1,2,1): size 1, colour green 

Second 2: 
- sphere at (1,0,1): size 2, colour red 

带或不带平滑过渡。我不知道如何开始JOGL或如果可能的话。

+1

嗨,dorien,如果我没有理解,你需要基本上渲染多个球体并更新它们在运行时的位置。这在opengl/jogl中是一个相对简单的任务。改变他们的周围似乎有点棘手。有几个选项可供选择,您可能需要对其进行缩放,以便一切都变得更大/更小,或者您可能需要使用另一组几何体,这取决于您是增加还是减少它。无论如何,你应该尝试更深入地解释你真正需要的东西。有多少球体,它们之间的增量多少,更新频率多少,ecc – elect

+0

为了更清楚地说明,我已经添加了一个我想在问题中实现的最小范例。 – dorien

+1

通过平滑的转换,你的意思是,例如,spere [(0,0,1),1,green]变成[(0,2,2),3,绿色],或者第二个0的球体应该消失,而那些第二个1应该出现? – elect

回答

1

我从来没有使用Java3D,但我知道乔吉。

你描述的是,正如我已经提到的,在OpenGL中一个相当简单的任务。

基本上你需要的是像这样的伪代码:

loadData(); 

for(each spehere) { 
    updatePositionAndScale(time); 
    render(); 
} 

您先加载三角形顶点单个球状几何。由于三角洲半径看起来很小,您可能需要加载一个球体,否则您可以加载几个球体,这取决于几何体的丰富程度。我的意思本质上是相似的

enter image description here

反正东西,因为球的数量是非常低(现代GPU可以轻松处理三角形几百),你可能想要去与一个高详细spehere。

然后,您将循环播放您的球体并为每个时间刻度计算当前球体的转换位置和缩放比例。如果你需要线性的东西,你可以通过一个简单的插值来实现。 所有这些参数,位置和缩放,会影响它被称为模型矩阵是改变你的几何形状为模型空间的空间,你的三角形首先存在,进入世界空间。 对于每个球体,您将更新这些参数,然后您只需渲染它。

讲起现在的后果^^

学习的OpenGL会要求你投资一些时间。这真的很难估计,因为一切都取决于你开始的知识水平和你想要达到的水平。 如果你想保持尽可能最小,那是尽可能简单,我会说这不会是一个特别复杂的任务(最后的名言)。 你可能会在几天内完成,这也取决于你的数学技能。 您将学习着色器的基本知识,他们如何读取数据及其如何工作,转换和OpenGL中的(简单)照明。假设球体的数量也很少,那么你可以在java中完全做到这一点,而不使用任何加速度(比如OpenGL)并且节省一些痛苦的时间。 但是既然你已经在研究Java3D和Jogl,我只想告诉你,你想要达到的是真正的基础(当然,如果你已经知道OpenGL的话)。

所以缺点是你必须在几天(几周)内学习一个新的API的基础,比如OpenGL,然后才能达到你想要的。 相反,你会学到一些新的东西(这总是很好),你会得到硬件加速,这意味着你可以使用所有这些功能,通过使用灯光效果使这些球体高度细致和美观。 如果你想快速浏览一下,这个简单的Hello Triangle看起来像

+0

非常感谢您的详细解释。我想我需要学习这一点。希望它会很快:) – dorien