IDL 3d 지형 자료로 PG-Steamer의 Flying simulation을 구현하고 싶습니다.

게시판 IDL Q&A IDL 3d 지형 자료로 PG-Steamer의 Flying simulation을 구현하고 싶습니다.

3 답변 글타래를 보이고 있습니다
  • 글쓴이
    • #1156 Reply
      ksw
      회원

      pro abgp

      dem_file = filepath(‘elevbin.dat’, subdir = [‘examples’, ‘data’])
      img_file = filepath(‘elev_t.jpg’, subdir = [‘examples’, ‘data’])

      dem = read_binary(dem_file, data_dims=[64,64])

      read_jpeg, img_file, img, true = 3

      isurface, dem, texture_image = img, VIEW_ZOOM = 5,/FIT_TO_VIEW
      end

      —–

      PG-Steamer에 나오는 Flying simulation 처럼 IDL로 만든 3d 지형을 확대해 원하는 경로로 이동하는 시뮬레이션을 만들고 싶습니다.
      현재 isurface를 통해 3d 지형을 불러오고, 지형 확대하는 것까진 구현했습니다만, 원하는 좌표를 확대하고 각도 조정 등을 하는 걸 아직 못했습니다.
      어떻게 하면 이동하는 것처럼 보이는 프로그램을 만들 수 있을까요?
      조언, 답변 부탁드립니다.

      • 이 게시글은 ksw에 의해 10 years, 4 months 전에 수정됐습니다.
    • #1159 Reply
      Jonghyuk
      회원

      PG-Steamer에 대응하는 IDL 계열의 소프트웨어는 ENVI입니다. ENVI에는 3D-Surface View라는 기능에서 Fly Thru 기능을 지원하는데 아마 이것이 같은 기능일 것이라고 생각합니다. ENVI 와 관련하여서도 이 사이트에서 다루고 있으므로 참고하시면 좋겠습니다.

      ENVI는 순수 IDL로 만들어졌기 때문에, ENVI의 기능은 “시간이 많이 걸리고 어려울지는 몰라도” IDL로 만들 수는 있다는 의미이기도 한데요, IDL에 관련이 있는 DEMO가 들어있기는 합니다.

      IDL> d_flythru

      를 실행해 보시면 아마 원하시는 기능과 유사할 것 같습니다. 소스코드를 보실 수도 있는데, Object Graphics와 GUI를 사용한 프로그래밍이어서 간결하고 쉬운 그런 내용은 아닙니다. 그렇다고 정말 어려운 그런 내용은 아니구요, 단지 평소 보시는 IDL 프로그램 길이에 비해 길 것 같습니다.

    • #1163 Reply
      ksw
      회원

      정말 감사합니다. 정말 막막했었는데 답변해주신 덕분에 갈피를 잡았습니다.
      알려주신 대로 d_flythru 의 소스코드를 보고 좀 더 제가 원하는 방향으로 바꾸고 있습니다.

      그런데 정말 죄송한하지만 하나만 더 여쭤보겠습니다. 혹시 idl에 시간을 이용하는 함수도 있습니까?
      지금 바꾸고 있는 게 기존의 Fly-through 는 마우스로 조작을 하는 거라 마우스 필요 없이 제가 설정한 대로 움직이도록 하는 건데 제가 sState.pitch 값을 임의로 주어서 동작 자체는 제가 설정한 값대로 실행이 됩니다. 그런데 여기서 문제가 설정한 값대로만 움직이니까 이게 한 방향으로만 계속 움직입니다.
      예를들어 sState.pitch = -0.009 를 설정하면 계속 아래로만 움직이고 중간에 다시 올라간다거나 하는 식의 이동 경로 지정이 안 되고 있습니다.
      for 문과 if 문을 사용해서 해보려 했지만 원하는 대로 여러 경로를 지정이 되지 않습니다. 해서 시간이 지남에 따라 값이 바뀌도록 하면 어떨까 하는데, 그에 대한 함수가 어떤 게 있겠습니까?
      예를 들어 sState.pitch = i 를 쓰고 여기에서 최초의 i 값은 0.009, n초 뒤에 i의 값이 0.004, n2초 뒤에 i 값이 -0.004 가 되는 식으로 하고 싶습니다.
      답변 부탁드립니다.

    • #1165 Reply
      Sangwoo
      회원

      WAIT라는 명령을 사용해보시면 어떨까 합니다. 예를 들어, WAIT, 5라는 명령을 사용하면 무조건 5초를 기다린 후 다음 순서를 진행합니다.

3 답변 글타래를 보이고 있습니다
'IDL 3d 지형 자료로 PG-Steamer의 Flying simulation을 구현하고 싶습니다.'에 답변달기
글쓴이 정보: