이런 밤하늘 프로그램을 원한다.
2010/01/05 16:53
[공지]이미지나 링크가 깨졌다면 댓글 부탁드립니다.
나는 올해 멋진 밤하늘을 보여줄 수 있는 모바일 애플리케이션 및 Flash 애플리케이션을 만드는 것을 목표로 삼았다. 모바일이나 Flash와 같이 렌더링하는데 어려운 환경에서 어떻게 최적화 하는가가 큰 이슈가 되지 않을까 생각이 든다. 아래는 간단하게 만들어본 밤하늘의 모습이다. Flash Player에서 거의 40~50 FPS로 나오는것으로 봐서 이것 조차도 느리다.
각종 천체목록과 연결되고 이미지 서비스도 된다. 천체에 대한 정보도 보여주고 태양계(행성,혜성,위성) 정보도 볼 수 있다. 각 지역에서의 밤하늘 정보를 보여주며 각종 천문현상도 볼 수 있다.
아무튼 일단 너무 큰거 말고 작은것부터 차근차근 만들어 봐야겠다.
글쓴이 : 지돌스타(http://blog.jidolstar.com/645)
'천문학 > 천문프로그래밍' 카테고리의 다른 글
| 이런 밤하늘 프로그램을 원한다. (12) | 2010/01/05 |
|---|---|
| [천문/우주]CDS에서 제공하는 개발자 코너 - XML 웹서비스에 대해 (0) | 2009/12/29 |
| [천문] 적경,적위 좌표값으로부터 별자리 이름 찾기 (8) | 2009/11/17 |
| [천문] 율리우스 적일(積日, Julian Date) 계산 방법 (4) | 2009/11/17 |
| [천문] delta-T(ΔT) 계산하기 (0) | 2009/11/17 |
| [천문] 지구의 세차운동(歲差運動, Precession) 계산하기 (4) | 2009/11/17 |




그러니까..아마도 원하시는 스펙은 밉맵이란걸로 일차적으로 구현이 됩니다.
http://www.letsmakegame.net/data_dic/files/attach/images/349/528/013/mipmap_lena_boxcar.jpg
밉맵은 화상의 세밀한 정도에 맞춰 고해상도의 텍스쳐를 적용하는 기술입니다.
이게 pv3d에 반영되어있습니다 ^^
이왕 파신거 더 파주세요. ㅎㅎ
밉맵이라는 것도 있군요. pv3d에도 반영되어 있다니 ㅎㅎ
하지만 제가 생각하는 것은 이런식이 아닙니다. 밉맵으로는 구현할 수 없어요. 밉맵은 큰 이미지의 크기를 줄여주는 것만 있다면 제가 원하는 것은 추가적으로 큰 이미지를 적절히 타일로 나눠줘야하고 View에 맞게 적절한 타일을 읽어와야합니다. 일반 2D 지도(구글맵이나 스타플 맵과같이)가 타일로 나눠져 있듯이 3D에 맞는 타일을 만들어 load, unload해줘야하거든요. 2D는 무지 쉬운데 3D로 하다보니 이게 쉽진 않네요. 그래서 이에 필요한 산수를 정리하고 있습니다. ^^
그것마저도..에 그러니까 일단 만든 입체를 UV매핑으로 전환한 뒤
각 서페이스의 매핑을 별도의 bitmapData로 지정한 후
해당 bitmapData를 밉맵으로 구성하면 해결됩니다.
예 이 방법론은 대략적으로 알고 있습니다. 같은 타일이더라도 밉맵을 활용하면 더욱 부드러운 확대/축소를 할 수도 있겠군요.
추가적으로 pv3d도 precise를 이용하면 매핑이 단순히 아핀변환을 하지 않고 매트릭스를 통해 z를 반영하여 위에 올리신 샘플처럼 확대했을때 이상하게 찌그려져 보이는 현상도 없앨 수 있다는..
머랄까 일단 구현할만한게 구현되어있긴 해요 ^^
아핀 변환차이점에 대해서는 ggpro님의 포스트가 매우 좋은게 있습니다.
http://blog.naver.com/ggpro/30068200208
네 저 찌그러지는 모양이 정말 보기 싫더라구요. 막 깜박이는것 같구. 저건 그냥 Away3dlite로 만든건데... 별로 안좋아 보이네요. 좋은 정보 감사해요. 역시 큰 도움이 되었어요.
음 어웨이라이트의 성능은 이 어플로 보자면 그저그렇군요.
pv3d의 fp10 브렌치쪽이 훨씬 성능이 나오는듯
away3dlite의 primitive 구를 사용했는데 bothSide 옵션을 true로 줬어요. 이렇게 하면 TriangleCulling.NONE으로 줘버리더군요. NEGATIVE 옵션을 줄 수 있는 방법은 없더군요. 이게 상관있을지 모르겠지만 아마 렌더링에 영향을 주지 않았을까요? 물론 Negative한 구를 하나 만들면 되는데 그냥 기존소스 복사해서 만들어도 됩니다만... ^^
또 한가지는 회전시 2축에 대한 오일러변환을 한건데 쿼터니언을 썼다면 더 빠르지 않았을까도 생각합니다.
ㅎㅎ 확실히 3D를 파고 계시는군요.
컬링은 사실 컬링할 대상이 많아야 효과가 있습니다.
예를들어 격투게임은 거의 컬링할 부분이 없어서 아예 컬링을 생략하죠. 바쁘게 움직이는걸 컬링하는게 더 빡세다는
쿼터니언은 사각을 없애는데는 큰 역활을 하지만 오일러 변환이 as3상에서 연산할때 더 무겁다고 보기는 약간 애매한 면이 많습니다 ^^
정점처리를 얼마나 빨리 링크드 리스트로 관리하는가의 문제인데, 정점이 많아지만 사소한 코딩 스타일이나 자료구조도 영향을 크게 미치니까...아마도 그쪽이 아닐까요.
저도 어웨이르 함 파보고 다음에 얘기드리도록 할께요 ^^
거긴 아직 들여다보질 않아서리 ㅎㅎ
제가 알기로 회전을 위해 오일러변환의 행렬을 사용하면 데이터량 float 16개, 연산속도 float 16개x16개의 비용이 드는 반면 사원수를 사용하면 각각 float 4개, float 4개*4개의 비용이 드는 것으로 알고 있습니다. 이것만 봐도 큰 차이가 있을 것 같은데요. 하긴 연산보다는 렌더링 비용이 너무 커서ㅎㅎㅎ 직접 비교는 안해봐서 모르겠지만 조만간 해봐야겠네요.
그리고 gimbal lock 오류가 발생할 수 있다는 점도 사원수를 써야하는 것으로 알고 있습니다.(말씀하신 사각이 이거죠? ^^)
아무튼... away3dlite의 정점처리의 경우 Flash player 3d api에서 하는 것처럼 하는 것 같습니다. 일반 Vector를 이용하더군요. 그외에는... ^^;;
안녕하세요 지돌님 또 멋진 괴물을 만드셨군요-ㅁ-
저는 요즘 얼터너티바에 빠져서 재밌게 공부하는 중입니다.
기회가 된다면 지돌님께 개인과외라도 받고 싶습니다. 알고 싶은 것이 너무 많네요.
그럼 건강하십시요~ ㅎㅎ+_+
ㅎㅎ 별거없는 겁니다.
저도 3D는 초보수준이라 뭘 가르칠지는 모르겠네요.
앞으로 열심히 해서 좋은 프로그램 만들어가요 ^^