본 논문에서는 3D 애니메이션 도구인 마야를 이용하여 태양계를 모델링하고 각 행성의 움직임과 물리적인 속성들을 정밀하고 객관적으로 구현하여 태양계의 구조를 시각적으로 쉽게 이해할 수 있도록 시뮬레이터를 구현하였다. 메뉴를 이용한 마야의 모델링으로는 정밀한 물리적 속성 값을 표현하기 어려우므로 파이선 스크립트를 이용하여 각 행성의 특성을 표현하였다. 제안하는 시뮬레이터는 가상현실 분야나 학생들의 교육 자료로서 사용 가능하도록 모델링과 렌더링을 실사와 동일하게 구현하였다. 또한 마야 애니메이션에서의 메뉴를 이용한 모델링과 스크립트 언어인 파이선을 활용하여 누구라도 쉽게 실사 영상을 볼 수 있도록 하였다.
본 논문에서는 3D 애니메이션 도구인 마야를 이용하여 태양계를 모델링하고 각 행성의 움직임과 물리적인 속성들을 정밀하고 객관적으로 구현하여 태양계의 구조를 시각적으로 쉽게 이해할 수 있도록 시뮬레이터를 구현하였다. 메뉴를 이용한 마야의 모델링으로는 정밀한 물리적 속성 값을 표현하기 어려우므로 파이선 스크립트를 이용하여 각 행성의 특성을 표현하였다. 제안하는 시뮬레이터는 가상현실 분야나 학생들의 교육 자료로서 사용 가능하도록 모델링과 렌더링을 실사와 동일하게 구현하였다. 또한 마야 애니메이션에서의 메뉴를 이용한 모델링과 스크립트 언어인 파이선을 활용하여 누구라도 쉽게 실사 영상을 볼 수 있도록 하였다.
In this paper, we introduce a simulation tool for solar system using 3D animation tool MAYA. It accurately models solar system's astronomical features, such as each planet's orbital period, orbital speed, relative size, and texture, etc. This simulator visualize the solar system in 3D, which can be ...
In this paper, we introduce a simulation tool for solar system using 3D animation tool MAYA. It accurately models solar system's astronomical features, such as each planet's orbital period, orbital speed, relative size, and texture, etc. This simulator visualize the solar system in 3D, which can be used to easily understands the system's positioning and astronomical movements. With a conventional Maya modeling process using menus and UI windows, it is difficult to assign correct physical attributes of planets. We use Python script to set up each planet's astronomical parameters. The proposed simulator is rendered as real as possible to be used for virtual reality and educational purpose.
In this paper, we introduce a simulation tool for solar system using 3D animation tool MAYA. It accurately models solar system's astronomical features, such as each planet's orbital period, orbital speed, relative size, and texture, etc. This simulator visualize the solar system in 3D, which can be used to easily understands the system's positioning and astronomical movements. With a conventional Maya modeling process using menus and UI windows, it is difficult to assign correct physical attributes of planets. We use Python script to set up each planet's astronomical parameters. The proposed simulator is rendered as real as possible to be used for virtual reality and educational purpose.
* AI 자동 식별 결과로 적합하지 않은 문장이 있을 수 있으니, 이용에 유의하시기 바랍니다.
문제 정의
본 논문에서는 이러한 마야의 특성을 활용하여 실제 태양계를 최대한 사실적으로 모델링하고 이를 애니메이션을 이용 하여 시각화함으로써 태양계에 대한 이해를 도울 수 있는 시뮬레이터를 제안한다. 모델링의 대상은 행성의 상대적 크기, 위치, 지표면 형태 및 공전, 자전 주기와 같은 움직임에 대한 정보 등이다.
제안 방법
Planet 클래스의 개체인 각 행성을 생성한 다음 Planet 클래스에 구현한 메소드 generate( )를 이용하여 행성을 생성하였다. 행성 생성 시 고리가 있으면 polyPipe( ) 함수를 이용하여 고리 형태를 만들고 polyUnite( ) 함수로 결합시켰다.
태양계를 시뮬레이션하기 위해 객관적인 물리 데이터를 이용하여 행성을 모델링한다. 기존의 메뉴를 이용한 모델링 방식으로는 각 물리량을 정밀하게 맞추기 힘들므로 파이선을 이용하여 프로그램하였다. 가장 중요한 몇몇 태양계 각 행성의 객관적 정보를 표 1에 보였다.
행성의 움직임에 expression을 적용하여 직접 수식으로 제어할 수 있으나 모든 행성에 독립적인 expression을 적용해야 하고 실행시간이 느려지는 단점이 있다. 따라서 본 논문에서는 정교한 타원의 궤적을 구현하기 위해 매트랩에서 함수 그래프를 구현하고 이를 마야로 import 시키는 방법을 사용하였다.
태양의 위치를 좌표 원점으로 하여 각 행성을 배치하며 태양의 반지름은 695,500km로 행성들의 크기와는 편차가 너무 많아 마야의 뷰에 동시에 보이기 불가능하다. 따라서 본 모델링에서는 태양의 크기를 다시 1/30로 스케일링 하였다. 모든 행성은 그림 4와같이 자전축 기울기에 맞도록 기울이고 자전 방향에 맞도록 rotation시킨다.
행성의 공전궤도는 완벽한 원이 아닌 타원 궤도를 그린다. 따라서 행성의 원일점, 근일점 그리고 이심률 정보를 이용하여 타원 궤도를 그리고 이를 경로로 하는 motion path를 적용하였다. 실제 대부분의 행성은 거의 원에 가까운 궤도를 그리며 공전하지만 정밀한 시뮬레이션을 위해 타원의 궤적을 구현하였다.
모델링의 대상은 행성의 상대적 크기, 위치, 지표면 형태 및 공전, 자전 주기와 같은 움직임에 대한 정보 등이다. 먼저 행성의 움직임을 맞추기 위하여 모션 패스(motion path)를 이용하여 기본적인 행성의 움직임을 표현하였고, 파이선 스크립트로 정확한 주기와 공전 주기의 정보를 입력 하였다.
모션 패스를 적용하는 경우 시작과 끝의 시간을 설정할 수 있으므로 모션 패스 명령어인 pathAnimation( ) 함수의 stu(startTimeU) 및 etu(endYimeU) 플래그를 제어하여 행성의 공전주기를 설정하였다. 모션 패스는 편리한 애니메이팅 도구이지만 한 주기 이상의 애니메이션을 위해서는 경로로 지정된 개체의 키를 선택하고 setInifinity( ) 함수를 이용하여 키값을 cycle로 지정해야 한다.
본 논문에서는 마야를 이용하여 태양계의 행성 시스템을 물리적으로 정밀하게 구현하였다. 메뉴를 이용한 기존의 마야 모델링 기법과 파이선 스크립팅을 동시에 활용하여 각 행성의 실제 물리적인 데이터들을 정확하게 나타냄으로써 마야 애니메이션으로 정확하게 표현해 내지 못하던 부분까지 정확하게 나타낼 수 있었다.
본 논문에서는 아래 표 1의 정보 값에 따라 태양을 포함하여 총 8개의 행성으로 실험을 진행하였다[11]. 태양을 기준으로 각 행성마다 공전 궤도 및 행성의 크기를 상대적으로 설정하였다.
가장 중요한 몇몇 태양계 각 행성의 객관적 정보를 표 1에 보였다. 이 외에도 자전속도, 이심률(eccentricity) 등의 객관적 정보를 이용하였다. 명왕성의 태양계 행성으로 인정 여부는 아직 논란이 있으며 2006년 이후 현재 행성에서 제외되어 왜행성으로 분류되어 있으므로 제외하였다.
태양계를 시뮬레이션하기 위해 객관적인 물리 데이터를 이용하여 행성을 모델링한다. 기존의 메뉴를 이용한 모델링 방식으로는 각 물리량을 정밀하게 맞추기 힘들므로 파이선을 이용하여 프로그램하였다.
태양계의 행성 중 목성형 행성인 목성, 토성, 천왕성, 해왕성에는 고리(ring system)가 존재하지만 본 논문에서는 일반적으로 가장 잘 알려진 토성과 천왕성의 고리만을 구현하였다. 그림 7에 토성과 천왕성의 ring system을 모델링한 결과를 보였다.
본 논문에서는 아래 표 1의 정보 값에 따라 태양을 포함하여 총 8개의 행성으로 실험을 진행하였다[11]. 태양을 기준으로 각 행성마다 공전 궤도 및 행성의 크기를 상대적으로 설정하였다.
Planet 클래스의 개체인 각 행성을 생성한 다음 Planet 클래스에 구현한 메소드 generate( )를 이용하여 행성을 생성하였다. 행성 생성 시 고리가 있으면 polyPipe( ) 함수를 이용하여 고리 형태를 만들고 polyUnite( ) 함수로 결합시켰다. 그림 5에 생성한 태양계 모델링을 보였다.
일반적으로 CVs 커브 툴을 이용하여 수작업으로 그린 궤적을 모션 패스로 설정하고 운동 궤적에 객체를 할당 하면 객체는 일정 속도로 경로를 따라 이동한다. 행성의 움직임은 케플러 제1법칙에 의해 완벽한 원이 아니라 태양을 중심으로 하는 타원궤도이므로 본 논문에서는 원일점과 근일점을 이용하여 파이선 스크립팅으로 생성시켰다. 행성의 속도는 케플러 제2법칙인 면적 속도 일정의 법칙에 따라 다음 식으로 구한다[8].
태양계를 모델링하기 위해 본 논문에서는 마야 툴을 활용하였다. 행성의 움직임을 정교하게 나타내기 위해 그래프 편집기, 모션 패스 등 마야에서 활용 가능한 다양한 툴뿐만 아니라 스크립트 프로그래밍 언어인 파이선을 사용하였다.
대상 데이터
본 논문에서는 이러한 마야의 특성을 활용하여 실제 태양계를 최대한 사실적으로 모델링하고 이를 애니메이션을 이용 하여 시각화함으로써 태양계에 대한 이해를 도울 수 있는 시뮬레이터를 제안한다. 모델링의 대상은 행성의 상대적 크기, 위치, 지표면 형태 및 공전, 자전 주기와 같은 움직임에 대한 정보 등이다. 먼저 행성의 움직임을 맞추기 위하여 모션 패스(motion path)를 이용하여 기본적인 행성의 움직임을 표현하였고, 파이선 스크립트로 정확한 주기와 공전 주기의 정보를 입력 하였다.
이론/모형
태양계를 모델링하기 위해 본 논문에서는 마야 툴을 활용하였다. 행성의 움직임을 정교하게 나타내기 위해 그래프 편집기, 모션 패스 등 마야에서 활용 가능한 다양한 툴뿐만 아니라 스크립트 프로그래밍 언어인 파이선을 사용하였다.
행성의 움직임은 케플러 제1법칙에 의해 완벽한 원이 아니라 태양을 중심으로 하는 타원궤도이므로 본 논문에서는 원일점과 근일점을 이용하여 파이선 스크립팅으로 생성시켰다. 행성의 속도는 케플러 제2법칙인 면적 속도 일정의 법칙에 따라 다음 식으로 구한다[8].
성능/효과
본 논문에서는 마야를 이용하여 태양계의 행성 시스템을 물리적으로 정밀하게 구현하였다. 메뉴를 이용한 기존의 마야 모델링 기법과 파이선 스크립팅을 동시에 활용하여 각 행성의 실제 물리적인 데이터들을 정확하게 나타냄으로써 마야 애니메이션으로 정확하게 표현해 내지 못하던 부분까지 정확하게 나타낼 수 있었다.
본 논문을 통해 모델링과 애니메이션에서 마야의 GUI 기반의 방식과 파이선 스크립팅을 병행하여 사용하는 것이 매우 효과적이라는 것을 알 수 있었다. 메뉴를 이용한 기존 모델링 방식은 직관적이고 쉽게 접근할 수 있지만 사용자의 수작업 기술이나 정성적인 드로잉 능력에 따라 결과물이 달라진다는 단점이 있다.
본 논문의 시뮬레이터는 메뉴를 이용한 마야 애니메이션으로 정확하게 나타내지 못했던 행성의 물리적인 특성을 파이선을 이용하여 정밀하고 정확하게 표현함으로써 마야가 가진 고유한 기능인 모델링 강점을 살리면서도 물리적으로 정확한 시뮬레이션을 할 수 있음을 보였다.
후속연구
본 연구를 통해 마야 애니메이션의 생산성이나 효율성을 제고하기 위해서는 스크립팅을 더욱 적극적으로 활용해야 함을 알 수 있다. 또한 추후 파이선 스크립터를 활용한 효율적인 제작 기법에 심도 깊은 연구가 진행 되어야 할 것이다.
본 연구를 통해 마야 애니메이션의 생산성이나 효율성을 제고하기 위해서는 스크립팅을 더욱 적극적으로 활용해야 함을 알 수 있다. 또한 추후 파이선 스크립터를 활용한 효율적인 제작 기법에 심도 깊은 연구가 진행 되어야 할 것이다.
질의응답
핵심어
질문
논문에서 추출한 답변
마야와 파이선의 연결은 어떤 형태로 구현되는가?
파이선은 범용 프로그래밍 언어로서 다양한 플랫폼을 지원하며 라이브러리가 풍부하여 다양한 분야에서 활용되고 있다. 마야와 파이선의 연결은 실제 MEL 스크립트 명령어를 파이선용으로 랩핑(wrapping)한 형태로 구현되어 있으며 마야 환경에서도 파이선의 풍부한 다른 라이브러리를 불러 쓸 수 있으므로 애니메이션의 표현력과 개별 캐릭터의 기능은 더욱 넓어졌다[3].
파이선이란 무엇인가?
파이선은 컴퓨터 그래픽 사용자들이 가장 관심을 갖는 스크립트 언어이다. 마야에는 기본적으로 지원되는 MEL스크립트가 있었음에도 불구하고 파이선이 스크립트 언어로 내포된 이유는 사용자가 컴파일을 하지 않고 바로 실행할 수 있으며 한 줄 단위로 실행되어서 사용자가 쉽게 결과를 확인할 수 있다는 것뿐만 아니라 파이선에서는 다양한 라이브러리를 사용 가능하다는 점 때문이다[5].
행성의 자연 스러운 움직임을 구현하기 위해 Rotation 속성 보다 Graph Editor을 사용한 이유는 무엇인가?
일반적으로 행성을 움직이고자 할 때 기본적으로 사용되는 키(key)는 Rotation 속성이지만 보다 자연스럽게 행성을 움직이기 위해서는 그림 2와 같은 Graph Editor를 이용한다. 특히 Rotation 속성으로는 대부분 타원형인 행성의 공전 궤적을 제어하기 힘들다. Graph Editor는 움직임에 감속 진입과 감속 진출의 원리를 적용함과 동시에 체공 시간을 늘리는 비교적 정밀한 시간 조절이 가능하다. 따라서 Graph editor를 사용하여 행성의 속도를 자유자재로 조절이 가능하며 자연스럽게 행성을 움직일 수 있다[1].
참고문헌 (13)
Eun-young Choi, Jun-Sang Lee, Imgeun Lee, "Simulating Solar System using MAYA Scripting". ICFICE, pp.149-152, 2014.
Kim Hyun-Woo, Song Teuk-Seob, "A study of effect representation method for 3D contents development using maya system", Korea Computer Congress 2008, Vol.35, pp. 176-180, 2008.
Eun-young Choi, Soojong Lee, Imgeun Lee, "Extracting Motion Information for Animation Character using Kinect Sensor" Proceedings of KSCI Conference, Vol. 21, No. 2, pp. 289-290, July, 2013.
Yongwhan Lee, Changhoon Kang, Jinseob Shin, "A Study on the video production reflecting the characteristic of 3D stereoscopic", Proceedings of KSCI Conference, Vol.21,No 2, pp. 303-306, July, 2013.
Adam Mechtley, Ryan Trowbridge, "Maya Python for games and film : a complete reference for the Maya Python and the Maya Python API", Morgan Kaufmann, pp. 20-88, 2012.
Han dong-il, "Maya Python technique", Vielbooks, pp. 224-355, 2013.
David A. D. Gould, "Complete Maya Programming An Extensive Guide to MEL and C++ API", Morgan Kaufmann, 2003.
David P. Stern, Kepler and His Laws, http://www.phy6.org/stargaze/Skeplaws.htm
Dariush Derakhshani, "Introducing Autodesk Maya 2015", pp. 14-38, 2014.
※ AI-Helper는 부적절한 답변을 할 수 있습니다.