рд╕реНрд╡рд╛рд░ рдПрд╕рдбреАрдХреЗ рдпрд╛ рдХреИрд╕реЗ рдЬрд▓реНрджреА рд╕реЗ рдПрдХ рдПрдЖрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП



рд╕рдВрд╡рд░реНрдзрд┐рдд рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рддреЗрдЬреА рд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реЛ рд░рд╣реЗ рд╣реИрдВред рдЬрд▓реНрджреА рдпрд╛ рдмрд╛рдж рдореЗрдВ, рд░реВрд╕ рдореЗрдВ рдХрд┐рд╕реА рдиреЗ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрд╕рдбреАрдХреЗ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рд╣реЛрдЧрд╛ред рдФрд░ рдЗрд╕рд▓рд┐рдП, рдРрд╕рд╛ рд╣реБрдЖ - рд░реВрд╕реА рдХрдВрдкрдиреА Sectar рдиреЗ .NET рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ Swarp SDK рдЙрддреНрдкрд╛рдж рдХреЛ рдЬрд╛рд░реА рдХрд┐рдпрд╛ред рдЗрд╕рдХреЗ рдмрд╛рдж, рдореИрдВ Swarp рдХрд╛ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ рдФрд░ рдЖрдкрдХреЛ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ рдХрд┐ рдХреИрд╕реЗ рдЬрд▓реНрджреА рдФрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдЕрдкрдирд╛ AR рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдПрдВред

рд╕рд┐рдВрд╣рд╛рд╡рд▓реЛрдХрди

рдЙрддреНрдкрд╛рдж рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж (рд▓реЗрдЦрди рдХреЗ рд╕рдордп, рд╕рдВрд╕реНрдХрд░рдг 1.0.249.925 рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИ), рдЖрдк 5 рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:


рдорд╛рд░реНрдХрд░

рд╕реНрд╡рд╛рд░ рдПрд╕рдбреАрдХреЗ рдПрдХ рдЕрдЬреАрдм рдорд╛рд░реНрдХрд░ рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдорд╛рд░реНрдХрд░ рдПрдХреНрд╕рдЯреНрд░реИрдХреНрдЯреЗрдмрд▓ рдХреЗ рд╕рд╛рде рдПрдХреНрд╕рдПрдордПрд▓ рдлрд╛рдЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдорд╛рдирдХ рдорд╛рд░реНрдХрд░реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреА рд╕рд╛рдордЧреНрд░реА рдиреАрдЪреЗ рджреА рдЧрдИ рд╣реИред

рдПрдХ рдорд╛рд░реНрдХрд░ рдХрд╛рдЧрдЬ рдкрд░ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:

рдФрд░ рдЗрд╕рдХреА рд╕рд╛рдордЧреНрд░реА .trackable рдлрд╝рд╛рдЗрд▓ рдореЗрдВ:
<?xml version="1.0" encoding="utf-8"?> <Trackable Type="Sectar Square Marker" Description="Marker with square detection element" Version="1.0" Company="Sectar"> <SquareMarker MarkerSize="500" FrameWidth="80" CellsCount="4" FrameMargin="15" CellMargin="5" CellsType="Circle"> <Code>111100010101</Code> </SquareMarker> </Trackable> 

рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рдорди рдореЗрдВ рдПрдХ рд╕рд╡рд╛рд▓ рд╣реЛрдЧрд╛: рдХрд┐рд╕реА .trackable рдлрд╝рд╛рдЗрд▓ рдХреЛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп .jpg рдпрд╛ .png рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХреИрд╕реЗ рдХрд░реЗрдВ? рдпрд╣ рд╕рд░рд▓ рд╣реИ: SquareMarkerCreator.exe рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдмрдЪрд╛рд╡ рдХреЗ рд▓рд┐рдП рдЖрддреА рд╣реИред

рдорд╛рд░реНрдХрд░ рдЙрдкрдпреЛрдЧрд┐рддрд╛ (SquareMarkerCreator)

рдЬреИрд╕рд╛ рдХрд┐ рдирд╛рдо рд╕реЗ рд╣реА рд╕реНрдкрд╖реНрдЯ рд╣реИ, рдЗрд╕ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реНрд╡рд╛рд░реНрдк рдПрд╕рдбреАрдХреЗ рдореЗрдВ рдкреНрд░рдпреБрдХреНрдд рдорд╛рд░реНрдХрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рд▓реЙрдиреНрдЪ рдХреЗ рдмрд╛рдж, рдПрдХ рджреГрд╢реНрдп рдорд╛рд░реНрдХрд░ рд╕рдВрдкрд╛рджрдХ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ:
рдЖрдк рд╕рдВрдмрдВрдзрд┐рдд рд╕реЗрд▓ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рдмрд╕ рдПрдХ рдорд╛рд░реНрдХрд░ рд╕реЗрд▓ рдХрд╛ рд░рдВрдЧ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рдЖрдк рдРрд╕реЗ рдорд╛рд░реНрдХрд░ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдЗрдВрдбреЗрдВрдЯреЗрд╢рди, рдлреНрд░реЗрдо рдЪреМрдбрд╝рд╛рдИ, рд╕реЗрд▓ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдЖрдпрд╛рдо рдФрд░ рдЕрдиреНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред

рдХрд┐рд╕реА XML рдкреНрд░рд╛рд░реВрдк рд╕реЗ рдПрдХ рдорд╛рд░реНрдХрд░ рдХреЛ рдПрдХ рдЧреНрд░рд╛рдлрд┐рдХ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ "XML рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ" рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рдорд╛рд░реНрдХрд░ рдХреЛ рд▓реЛрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рдлрд┐рд░ "рд╕рд╣реЗрдЬреЗрдВ рдЫрд╡рд┐" рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рдорд╛рд░реНрдХрд░ рдХреЛ рдПрдХ .EMF рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рд╣реЗрдЬреЗрдВред

рдирдорд╕реНрдХрд╛рд░ рд╡рд┐рд╢реНрд╡! рд╕реНрд╡рд░ рдПрд╕рдбреАрдХреЗ рдкрд░

рдЕрдкрдиреЗ рдПрдЖрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИред рдореИрдВ рдПрдХ OgreSimpleSceneExample рдЙрджрд╛рд╣рд░рдг рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬреЛ рдкрд╣рд▓реЗ рдХреИрдорд░реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ рдФрд░ рдПрдХ 3 рдбреА рдореЙрдбрд▓ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЛрдЧрд░реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред

рдХрдВрд╕реЛрд▓ Win32 рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛рддреЗ рд╣реИрдВред рдФрд░ рд╕рдВрджрд░реНрдн рдореЗрдВ рдкреНрд░рдпреБрдХреНрдд рдЕрд╕реЗрдВрдмрд▓реА рдЬреЛрдбрд╝реЗрдВ:

рдФрд░ рдХреЛрдб рдореЗрдВ рд╣рдо рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдП рдЧрдП рдирд╛рдорд╕реНрдерд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдВрдХ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ:
 using System; using System.Collections.Generic; using System.Drawing; using System.Windows.Forms; using Mogre; using Swarp.Examples.OgreSimpleSceneExample.Properties; using Swarp.SDK.Management; using Swarp.SDK.Ogre3DRendering; using Swarp.SDK.Rendering; using Swarp.SDK.Target.SquareMarkerTracking; using Swarp.SDK.Tracking; using Swarp.SDK.DirectShowInput; 

рдЕрдм рдЖрдкрдХреЛ рд╕реНрдереИрддрд┐рдХ рд╡рд░реНрдЧ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдлрд╝реАрд▓реНрдб рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рд╕рдВрд╡рд░реНрдзрд┐рдд рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдЧрд╛ред рд╣рдореЗрдВ AugmentedRealityManager рд╡рд░реНрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдЬреЛ рд╡рд┐рднрд┐рдиреНрди рдПрд╕рдбреАрдХреЗ рдореЙрдбреНрдпреВрд▓реЛрдВ рдХреА рдмрд╛рддрдЪреАрдд рдФрд░ рдкреНрд░рдмрдВрдзрди рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛ред рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдорд╛рд░реНрдХрд░ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ ITrackable рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдЗрди рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдорд┐рд▓рддреЗ рд╣реИрдВ:
 static class Program { /// <summary> ///   . /// </summary> private static AugmentedRealityManager _arManager; /// <summary> ///  . /// </summary> private static ITrackable _houseTrackable; /// <summary> /// The main entry point for the application. /// </summary> [STAThread] public static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); } } 

рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рд╣реИред рд╕рд╡рд╛рд▓ рдЙрдарддрд╛ рд╣реИ - рдЖрдЧреЗ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ? рдЖрдЧреЗ, рдореИрдВ Swarp SDK рдкреНрд░рд▓реЗрдЦрди рд╕реЗ рдПрдХ рдЪрд┐рддреНрд░ рджреВрдВрдЧрд╛:

рддрд╕реНрд╡реАрд░ рдореЗрдВ, рд▓рд╛рд▓ рдлреНрд░реЗрдо рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рд╡рд░реНрддрдорд╛рди рд╕реНрддрд░ рдкрд░, рдЖрдкрдХреЛ рдХреИрдорд░реЗ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, CameraManager рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
 //     . var camera = CameraManager.Instance.GetFirstWorkedCamera(); //     ,      . if (camera == null) { MessageBox.Show(Resources.CameraNotFoundString, Resources.WarningString, MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } var displayParameters = new DisplayParameters(30, new Size(800, 600)); //       ,    . camera.DisplayParameters = camera.IsSupportedDisplayParameters(displayParameters) ? displayParameters : camera.GetSupportedDisplayParameters()[0]; 

рдлрд┐рд░ рдЖрдкрдХреЛ рдпрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдХреМрди рд╕реЗ рдорд╛рд░реНрдХрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
 var tracker = new SquareMarkerTracker(1); //  1  .      . _houseTrackable = new SquareMarker("House Marker", "Trackable\\5.trackable"); tracker.TrackableObjects.Add(_houseTrackable); 

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо рд╕рдВрдХреЗрдд рджреЗрддреЗ рд╣реИрдВ рдХрд┐ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдпреЛрдЧреНрдп \ 5. рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдорд╛рд░реНрдХрд░ рдорд╛рд░реНрдХрд░ рдЯреНрд░реИрдХрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рджреНрд╡рд╛рд░рд╛ рдЦреЛрдЬрд╛ рдЬрд╛рдПрдЧрд╛ред

рдФрд░ рдЕрдм рд╣рдореЗрдВ рдореЛрдЧрд░реЗ-рдЖрдзрд╛рд░рд┐рдд рдкреНрд░рддрд┐рдкрд╛рджрди рдкреНрд░рдгрд╛рд▓реА рдХреЛ рдЖрд░рдВрднреАрдХреГрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
 //  ,      . var ogreSimpleSceneForm = new Form { Size = new Size(1066, 600), Text = Resources.SwarpSDKExampleString, Icon = Resources.Swarp, }; //  . // plugins.cfg -       Ogre3D. // ogre.cfg -     ,    Ogre3D. // ogre.log - -,       Ogre3D. //       , //          . var renderer = new Ogre3DRenderSystem(ogreSimpleSceneForm.Handle, "OgreConfig\\plugins.cfg", "OgreConfig\\ogre.cfg", "OgreConfig\\ogre.log") { SizeMode = SizeMode.Autosize }; //     . //        // (3D ,   ..,    Ogre3D  ). renderer.LoadResources("OgreConfig\\resources.cfg"); //  .  . var houseScene = new Ogre3DScene(renderer.Root, "House Scene"); renderer.Scenes.Add(houseScene); LoadScene(houseScene.SceneManager); 

Managed Ogre рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ Ogre3DRenderingSystem рд╡рд░реНрдЧ рдореЗрдВ рд╕рдордЭрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рдЬреАрд╡рди рдХреЛ рдмрд╣реБрдд рд╕рд░рд▓ рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрдзрд┐рдХрд╛рдВрд╢ рдирд┐рдпрдорд┐рдд рд╕рдВрдЪрд╛рд▓рди рдХрд░рддрд╛ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдореЛрдЧрд░реЗ рдПрдХ рдЕрд▓рдЧ рдФрд░ рдмрд╣реБрдд рдмрдбрд╝рд╛ рд╡рд┐рд╖рдп рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдХрд┐рд╕реА рдХреЛ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ, рддреЛ рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ рдореЛрдЧрд░реЗ рд╡рд┐рдХрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рд╣реИред

рд╕реНрд╡рд░реВрдк SDK рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдХреЗрд╡рд▓ Ogre рддрдХ рд╕реАрдорд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдПрдХ рдбреЗрд╡рд▓рдкрд░ рджреВрд╕рд░реЗ рд░реЗрдВрдбрд░рд░ рдХреЛ рдПрдХреАрдХреГрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд░реЗрдВрдбрд░рд░ рдФрд░ рд╕реАрди рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рдиреЗ рд╡рд╛рд▓реА рджреЛ рдХрдХреНрд╖рд╛рдПрдВ рдмрдирд╛рдПрдВред

рдЖрдЗрдП рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВред Ogre3DRenderSystem рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп , 4 рдкреИрд░рд╛рдореАрдЯрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ: рдореЛрдЧрд░реЗ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдлреЙрд░реНрдо рдпрд╛ рдирд┐рдпрдВрддреНрд░рдг рдХрд╛ рддрд░реАрдХрд╛, рдУрдЧреНрд░реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдкрде рдЬреЛ рд░реЗрдВрдбрд░рд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдкреНрд▓рдЧ-рдЗрди рдФрд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкрдеред

рдЖрдЧреЗ рдУрдЧреНрд░реЗ рд╕рдВрд╕рд╛рдзрди рд╣реИрдВред 3 рдбреА рдореЙрдбрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рд╕рдВрд╕рд╛рдзрди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЙрдирдХреЗ рд╕рдВрджрд░реНрдн рджрд┐рдП рдЬрд╛рдПрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореЗрд░реА рд╕рдВрд╕рд╛рдзрди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ:
 # Resource locations to be added to the 'boostrap' path # This also contains the minimum you need to use the Ogre example framework [Bootstrap] # Resource locations to be added to the default path [General] FileSystem= FileSystem=Resources Zip=Resources/House.zip 

рдХреЗрд╡рд▓ рдПрдХ House.zip рдореЙрдбрд▓ рдпрд╣рд╛рдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдЬрд╝рд┐рдк рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИред
рддрдм LoadScene рд╡рд┐рдзрд┐ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ ред рдпрд╣ рдПрдХ рдореЛрдЧрд░реЗ рджреГрд╢реНрдп рдмрдирд╛рдиреЗ рдФрд░ рдЙрд╕рдореЗрдВ рдПрдХ рдореЙрдбрд▓ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЖрдк рдореЛрдЧрд░реЗ рд╡рд┐рдХрд┐ рдореЗрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред рд╡рд┐рдзрд┐ рдиреАрдЪреЗ рд╡рд░реНрдгрд┐рдд рд╣реИ:
 private static void LoadScene(SceneManager sceneManager) { //     Mogre,    , //   .. . http://www.ogre3d.org/tikiwiki/Mogre+Tutorials. //  ,     . var houseNode = sceneManager.RootSceneNode.CreateChildSceneNode("HouseNode"); //    (   ). var houseEntity = sceneManager.CreateEntity("House", "House.mesh"); houseNode.AttachObject(houseEntity); houseNode.Scale(6.0f, 6.0f, 6.0f); } 


рдЕрдм рд╕рдм рдХреБрдЫ рдкреНрд░рдмрдВрдзрдХ рдХреЛ рдЖрд░рдВрдн рдХрд░рдиреЗ рдФрд░ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИ:
 //    . _arManager = new AugmentedRealityManager(camera, trackers, renderer); //  . //      . camera.Start(); //    . //     . _arManager.Start(); ogreSimpleSceneForm.Show(); while (ogreSimpleSceneForm.Created) { //         , //     ,      . UpdateScenes(); //   . // ,       , //      . _arManager.Renderer.RenderFrame(); //      . Application.DoEvents(); } //       . _arManager.Dispose(); renderer.Dispose(); camera.Dispose(); 


рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ: рд╕рдВрд╡рд░реНрдзрд┐рдд рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдХреИрдорд░реЗ рд╕реЗ рдХрдмреНрдЬрд╛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

UpdateScenes рд╡рд┐рдзрд┐ рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рдорд╛рд░реНрдХрд░ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдореЙрдбрд▓ (рдпрджрд┐ рдЯреНрд░реИрдХрд░ рджреНрд╡рд╛рд░рд╛ рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ) рдХреЛ рдЙрдиреНрдореБрдЦ рдХрд░рддрд╛ рд╣реИ:
 private static void UpdateScenes() { //     , //     ,       . var foundTrackableObjects = new List<ITrackable>(_arManager.Trackers[0].LastDetectedObjects); //      . foreach (var scene in _arManager.Renderer.Scenes) { //       ,   . if (foundTrackableObjects.Contains(_houseTrackable)) { //    ,    . scene.Visible = true; //    . var trackablePose =_arManager.Trackers[0].GetPose(_houseTrackable); //       . scene.OrientScene(trackablePose); } else { scene.Visible = false; } } } 


рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдореЗрдВ рдкрд╣рд▓рд╛ рдПрдЖрд░-рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдорд┐рд▓рд╛, рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ "рд╣реИрд▓реЛ, рд╡рд░реНрд▓реНрдб!" рд╕рдВрд╡рд░реНрдзрд┐рдд рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдХреА рджреБрдирд┐рдпрд╛ рдореЗрдВред рдореБрдЭреЗ рдЬреЛ рдХреБрдЫ рдорд┐рд▓рд╛ рдЙрд╕рдХрд╛ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рд▓рд┐рдпрд╛:

рдФрд░ рд╕реНрд╡рд╛рд░ рдПрд╕рдбреАрдХреЗ рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рд╡реАрдбрд┐рдпреЛ рдПрдХреНрд╢рди рдореЗрдВ:


рдЕрдЪреНрдЫрд╛ рдШрд░ рд╣реИ, рд╣реИ рдирд╛?

рдирд┐рд╖реНрдХрд░реНрд╖ рдореЗрдВ

рдпрд╣рд╛рдВ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ, рдФрд░ рд╡рд╣ рд╕рдм рдЬреЛ рдЖрдкрдХреЗ рдПрдЖрд░-рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдПрд╕рдбреАрдХреЗ рдкреНрд░рд▓реЗрдЦрди рдХреЛ рдкрдврд╝рдиреЗ рдФрд░ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЗрд╕реЗ рд╕рдордЭрдиреЗ рдореЗрдВ рдореБрдЭреЗ рд▓рдЧрднрдЧ 2 рдШрдВрдЯреЗ рд▓рдЧреЗред

рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рд▓реЗрдЦ рдЙрди рд▓реЛрдЧреЛрдВ рдХреА рдорджрдж рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╕реНрд╡рд░рд╛ рдХреЛ рд╕рдордЭрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓реЗрдЦреЛрдВ рдореЗрдВ, рд╣рдо рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЕрдзрд┐рдХ рдЧрдВрднреАрд░рддрд╛ рд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд▓рд┐рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗред рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рд╕рдВрджрд░реНрдн

рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╕рд╛рдЗрдЯ: www.sectar.com
рдПрд╕рдбреАрдХреЗ рдбрд╛рдЙрдирд▓реЛрдб рд▓рд┐рдВрдХ: рд╕реНрд╡рд╛рд░ рдПрд╕рдбреАрдХреЗ
рдкреНрд░рдмрдВрдзрд┐рдд рдУрдЧреНрд░реЗ: рдореЛрдЧрд░реЗ рд╡рд┐рдХреА

UPD: рдПрдХ рд╡реАрдбрд┐рдпреЛ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ред
UPD 2: рдЦреЗрддреЛрдВ рд╕реЗ рд╕рдорд╛рдЪрд╛рд░: рд╕рдВрдкреНрд░рджрд╛рдп рдиреЗ рдПрдХ рдирдпрд╛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ред рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рдЯреНрд░рд╛рдпрд▓ рдореЛрдб рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рдиреЗ рдореЗрдВ рддреНрд░реБрдЯрд┐ рд╣реБрдИ рдереАред рдпрд╣ рддрдп рд▓рдЧ рд░рд╣рд╛ рд╣реИред рдкреЛрд╕реНрдЯ рдиреЗ рдбрд╛рдЙрдирд▓реЛрдб рд▓рд┐рдВрдХ рдХреЛ рд╕рд╣реА рдХрд░ рджрд┐рдпрд╛ рд╣реИред

Source: https://habr.com/ru/post/In146041/


All Articles