¼³Ä¡
ÇÁ·Î±×·¥À¸·Î ¹èÆ÷µÇ´Â XDL ¿£ÁøÀº Visual Studio
2010 x86 Release ¹öÀüÀ¸·Î, Visual Studio 2010 ÀÌ»óÀÇ ¹öÀü¿¡¼
»ç¿ë °¡´ÉÇÏ´Ù.
¾Æ·¡ÀÇ ¼³¸íÀº Visual Studio 2010ÀÇ Debug¸¦ ±âÁØÀ¸·Î ÇϰڴÙ.
2
NXPlanetView¸¦ ÀÌ¿ëÇÑ ¿¹Á¦ ÇÁ·Î±×·¥ ¸¸µé±â
l º» ¿¹Á¦ ÇÁ·Î±×·¥Àº Pixoneer.NXDL.NNCWÀÇ XncwObserver,
XncwTheater¸¦ ÀÌ¿ëÇÏ¿© NCW ½Ã¹Ä·¹À̼ÇÀ» À§ÇÑ È¯°æÀ» ±¸¼ºÇϰí, Pixoneer.NXDL.NEQUIPÀÇ XAircraft Ŭ·¡½º¸¦
ÀÌ¿ëÇÏ¿© ½Ã¹Ä·¹ÀÌ¼Ç ´ë»óÀ» NCW(Network Centric Warfare) ȯ°æ¿¡ Ãß°¡Çغ¸µµ·Ï
ÇÑ´Ù.
l 3D
¸ðµ¨°ú ½Ã¹Ä·¹À̼ÇÀ» À§ÇÑ µ¥ÀÌÅÍ ÆÄÀÏÀ» ÀÌ¿ëÇØ XAircraft¸¦ Ãß°¡ÇÏ¿© 2D/3D Planet View¿¡¼ µµ½ÃÇϰí, 2D PlanetView¿¡¼
¸¶¿ì½º ´õºíŬ¸¯À¸·Î XAircraft¸¦ ¼±ÅÃÇÏ¸é ½Ã¹Ä·¹ÀÌ¼Ç ºñÇàüÀÇ µµ½Ã ¼Ó¼º ¹× Ä«¸Þ¶ó ¸ðµå¸¦
¼³Á¤ÇÏ¿© ½Ã¹Ä·¹ÀÌ¼Ç °üÃø ¸ðµå¸¦ º¯°æÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù.
2.1.1
Visual Studio 2010À» ÀÌ¿ëÇÏ¿© ¿¹Á¦ ¡°XDL_PlanetView2¡±ÀÇ ¡°±âº» ÇÁ·Î±×·¥ ÀÛ¼º¡± ¹æ¹ýÀ» Âü°í·Î ±âº» ÇÁ·ÎÁ§Æ®¸¦ »ý¼ºÇÑ´Ù.
ÇÁ·ÎÁ§Æ®
À̸§Àº ¡°XDL_PlanetView4¡±·Î ÇÑ´Ù.
2.1.2
Pixoneer.NXDL.NNCW ¿Í
Pixoneer.NXDL.NEQUIPÀ» ÀÌ¿ëÇϱâ À§Çؼ ¡°NXDLncw.dll¡±À» ÇÁ·ÎÁ§Æ®ÀÇ
ÂüÁ¶·Î Ãß°¡ÇÑ´Ù.
2.1.3
Pixoneer.NXDL.NEQUIP.XAircraft °´Ã¼¸¦ ´Ù·ç±â À§ÇØ
½ÇÇàÆú´õ¿¡ ModelDrivers Æú´õ¸¦ º¹»çÇØ¼ ³Ö´Â´Ù.
º»
¿¹Á¦ ÇÁ·Î±×·¥Àº NCWÀÇ ½Ã¹Ä·¹ÀÌ¼Ç ´ë»óÀÌ µÇ´Â XAircraft¸¦
ÀÌ¿ëÇÑ´Ù. XAircraft´Â 3D ¸ðµ¨ ÆÄÀÏÀ» ·ÎµùÇÏ¿©
ȸ鿡 µµ½ÃÇÑ´Ù. À̸¦ À§ÇØ ModelDrivers Æú´õ¸¦
½ÇÇàÆú´õ¿¡ º¹»çÇØ ÁÖ¾î¾ß ÇÑ´Ù.
XDL ¶óÀ̺귯¸®°¡ ¼³Ä¡µÈ °æ·Î(c:\Pixoneer\XDL1.2\bin)·Î
À̵¿ÇÏ¿© ¡°ModelDrivers¡± Æú´õ¸¦ º¹»çÇÏ¿© º» ¿¹Á¦ ÇÁ·Î±×·¥ÀÇ ½ÇÇà Æú´õ(.\XDL_PlanetView4\bin\Debug\)¿¡ º¹»çÇÏ¿© ³Ö´Â´Ù.


