2014-03-30 3 views
1

NetLogo3D 시뮬레이션에서 웹 응용 프로그램을 만들려고합니다.헤드리스 API를 사용하여 NetLogo3D의 내보내기보기

NetLogo3D 5.0.5는 (아직) 애플릿 제작을 지원하지 않기 때문에 "export-view"명령을 사용하여 시뮬레이션에서 직접 API와 출력 스크린 샷을 사용할 생각이있었습니다. 시뮬레이션은 잘 작동하고

import org.nlogo.headless.HeadlessWorkspace; 

public class main { 
    public static void main(String[] argv) { 
    System.setProperty("org.nlogo.is3d", "true"); 
    HeadlessWorkspace workspace = HeadlessWorkspace.newInstance() ; 
    try { 
     System.out.println("Working Directory = " + System.getProperty("user.dir")); 
     workspace.open("MyProject.nlogo3d"); 
     workspace.command("setup"); 
     workspace.command("repeat 50 [ go ]") ; 
     workspace.command("export-view \"screenshot.jpg\"") ; 
     workspace.dispose(); 
    } 
    catch(Exception ex) { 
     ex.printStackTrace(); 
    } 
    } 
} 

, 에이전트가 다음 화면이 출력된다 50 틱에 대한 이동 :

여기에 지금까지 내 코드입니다.

문제는 스크린 샷이 모든 요소를 ​​캡처하지 못한다는 것입니다. 모든 패치는 보이지 않으며 (일반적으로 색이있는 것조차도) 에이전트는 "자동차와 같은 특정 3D 모양을 가져야한다고하더라도 2D 모양으로 그립니다 ").

Export-view는 NetLogo3D GUI에서 제대로 작동하므로 API를 사용하지 않아야하는 이유를 알 수 없습니다.

내가 할 수있는 일이 더 많습니까? 아니면 헤드리스 API에 아직 완전히 구현되지 않은 명령입니까?

답변

1

원하는 기능은 헤드리스 NetLogo 3D에 존재하지 않습니다.

나는 추가하기가 얼마나 어려울 지 모른다고 생각합니다. 그것은 가능할 것이라고 지금 막 "머리가없는 JOGL"검색에서 나에게 보인다. 오픈 소스 기부로 나오지 않는 한, 또는 누군가가 기금을 제공하지 않는 한 그것이 일어날 가능성은 극히 낮다고 생각합니다.

아마 virtual X server에서 NetLogo 3D GUI를 실행하여 문제를 해결할 수 있습니다. (실제로 Xfvb와 JOGL이 잘 작동하는지는 알 수 없지만 가능할 것으로 보입니다.)

또는 3DVisualization을 생성하는 대신 다음을 사용하십시오. https://github.com/fstonedahl/RayTracing-Extension, POV- 레이.

관련 문제