问题描述
我试图让多个 collada 对象同时在 WorldWind 中移动。为此,我使用线程来移动它们。
当我只有一个 collada 对象来移动应用程序时,效果很好。当我加载多个 collada 对象并将它们添加到图层时,它们开始滞后。我不知道是我使用线程的方式错误、collada 模型还是导致延迟的某些内存泄漏。
我添加模型的方式是使用 ColladaRoot 解析对象,使用 ColladaController 和 Layer 创建可渲染层并将其添加到 WorldWind。
如果您有任何想法,请告诉我。
编辑:所以我这样做的方式是:
public void run()
{
Boolean p = false;
this.start = true;
Iterator<Map.Entry<String,ArrayList<Position>>> itr = satPath.entrySet().iterator();
Map.Entry<String,ArrayList<Position>> entry = itr.next();
while(start == true && entry.getValue().size() != 1){
RenderableLayer layer = new RenderableLayer();
for(String nm : satPath.keySet()) {
try
{
Boolean a = appFrame.getWwd().getModel().getGlobe() instanceof FlatGlobe;
final ColladaRoot colladaRoot = ColladaRoot.createAndParse(this.colladaSource);
colladaRoot.setAltitudeMode(WorldWind.RELATIVE_TO_GROUND);
Vec4 scale = new Vec4(1000000,1000000,1000000);
colladaRoot.setModelScale(scale);
colladaRoot.setPosition(satPath.get(nm).get(0));
satPath.get(nm).remove(0);
System.out.println(satPath.get(nm).size());
final String satName = nm;
Layer x = appFrame.getWwd().getModel().getLayers().getLayerByName("Sat1" + nm);
if(x != null) {
appFrame.getWwd().getModel().getLayers().remove(x);
}
ColladaController colladaController = new ColladaController(colladaRoot);
layer.addRenderable(colladaController);
layer.setName("Sat1" + nm);
}
这是我做的一个方法,以防我需要运行多个线程来使运动更好。我有一个包含卫星名称的 HashMap 及其课程,创建 ColladaRoot,添加属性,然后删除前一个卫星,并添加另一个具有下一个位置的卫星。
该方法是为 Runnable 类制作的,问题是有 1 个卫星它工作流畅,当我添加 2 个卫星时,无论是否在同一线程上,动画都会变得滞后。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)