¹øÈ£
|
Name
|
Control type
|
ºñ°í
|
¨ç
|
menuStrip1
|
MenuStrip
|
|
¨è
|
splitContainter1
|
SplitContainer
|
|
¨é
|
nxPlanetView2D
|
NXPlanetView
|
EarthMode :
Planet2D
|
¨ê
|
nxPlanetView3D
|
NXPlanetView
|
EarthMode :
Planet3D
|
2.2.1
[µµ±¸ »óÀÚ]ÀÇ ¡°MenuStrip¡±¸¦ ¼±ÅÃÇϰí Form1¿¡ ²ø¾î´Ù°¡ ³õ´Â´Ù.
º»
¿¹Á¦ ÇÁ·Î±×·¥ÀÇ MenuStrip ±¸¼ºÀº ¾Æ·¡¿Í °°´Ù.

Name
|
Text
|
±â´É ¼³¸í
|
addModelToolStripMenuItem
|
Add
|
XAircraft °´Ã¼ Ãß°¡
|
2.2.2
½Ã¹Ä·¹ÀÌ¼Ç ´ë»óÀÎ ºñÇàü¸¦ Ãß°¡ÇÏ´Â FormÀ» ¼Ö·ç¼Ç¿¡ Ãß°¡ÇÏ°í µðÀÚÀÎÇÑ´Ù.
»õ·Î¿î
FormÀ» Ãß°¡ÇÏ·Á¸é, Visual StudioÀÇ ¸Þ´º
[ÇÁ·ÎÁ§Æ®]-[Windows Form Ãß°¡]¸¦ ¼±ÅÃÇϰųª, [¼Ö·ç¼Ç Ž»ö±â]¿¡¼
ÇÁ·ÎÁ§Æ®¸¦ ¼±ÅÃÇÑ ÈÄ ¸¶¿ì½º ¿À¸¥ÂÊ ¹öưÀ» Ŭ¸¯ÇÏ¿© »ý¼ºµÇ´Â ¸Þ´º¿¡¼ [Ãß°¡]-[Windows Form]À» ¼±ÅÃÇÑ´Ù.

ºñÇàü Ãß°¡¸¦ À§ÇÑ FormÀÇ À̸§Àº ¡°AddPlaneForm.cs¡±·Î ÇÑ´Ù.

AddPlaneFormÀÇ µðÀÚÀÎÀº ¾Æ·¡¿Í °°´Ù.

¹øÈ£
|
Name
|
Control type
|
ºñ°í
|
¨ç
|
textBoxID
|
TextBox
|
|
¨è
|
textBoxName
|
TextBox
|
|
¨é
|
textBoxPathModel
|
TextBox
|
|
¨ê
|
buttonLoadModel
|
Button
|
|
¨ë
|
textBoxPathData
|
TextBox
|
|
¨ì
|
buttonLoadData
|
Button
|
|
¨í
|
buttonOK
|
Button
|
DialogResult
: OK
|
¨î
|
buttonCancel
|
Button
|
DialogResult
: Cancel
|
buttonOK¿Í buttonCancelÀº FormÀÇ DialogResult¸¦ °¢°¢ OK¿Í Cancel·Î ¼³Á¤ÇÑ´Ù.

2.2.3
ºñÇàüÀÇ µµ½Ã ¼Ó¼º ¹× Ä«¸Þ¶ó ¸ðµå¸¦ ¼³Á¤ÇÏ´Â FormÀ» ¼Ö·ç¼Ç¿¡ Ãß°¡Çϰí
µðÀÚÀÎÇÑ´Ù.
XDL_PlanetView4¿¡ ¡°PlaneProperty.cs¡±¶ó´Â
ÆÄÀÏÀ̸§À¸·Î Windows FormÀ» Ãß°¡ÇÑ´Ù.
PlaneProperty FormÀÇ µðÀÚÀÎÀº ¾Æ·¡¿Í °°´Ù.

¹øÈ£
|
Name
|
Control type
|
ºñ°í
|
¨ç
|
textBoxID
|
TextBox
|
ReadOnly :
True
|
¨è
|
textBoxName
|
TextBox
|
|
¨é
|
textBoxScaleX
|
TextBox
|
|
¨ê
|
textBoxScaleY
|
TextBox
|
|
¨ë
|
textBoxScaleZ
|
TextBox
|
|
¨ì
|
checkBoxScalable
|
CheckBox
|
|
¨í
|
comboBoxCameraMode
|
ComboBox
|
|
¨î
|
checkBoxShowBoundingBox
|
CheckBox
|
|
¨ï
|
buttonOK
|
Button
|
DialogResult
: OK
|
¨ð
|
buttonCancel
|
Button
|
DialogResult
: Cancel
|
comboBoxCameraMode´Â
Pixoneer.NXDL.NNCW.XncwObserver.eViewMode¸¦ ¼±ÅÃÇÒ ¼ö ÀÖµµ·Ï Ç׸ñÀ» ÆíÁýÇÑ´Ù. Ç׸ñÀ¸·Î´Â ¼ø¼´ë·Î ¡°Back View¡±, ¡°Front View¡±,
¡°Left View¡±, ¡°Right View¡±, ¡°God¡¯s eye View¡±, ¡°God¡¯s eye View Static¡±, ¡°Bottom
View¡±, ¡°Bottom View Static¡±, ¡°Inside View¡±, ¡°Inside View free¡±, ¡°Far View¡±,
¡°Unusable¡±À» Ãß°¡Çϵµ·Ï ÇÑ´Ù.

2.3.1
Form1¿¡ NCW¸¦ À§ÇÑ º¯¼ö¸¦
Ãß°¡Çϰí Form1ÀÇ »ý¼ºÀÚ¿¡¼ ÃʱâÈÇÑ´Ù.
NCW ȯ°æÀ» À§ÇÑ ·¹À̾î´Â Pixoneer.NXDL.NNCW.XncwTheater
xncwTheater º¯¼ö·Î Çϰí, Planet 2D¿Í 3D¿¡¼ ½Ã¹Ä·¹ÀÌ¼Ç Áֽø¦ À§ÇÑ ·¹À̾î´Â °¢°¢ Pixoneer.NXDL.NNCW.XncwObserverÀÇ
xncwObserver2D, xncwObserver3D·Î ÇϰڴÙ.
ÄÚµå´Â ¾Æ·¡¿Í °°´Ù.

2.3.2
Form1À» ¼±ÅÃÇϰí Form1À»
¼±ÅÃÇϰí [¼Ó¼º] â
- [À̺¥Æ® ] ¸Þ´º¸¦ ¼±ÅÃÇÑ µÚ ¡°Load¡± À̺¥Æ®¿Í ¡°Closed¡± À̺¥Æ®¸¦ ´õºí Ŭ¸¯ÇÑ´Ù.
Form1_Load ÇÔ¼ö¿¡´Â
xncwTheater¿Í xncwObserver2D,
xncwObserver3D¸¦ nxPlanetView2D¿Í nxPlanetView3D¿¡ Ãß°¡ÇÏ°í °¢ viewÀÇ Ä«¸Þ¶ó ÃʱⰪÀ»
¼³Á¤ÇÑ´Ù.

2.3.3
½Ã¹Ä·¹ÀÌ¼Ç ´ë»óÀÎ ¸ðµ¨À» ±¸ÇöÇϱâ À§Çؼ ÇÁ·ÎÁ§Æ®¿¡ »õ·Î¿î Ŭ·¡½º¸¦ Ãß°¡ÇÑ´Ù.
½Ã¹Ä·¹À̼Ç
´ë»óÀÇ ¸ðµ¨Àº MyPlaneÀ¸·Î Çϰí À̸¦ ÇÁ·ÎÁ§Æ®¿¡ Ãß°¡ÇÑ´Ù.
Visual Studio 2010ÀÇ ¸Þ´º [ÇÁ·ÎÁ§Æ®]-[»õ
Ç׸ñ Ãß°¡] ¶Ç´Â [¼Ö·ç¼Ç Ž»ö±â]¿¡¼ ¡°XDL_PlanetView4¡± ÇÁ·ÎÁ§Æ®¸¦ ¼±ÅÃÇÑ ÈÄ ¸¶¿ì½º
¿À¸¥ÂÊ ¹öưÀ» Ŭ¸¯ÇÏ¿© »ý±â´Â ¸Þ´º Áß [Ãß°¡]-[»õ
Ç׸ñ]À» ¼±ÅÃÇÑ´Ù.
¡°»õ Ç׸ñ Ãß°¡¡± ´ëÈ»óÀÚ¿¡¼ ¡°Å¬·¡½º¡±¸¦ ¼±ÅÃÇÑ ÈÄ À̸§À» ¡°MyPlane.cs¡±·Î ÇÏ°í ¡°Ãß°¡¡± ¹öưÀ» Ŭ¸¯ÇÑ´Ù.

2.3.4
Pixoneer.NXDL.NEQUIPT.XAircraft¸¦ »ó¼Ó¹ÞÀº MyPlane Ŭ·¡½º¸¦ ±¸ÇöÇÑ´Ù.
MyPlaneÀº ½Ã¹Ä·¹À̼ÇÀ» À§ÇÑ ¸ðµ¨ÆÄÀÏÀ» ·ÎµùÇÏ¿© ÆÄÀÏ¿¡ ÀúÀåµÇ¾î ÀÖ´Â ½Ã¹Ä·¹ÀÌ¼Ç µ¥ÀÌÅ͸¦ 100 milli second¸¶´Ù Àоî À§Ä¡¿Í ÀÚ¼¼¸¦ ¼³Á¤Çϵµ·Ï ÇÑ´Ù. À̸¦
À§Çؼ System.Threading °ü·Ã ±â´É°ú System.IO
°ü·Ã ±â´ÉÀ» »ç¿ëÇÑ´Ù.
MyPlane Ŭ·¡½º ±¸ÇöÀº ¾Æ·¡¿Í °°´Ù.

ÀÌ¾î¼ ´ÙÀ½ Äڵ带 Ãß°¡ÇÑ´Ù.
![// ½Ã¹Ä·¹ÀÌ¼Ç ±â´É ¹× µ¥ÀÌÅ͸¦ ÇØÁ¦ÇÏ´Â ÇÔ¼ö
public void Uninitialize()
{
// ¾²·¹µå°¡ ÀÖ´Â °æ¿ì À̸¦ ÇØÁ¦
if (modelThread != null)
{
runThread = false;
if (modelThread.IsAlive)
modelThread.Join();
modelThread = null;
}
// ½Ã¹Ä·¹ÀÌ¼Ç µ¥ÀÌÅͰ¡ ÀÖ´Â °æ¿ì À̸¦ ÇØÁ¦
if (modelFileData != null) modelFileData.Close();
}
// ½Ã¹Ä·¹ÀÌ¼Ç ÇÔ¼ö
public void SimulationThread()
{
// ½Ã¹Ä·¹ÀÌ¼Ç µ¥ÀÌÅͰ¡ ¾ø´Â °æ¿ì ÁøÇàÇÏÁö ¾Ê´Â´Ù.
if (modelFileData == null) return;
// ½Ã¹Ä·¹ÀÌ¼Ç ½ÇÇà ¿©ºÎ¸¦ ½ÇÇàÇÏ´Â °ÍÀ¸·Î ¼³Á¤
runThread = true;
// ½Ã¹Ä·¹ÀÌ¼Ç ´ÜÀ§ µ¥ÀÌÅÍ Å©±â ¼³Á¤
int frameDataSize = 14/* ½Ã¹Ä·¹ÀÌ¼Ç ´ÜÀ§¸¦ ÀÌ·ç´Â Ç׸ñ °³¼ö */ * 4 /*float µ¥ÀÌÅÍ Å©±â */;
// Àüü ÆÄÀÏ Å©±â¸¦ ½Ã¹Ä·¹ÀÌ¼Ç ´ÜÀ§ µ¥ÀÌÅÍ Å©±â·Î ³ª´©¾î
// Àüü ½Ã¹Ä·¹ÀÌ¼Ç ´ÜÀ§ °³¼ö °è»ê
long dataSize = modelFileData.Length / frameDataSize;
// ½Ã¹Ä·¹ÀÌ¼Ç ´ÜÀ§¸¦ Àбâ À§ÇÑ buffer »ý¼º
byte[] buff = new byte[frameDataSize];
while (runThread)
{
int idx = 0, count = 0;
// ½Ã¹Ä·¹ÀÌ¼Ç µ¥ÀÌÅÍ ÆÄÀÏÀÇ Ã³À½À¸·Î À̵¿
modelFileData.Seek(0, SeekOrigin.Begin);
do
{
if (!runThread) break;
// ½Ã¹Ä·¹ÀÌ¼Ç µ¥ÀÌÅÍ ÆÄÀÏ¿¡¼ ½Ã¹Ä·¹ÀÌ¼Ç ´ÜÀ§ µ¥ÀÌÅÍ Àбâ
count = modelFileData.Read(buff, 0, frameDataSize);
// ½Ã¹Ä·¹ÀÌ¼Ç ´ÜÀ§ µ¥ÀÌÅÍ¿¡¼ ¼Óµµ °¡Á®¿À±â
double speed = BitConverter.ToSingle(buff, 0);
// ½Ã¹Ä·¹ÀÌ¼Ç ´ÜÀ§ µ¥ÀÌÅÍ¿¡¼ À§Ä¡ÀÇ À§µµ °¡Á®¿À±â
double lat = BitConverter.ToSingle(buff, 4);
// ½Ã¹Ä·¹ÀÌ¼Ç ´ÜÀ§ µ¥ÀÌÅÍ¿¡¼ À§Ä¡ÀÇ °æµµ °¡Á®¿À±â
double lon = BitConverter.ToSingle(buff, 8);
// ½Ã¹Ä·¹ÀÌ¼Ç ´ÜÀ§ µ¥ÀÌÅÍ¿¡¼ À§Ä¡ÀÇ ³ôÀÌ °¡Á®¿À±â
double alt = BitConverter.ToSingle(buff, 12);
// ½Ã¹Ä·¹ÀÌ¼Ç ´ÜÀ§ µ¥ÀÌÅÍ¿¡¼ ÀÚ¼¼ÀÇ yaw °¡Á®¿À±â
double yaw = BitConverter.ToSingle(buff, 16);
// ½Ã¹Ä·¹ÀÌ¼Ç ´ÜÀ§ µ¥ÀÌÅÍ¿¡¼ ÀÚ¼¼ÀÇ roll °¡Á®¿À±â
double roll = BitConverter.ToSingle(buff, 20);
// ½Ã¹Ä·¹ÀÌ¼Ç ´ÜÀ§ µ¥ÀÌÅÍ¿¡¼ ÀÚ¼¼ÀÇ pitch °¡Á®¿À±â
double pitch = BitConverter.ToSingle(buff, 24);
XGeoPoint geoPos = new XGeoPoint();
geoPos.lond = lon;
geoPos.latd = lat;
geoPos.hgt = alt;
// ¸ðµ¨ÀÇ À§Ä¡ ¼³Á¤
SetPosition(geoPos);
// ¸ðµ¨ÀÇ ÀÚ¼¼ ¼³Á¤
SetYawPitchRoll(XAngle.FromDegree(yaw),
XAngle.FromDegree(pitch), XAngle.FromDegree(roll));
// 100 milli second µ¿¾È ½Ã¹Ä·¹À̼ÇÀ» ½®´Ù.
Thread.Sleep(100);
idx++;
}
// Thread Á¾·á Á¶°ÇÀ» °Ë»çÇÔ
while ((count == frameDataSize) && (idx < dataSize));
Thread.Sleep(100);
}
}
// ½Ã¹Ä·¹À̼ÇÀ» ½ÃÀÛÇÏ´Â ÇÔ¼ö
public void Start()
{
// ÀÌ¹Ì thread°¡ ½ÇÇàµÈ »óÅÂÀÌ¸é ¸®ÅÏ
if (modelThread != null) return;
// SimulationThread ÇÔ¼ö¸¦ ÀÌ¿ëÇÑ thread »ý¼º
modelThread = new Thread(SimulationThread);
// Thread ½ÃÀÛ
modelThread.Start();
}
}
}](XDL_PlanetView4.files/image015.png)
2.3.5
Form1ÀÇ ¸Þ´º [Model]-[Add]¸¦
Ŭ¸¯ÇÏ¿© MyPlaneÀ» Ãß°¡Çϱâ À§ÇÑ AddPlaneForm Ŭ·¡½º¸¦
±¸ÇöÇÑ´Ù. AddPlaneFormÀ» ¡°µðÀÚÀÌ³Ê º¸±â¡±¸¦ ¿¾î¼ buttonLoadModel°ú buttonLoadData ¹öưÀ» ´õºí Ŭ¸¯ÇÑ´Ù. ¶ÇÇÑ buttonOK ¹öưµµ ´õºí Ŭ¸¯ÇÏ¿© À̺¥Æ® ÇÔ¼ö¸¦ Ãß°¡ÇÑ´Ù.
AddPlaneForm Ŭ·¡½º¸¦ ÅëÇØ MyPlane »ý¼ºÀ» À§ÇÑ
¸ðµ¨ ÆÄÀÏ °æ·Î, ½Ã¹Ä·¹ÀÌ¼Ç µ¥ÀÌÅÍ °æ·Î, ¸ðµ¨ À̸§°ú
¸ðµ¨ ID¸¦ ÀÔ·ÂÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù.
AddPlaneForm Ŭ·¡½º ±¸ÇöÀº ¾Æ·¡¿Í °°´Ù.

2.3.6
NCW ȯ°æ¿¡ Ãß°¡ÇÏ´Â Model¸¦
°ü¸®Çϱâ À§ÇØ List °´Ã¼¸¦ Ãß°¡ÇÑ´Ù.
List<MyPlane> ÇüÀÇ º¯¼ö¸¦ Ãß°¡ÇÑ´Ù.

2.3.7
MyModel Ŭ·¡½º°¡ ½Ã¹Ä·¹À̼ÇÀ» ½ÃÀÛÇϸé 100 milli seconds¸¶´Ù °»½ÅµÇ´Â À§Ä¡¿Í ÀÚ¼¼¿¡ ´ëÇØ ȸ鿡 °»½ÅÇÏ¿© µµ½ÃÇÒ ¼ö ÀÖµµ·Ï thread º¯¼ö¸¦ Ãß°¡ÇÑ´Ù.

2.3.8
NCW ȯ°æ¿¡ Ãß°¡ÇÏ´Â Model¸¦
°ü¸®Çϱâ À§ÇØ List °´Ã¼¸¦ Ãß°¡ÇÑ´Ù.
List<MyPlane> ÇüÀÇ º¯¼ö¸¦ Ãß°¡ÇÑ´Ù.

2.3.9
menuStrip1ÀÇ addModelToolStripMenuItem
¸Þ´º¸¦ ´õºí Ŭ¸¯ÇÏ¿© À̺¥Æ®ÇÔ¼ö¸¦ Ãß°¡ÇÑ´Ù.
[Model]-[Add] ¸Þ´º¸¦ ¼±ÅÃÇØ¼ NCW ȯ°æ¿¡ MyPlane ¸ðµ¨À» Ãß°¡ÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù.

2.3.10
Form1ÀÌ ´ÝÇôÁú ¶§ È¸é °»½ÅÀ» À§ÇÑ thread¿Í MyPlaneÀ» ÇØÁ¦ÇÑ´Ù. À̸¦ À§ÇØ Form1¿¡ ¡°Closing¡±
À̺¥Æ®¸¦ Ãß°¡ÇÑ´Ù.

2.3.11
¼Ö·ç¼ÇÀ» ºôµåÇÏ°í ½ÇÇàÇÑ´Ù.
¼Ö·ç¼ÇÀ» ½ÇÇàÇÏ¿© ¸Þ´º [Model]-[Add]¸¦ Ŭ¸¯ÇÑ´Ù.

½Ã¹Ä·¹ÀÌ¼Ç ¸ðµ¨À» Ãß°¡Çϱâ À§Çؼ
¸ðµ¨ ÆÄÀϰú ½Ã¹Ä·¹ÀÌ¼Ç ÆÄÀÏÀ» ¼³Á¤ÇÑ´Ù. µÎ °³ÀÇ ÆÄÀÏÀº ȨÆäÀÌÁö¿¡ ¿¹Á¦ ÆÄÀϰú ÇÔ²² ÀÖ´Â »ùÇõ¥ÀÌÅ͸¦
ÀÌ¿ëÇÏ±æ ¹Ù¶õ´Ù.
AddPlaneForm¿¡¼ buttonLoadModel ¹öưÀ» Ŭ¸¯Çؼ
¡°uav0216.3DS¡± ÆÄÀÏÀ» ¼±ÅÃÇϰí, buttonLoadData
¹öưÀ» Ŭ¸¯Çؼ ¡°FlightData1.dat¡± ÆÄÀÏÀ» ¼±ÅÃÇÑ´Ù.

ID¿Í Name ¼Ó¼ºµµ ¼³Á¤ÇÏ°í ¡°OK¡±
¹öưÀ» Ŭ¸¯ÇÑ´Ù. »õ·Î¿î ¸ðµ¨ÀÌ Ãß°¡µÇ¸é nxPlanetView2D¿Í
nxPlanetView3D¿¡ ¸ðµ¨ÀÌ Ãß°¡µÇ¾î ȸ鿡 µµ½ÃµÇ°í 100
milli seconds¸¶´Ù ºñÇàüÀÇ À§Ä¡¿Í ÀÚ¼¼°¡ º¯ÈµÇ´Â °ÍÀ» È®ÀÎÇÒ ¼ö ÀÖ´Ù.

2.3.12
nxPlanetView2D¿¡¼ ½Ã¹Ä·¹ÀÌ¼Ç ¸ðµ¨À» ¸¶¿ì½º ´õºí Ŭ¸¯Çϸé ÇØ´ç
¸ðµ¨ÀÇ µµ½Ã ¼Ó¼º ¹× camera ¸ðµå¸¦ ¼³Á¤ÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù.
À̸¦ À§ÇØ nxPlanetView2D¿¡ NXPlanetLayer¸¦
Ãß°¡Çϰí xncwTheaterÀÇ PickÇÔ¼ö¿Í OnPicked À̺¥Æ®¸¦ ÀÌ¿ëÇÑ´Ù.
NXPlanetLayer Ŭ·¡½ºÀÇ nxPlanetLayer2D º¯¼ö¸¦
Ãß°¡Çϰí Form1ÀÇ Load ÇÔ¼ö¿¡¼ nxPlanetView2D¿¡ Ãß°¡Çϰí nxPlanetLayer2DÀÇ
OnWndProc À̺¥Æ® ÇÔ¼ö¿Í xncwTheaterÀÇ
OnPicked À̺¥Æ® ÇÔ¼ö¸¦ Form1 »ý¼ºÀÚ¿¡ Ãß°¡ÇÑ´Ù.
ÄÚµå´Â ¾Æ·¡¿Í °°´Ù.

2.3.13
MyPlane °´Ã¼ÀÇ µµ½Ã¼Ó¼º ¹× Ä«¸Þ¶ó ¸ðµå¸¦ ¼³Á¤ÇÏ´Â PlaneProperty Ŭ·¡½º¸¦ ±¸ÇöÇÏ´Ù. xncwTheaterÀÇ
Pick ÇÔ¼ö·Î ¼±ÅÃµÈ °´Ã¼°¡ returnµÇ¸é ÀÌ Å¬·¡½º¸¦
ÀÌ¿ëÇÏ¿© °´Ã¼ÀÇ ¼Ó¼ºÀ» º¯°æÇÑ´Ù.
PlaneProperty Form¿¡ Load À̺¥Æ®¿Í buttonOK ¹öư¿¡ Click À̺¥Æ® ÇÔ¼ö¸¦ Ãß°¡Çϰí Äڵ带
ÀÛ¼ºÇÑ´Ù. PlanePropertyÀÇ ±¸Çö ³»¿ëÀº ¾Æ·¡¿Í °°´Ù.
. 
2.3.14
xncwTheaterÀÇ OnPicked À̺¥Æ®
ÇÔ¼ö¸¦ Ãß°¡Çϰí PlaneProperty Ŭ·¡½º¸¦ ÀÌ¿ëÇÏ¿© ¸ðµ¨ÀÇ µµ½Ã¼Ó¼ºÀ» º¯°æÇÏ´Â Äڵ带 Ãß°¡ÇÑ´Ù.
xncwTheaterÀÇ OnPicked À̺¥Æ® ÇÔ¼ö´Â xncwTheater_OnPicked·Î ÇÑ´Ù.

2.3.15
nxPlanetView2D¿¡¼ ½Ã¹Ä·¹ÀÌ¼Ç ¸ðµ¨À» ¸¶¿ì½º ´õºí Ŭ¸¯Çϸé ÇØ´ç
¸ðµ¨ÀÇ µµ½Ã ¼Ó¼º ¹× camera ¸ðµå¸¦ ¼³Á¤ÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù.
À̸¦ À§ÇØ nxPlanetView2D¿¡ NXPlanetLayer¸¦
Ãß°¡Çϰí xncwTheaterÀÇ PickÇÔ¼ö¿Í OnPicked À̺¥Æ®¸¦ ÀÌ¿ëÇÑ´Ù.
NXPlanetLayer Ŭ·¡½ºÀÇ nxPlanetLayer2D º¯¼ö¸¦
Ãß°¡Çϰí Form1ÀÇ Load ÇÔ¼ö¿¡¼ nxPlanetView2D¿¡ Ãß°¡Çϰí nxPlanetLayer2DÀÇ
OnWndProc À̺¥Æ® ÇÔ¼ö¿Í xncwTheaterÀÇ
OnPicked À̺¥Æ® ÇÔ¼ö¸¦ Form1 »ý¼ºÀÚ¿¡ Ãß°¡ÇÑ´Ù.
ÄÚµå´Â ¾Æ·¡¿Í °°´Ù.

2.3.16
¼Ö·ç¼ÇÀ» ºôµåÇÏ°í ½ÇÇàÇÑ´Ù. ÇÁ·Î±×·¥¿¡¼ ºñÇàü¸¦ Ãß°¡ÇÑ µÚ nxPlanetView2D¿¡¼ ºñÇàü¸¦ ´õºí Ŭ¸¯ÇÑ´Ù. ºñÇàü°¡
¼±ÅõǸé PlaneProperty FormÀÌ »ý¼ºµÇ°í ÀÌ Form¿¡¼
CameraMode¸¦ ¡°Front View¡±¸¦ ¼±ÅÃÇϰí
OK ¹öưÀ» Ŭ¸¯ÇÑ´Ù.

|