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



рд╢реБрдн рджреЛрдкрд╣рд░, рдкреНрд░рд┐рдп рдкрд╛рдардХреЛрдВред

рдЖрдЬ рдореИрдВ рд╕реНрд╡рд╛рд░ рдПрд╕рдбреАрдХреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреА рдХрд╣рд╛рдиреА рдЬрд╛рд░реА рд░рдЦреВрдВрдЧрд╛ред рдпрд╣ рдкреЛрд╕реНрдЯ рд╕реНрд╡рд╛рд░ рдПрд╕рдбреАрдХреЗ рдХреА рд╕рдореАрдХреНрд╖рд╛ рдЬрд╛рд░реА рд╣реИред рдкрд╣рд▓реЗ рднрд╛рдЧ рдореЗрдВ, рд╣рдордиреЗ рдорд╛рдирдХ рд╕реНрд╡рд╛рд░реНрдк рдкреИрдХреЗрдЬ рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЛ рджреЗрдЦрд╛ред рдФрд░ рдЕрдм рд╣рдо рдЕрдкрдиреЗ рдПрдЖрд░-рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд▓рд┐рдЦреЗрдВрдЧреЗ, рдЬреЛ рдХреИрдорд░реЗ рдХреЗ рд╕рд╛рдордиреЗ рдорд╛рд░реНрдХрд░реЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ 3 рдбреА рдореЙрдбрд▓ рдХреЗ рдПрдиреАрдореЗрд╢рди рдХреЛ рдмрджрд▓ рджреЗрдЧрд╛ред рдХреМрди рдкрд░рд╡рд╛рд╣ рдХрд░рддрд╛ рд╣реИ - рдореИрдВ рдПрдХ рдмрд┐рд▓реНрд▓реА рдХреЗ рд▓рд┐рдП рдкреВрдЫрддрд╛ рд╣реВрдВред


рдРрдк рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ



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

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди


рдореИрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП Visual Studio 2010 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛ред рдкрд╣рд▓реЗ рдореИрдВ рдПрдХ Win32 рдХрдВрд╕реЛрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рддрд╛ рд╣реВрдВ рдФрд░ рдЗрд╕реЗ HabrDemo2 рдХрд╣рддрд╛ рд╣реВрдВред рд╡реИрд╕реЗ, рдбрд┐рдмрдЧрд┐рдВрдЧ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рди рдорд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЕрдирд╡рд╛рдВрдЯреЗрдб рдХреЛрдб рдХреЛ рдбреАрдмрдЧ рдХрд░рдирд╛ рдФрд░ рдХреНрд░рдорд╢рдГ рдбреАрдмрдЧ рдФрд░ рдмрд┐рд▓реНрдб рдЯреИрдм рдореЗрдВ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдХреЛрдб рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдирд╛ рд╣реЛрдЧрд╛:




рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рджрд░реНрдЬ рд╣реЛрдЧрд╛ ред рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рдпреБрдХреНрдд рдлрд╛рдЗрд▓:

рджрд░рдЕрд╕рд▓, рд╣рдо рдЙрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВрдЧреЗред

рдЕрдм рдЖрдкрдХреЛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рд▓рд┐рдВрдХ рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореБрдЭреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА:

рдЫреЛрдЯреА рд╕реБрд╡рд┐рдзрд╛: Swarp SDK рдбреЗрд╡рд▓рдкрд░ рд╕рдордп рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд╕реЗрдВрдмрд▓рд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ .NET рдЯреИрдм рдореЗрдВ рдЕрдкрдиреА рдЕрд╕реЗрдВрдмрд▓реА рдЬреЛрдбрд╝рддрд╛ рд╣реИ:

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ - рд╕реНрдерд╛рдкрд┐рдд рдПрд╕рдбреАрдХреЗ рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдкрд░ рдЪрдврд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рдЗрд╕ рдкрд░ рддреИрдпрд╛рд░реА рдЦрддреНрдо рд╣реЛ рдЧрдИ рд╣реИ - рд╣рдо рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред

рдПрдХ рдХреЛрдб рд▓рд┐рдЦрдирд╛



рдЦреЗрддреЛрдВ

рд╣рдореЗрдВ рдХреБрдЫ рдирд┐рдЬреА рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА:
/// <summary> ///   . /// </summary> private static AugmentedRealityManager _arManager; /// <summary> ///  . /// </summary> private static ITrackable _ninjaTrackable; /// <summary> ///   . /// </summary> private static List<ITrackable> _animationTrackables=new List<ITrackable>(); /// <summary> /// C . /// </summary> private static AnimationState _animationState; /// <summary> /// C . /// </summary> private static float _animTime = 0.1f; 

_ArManager рдлрд╝реАрд▓реНрдб рд╕реНрд╡рд╛рд░реНрдк рдХреЛрд░ рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬреЛ рд╕рдВрд╡рд░реНрдзрд┐рдд рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреА рд╕реНрдЯрд╛рд░реНрдЯ () рдФрд░ рд╕реНрдЯреЙрдк () рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ, рд╣рдо рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╢реБрд░реВ рдпрд╛ рдмрдВрдж рдХрд░рддреЗ рд╣реИрдВред ITrackable рдЗрдВрдЯрд░рдлрд╝реЗрд╕, Swarp рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдЯреЛрдХрди рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред рдореИрдВ рдорд╛рд░реНрдХрд░ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП _ninjaTrackable рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ , рдЬреЛ 3D рдореЙрдбрд▓ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ, рдФрд░ _animationTrackables рд╕реВрдЪреА, рдЬреЛ рдПрдиреАрдореЗрд╢рди рдорд╛рд░реНрдХрд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рдореИрдВ _animationState рдлрд╝реАрд▓реНрдб рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ ред рдореЙрдбрд▓ рдХреЗ рдПрдиреАрдореЗрд╢рди рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдореЛрдЧрд░реЗ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдореЗрдВ рдПрдирд┐рдореЗрд╢рдирд╕реНрдЯреИрдЯ рдХреНрд▓рд╛рд╕ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЦреИрд░, рдЕрдВрддрд┐рдо рдлрд╝реАрд▓реНрдб _animTime рд╣реИ ред рдпрд╣ рд╕рдордп рдХреА рдПрдХ рдорд╛рддреНрд░рд╛ рд╣реИ рдЬреЛ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреА рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдлреНрд░реЗрдо рдореЗрдВ рдПрдиреАрдореЗрд╢рди "рдкрд╛рд▓реА" рдХрд┐рддрдирд╛ рд╣реИред

рдЦреЗрддреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдпрд╛ред рдЕрдЧрд▓рд╛ рдЪрд░рдг рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рд╣реИред

рдЖрд╡реЗрджрди рдЖрд░рдВрднреАрдХрд░рдг


рд╕рдВрд╡рд░реНрдзрд┐рдд рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдХреЗ рдЖрд░рдВрднреАрдХрд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд╣рд▓реЗ рднрд╛рдЧ рдореЗрдВ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣рд╛рдБ рдореИрдВ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдФрд░ рдХреЛрдб рдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдЬрд╛рдКрдВрдЧрд╛ред

рдЖрд░рдВрднреАрдХрд░рдг рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдирд┐рдореНрди рдЪрд░рдг рд╣реЛрддреЗ рд╣реИрдВ:
  1. рдХреИрдорд░рд╛;
  2. рдЯреНрд░реИрдХрд░;
  3. рд░реЗрдВрдбрд░рд░ред

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

рдЯреНрд░реИрдХрд░ рд╡рд┐рд╢реЗрд╖ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИред
рдпрд╣рд╛рдВ рдореИрдВ рдЯреНрд░реИрдХрд░ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдорд╛рд░реНрдХрд░реЛрдВ рдХреЛ рд▓реЛрдб рдХрд░рддрд╛ рд╣реВрдВ:
 //    , //     - 4 var tracker = new SquareMarkerTracker(4); //   _ninjaTrackable = new SquareMarker("Ninja Marker", "Trackable\\1.trackable"); var animationAttackTrackable = new SquareMarker("Attack3", "Trackable\\5.trackable"); var animationCrouchTrackable = new SquareMarker("Crouch", "Trackable\\6.trackable"); var animationBackflipTrackable = new SquareMarker("Backflip", "Trackable\\7.trackable"); _animationTrackables.Add(animationCrouchTrackable); _animationTrackables.Add(animationBackflipTrackable); _animationTrackables.Add(animationAttackTrackable); //     tracker.TrackableObjects.Add(_ninjaTrackable); tracker.TrackableObjects.AddRange(_animationTrackables); 

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

рдФрд░ рдЕрдм рд░реЗрдВрдбрд░рд░ рдХреА рд╢реБрд░реВрдЖрдд:
 // ,       var ogreSimpleSceneForm = new Form { Size = new Size(640, 480), Text = Resources.SwarpSDKExampleString, }; //  var renderer = new Ogre3DRenderSystem(ogreSimpleSceneForm.Handle, "OgreConfig\\plugins.cfg", "OgreConfig\\ogre.cfg", "OgreConfig\\ogre.log") { SizeMode = SizeMode.Autosize }; //     renderer.LoadResources("OgreConfig\\resources.cfg"); // .  . var ninjaScene = new Ogre3DScene(renderer.Root, "Ninja Scene"); renderer.Scenes.Add(ninjaScene); LoadScene(ninjaScene.SceneManager); 

рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдмрд╣реБрдд рдЕрдВрдд рдореЗрдВ LoadScene () рд╡рд┐рдзрд┐ рд▓рд░реНрдХ ред рдЙрд╕рдХрд╛ рдХрд╛рдо рдореЙрдбрд▓ рдХреЛ рд▓реЛрдб рдХрд░рдирд╛, рдЙрд╕реЗ рджреГрд╢реНрдп рдореЗрдВ рдЬреЛрдбрд╝рдирд╛, рдмрдирд╛рд╡рдЯ рдХреЛ рдЦреАрдВрдЪрдирд╛ рдФрд░ рдЖрдЗрдбрд▓ рдПрдиреАрдореЗрд╢рди рдХреЛ рд╢реБрд░реВ рдХрд░рдирд╛ рд╣реИ:
 private static void LoadScene(SceneManager sceneManager) { //  ,     . var ninjaNode = sceneManager.RootSceneNode.CreateChildSceneNode("NinjaNode"); //    (   ). var ninjaEntity = sceneManager.CreateEntity("Ninja", "ninja.mesh"); _animationState = ninjaEntity.GetAnimationState("Idle1"); _animationState.Loop = true; _animationState.Enabled = true; //    MaterialPtr material = MaterialManager.Singleton.Create("NinjaMaterial", ResourceGroupManager.DEFAULT_RESOURCE_GROUP_NAME); material.GetTechnique(0).GetPass(0).CreateTextureUnitState("nskingr.jpg"); material.GetTechnique(0).GetPass(0).SetSceneBlending(SceneBlendType.SBT_TRANSPARENT_ALPHA); material.GetTechnique(0).GetPass(0).DepthCheckEnabled = true; material.GetTechnique(0).GetPass(0).DepthWriteEnabled = true; material.GetTechnique(0).GetPass(0).LightingEnabled = false; ninjaEntity.SetMaterial(material); //    3 ,     ninjaNode.Scale(3f,3f,3f); ninjaNode.AttachObject(ninjaEntity); ninjaNode.SetVisible(true); } 

рдЕрдм рд╕рдм рдХреБрдЫ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рд╣реЛ рдЧрдпрд╛ред

рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдореБрдЦреНрдп рдЪрдХреНрд░


рдЕрдм рдХреИрдорд░рд╛ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ, рд╕рдВрд╡рд░реНрдзрд┐рдд рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдкреНрд░рдмрдВрдзрдХ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдФрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдЖрдирдВрдж рд▓реЗрдиреЗ рдХрд╛ рд╕рдордп рд╣реИред рд╕рд╡рд╛рд▓ рдЙрдарддрд╛ рд╣реИ - "рдХреИрд╕реЗ?"ред рдЬреЛ рд▓реЛрдЧ рдкрд╣рд▓реЗ рд▓реЗрдЦ рдХреЛ рдзреНрдпрд╛рди рд╕реЗ рдкрдврд╝рддреЗ рд╣реИрдВ, рд╡реЗ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрддреНрддрд░ рдЬрд╛рдирддреЗ рд╣реИрдВ: рдпрд╣ рдмрд┐рдирд╛ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ _arManager рдлрд╝реАрд▓реНрдб рдФрд░ рдХреИрдорд░рд╛ рдЪрд░ рд╣реИред
 //    . _arManager = new AugmentedRealityManager(camera, tracker, renderer); //  . camera.Start(); //    . _arManager.Start(); ogreSimpleSceneForm.Show(); while (ogreSimpleSceneForm.Created) { //         , UpdateScenes(ninjaScene.SceneManager); //   . // ,       , //      . _arManager.Renderer.RenderFrame(); //      . Application.DoEvents(); } //       . _arManager.Dispose(); renderer.Dispose(); camera.Dispose(); 

рдХреЛрдб рдХреЗ рдЗрд╕ рдЦрдВрдб рдореЗрдВ, рдорд╛рд░реНрдХрд░реЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕реА рдПрдиреАрдореЗрд╢рди рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдлреНрд░реЗрдо рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдмрдХрд┐ рдПрдХ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдлреЙрд░реНрдо рдореМрдЬреВрдж рд╣реЛрддрд╛ рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред рд╣рдо рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ "рджрд┐рд▓" рдореЗрдВ рдЬрд╛рддреЗ рд╣реИрдВ: UpdateScenes рд╡рд┐рдзрд┐ред

рдпрд╣рд╛рдВ рдХреБрдЫ рднреА рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИред рдореБрдЦреНрдп рд╡рд┐рдЪрд╛рд░ рдкреНрд░рддреНрдпреЗрдХ рдХреЙрд▓ рдХреЗ рд╕рд╛рде рдЯреНрд░реИрдХрд░ рд╕реЗ рдкрд╛рдП рдЧрдП рдорд╛рд░реНрдХрд░реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдЗрд╕ рд╕реВрдЪреА рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕рдВрдмрдВрдзрд┐рдд рдПрдиреАрдореЗрд╢рди рд╢реБрд░реВ рдХрд░рдирд╛ рд╣реИред рдЬреЛ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХреЛрдб рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
 private static void UpdateScenes(SceneManager ninjaSceneManager) { foreach (var tracker in _arManager.Trackers) { //     , //     ,       . var foundTrackableObjects = new List<ITrackable>(tracker.LastDetectedObjects); //      . foreach (var scene in _arManager.Renderer.Scenes) { //       ,   . if (foundTrackableObjects.Contains(_ninjaTrackable)) { //    ,    . scene.Visible = true; //    . var trackablePose = tracker.GetPose(_ninjaTrackable); //       . scene.OrientScene(trackablePose); //   (  =)) var ninjaEntity = ninjaSceneManager.GetEntity("Ninja"); //   var newAnimationState = ninjaEntity.GetAnimationState(SelectAnimation(foundTrackableObjects, _animationTrackables)); //   ,    if (newAnimationState.AnimationName != _animationState.AnimationName) { _animationState.Enabled = false; _animationState = newAnimationState; _animationState.Loop = true; _animationState.Enabled = true; } //  ,        _animationState.AddTime(_animTime); } else { scene.Visible = false; } } } } private static string SelectAnimation(ICollection<ITrackable> found, IEnumerable<ITrackable> target) { foreach (var trackable in target.Where(trackable => !found.Contains(trackable))) { return trackable.Name; } return "Idle1"; } 

SelectAimimation рдкрджреНрдзрддрд┐ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ ред рдЗрд╕рдХреЗ 2 рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИрдВ: рдкрд╛рдП рдЧрдП рдорд╛рд░реНрдХрд░реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдФрд░ рдкрдВрдЬреАрдХреГрдд рдПрдиреАрдореЗрд╢рди рдорд╛рд░реНрдХрд░реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреАред рдпрд╣ рд╡рд┐рдзрд┐ рдкрд╣рд▓реЗ рдорд┐рд▓реЗ рдПрдиреАрдореЗрд╢рди рдорд╛рд░реНрдХрд░ рдХрд╛ рдирд╛рдо рдирд╣реАрдВ рджреЗрддреА рд╣реИред рдорд╛рдорд▓реЗ рдореЗрдВ рдЬрдм рд╕рднреА рдПрдиреАрдореЗрд╢рди рдорд╛рд░реНрдХрд░ рдореМрдЬреВрдж рд╣реИрдВ, рд╕реНрдЯреНрд░рд┐рдВрдЧ "Idle1" рд╕реЗ рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝реЗ рдПрдиреАрдореЗрд╢рди рдХреЗ рдирд╛рдо рд╕реЗ рдорд╛рд░реНрдХрд░реЛрдВ рдХреЛ рдмреБрд▓рд╛рдпрд╛ред

рдиреБрдХрд╕рд╛рди: рдХреЛрдб рдХреЗ рдЗрд╕ рдЯреБрдХрдбрд╝реЗ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ:
 //   var newAnimationState = ninjaEntity.GetAnimationState(SelectAnimation(foundTrackableObjects, _animationTrackables)); //   ,    if (newAnimationState.AnimationName != _animationState.AnimationName) { _animationState.Enabled = false; _animationState = newAnimationState; _animationState.Loop = true; _animationState.Enabled = true; } 

рдПрдиреАрдореЗрд╢рди рдмрджрд▓рддреЗ рд╕рдордп, рдкрд┐рдЫрд▓реЗ рдПрдиреАрдореЗрд╢рди рдХреЛ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЕрдиреНрдпрдерд╛ рдпрд╣ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдореИрдВрдиреЗ рдпрд╣ рд╕рдордЭрдиреЗ рдореЗрдВ рдмрд╣реБрдд рд╕рдордп рдмрд┐рддрд╛рдпрд╛ рдХрд┐ рдХреИрдВрдЯ рдХреНрдпрд╛ рдерд╛ред

рдЦреИрд░, рдпрд╣ рджреЗрдЦрдиреЗ рдХрд╛ рд╕рдордп рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдХреНрдпрд╛ рдорд┐рд▓рд╛?

рдкрд░рд┐рдгрд╛рдо


рдиреАрдЪреЗ рд╡рд╣ рд╡реАрдбрд┐рдпреЛ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рд░рд┐рдХреЙрд░реНрдб рдХрд┐рдпрд╛ рдерд╛ред рдпрд╣ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рднреА рдкрд╛рда рд╕реЗ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рд╣рдордиреЗ рдХреНрдпрд╛ рдХрд┐рдпрд╛ред

рдмрд╣реБрдд рдордЬрд╝реЗрджрд╛рд░ рд╣реИред рд╡реИрд╕реЗ, рдПрдХ рдорд╛рд░реНрдХрд░ рдПрдХ рдорд╛рд░реНрдХрд░ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдпрд╣ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдЕрддрд┐рд╡реНрдпрд╛рдкреА рд╣реЛред

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


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

UPD : рд╡реИрд╕реЗ, рдХрд▓ рд╣реА, Sectar рдиреЗ рдПрдХ рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛ рдХреА рдШреЛрд╖рдгрд╛ рдХреАред рднрд╛рдЧреАрджрд╛рд░реА рдХреЗ рд▓рд┐рдП, рдЖрдк 31 рдЕрдЧрд╕реНрдд рддрдХ рдПрдХ рдореБрдлреНрдд рдХреБрдВрдЬреА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╡рд┐рдЬреЗрддрд╛рдУрдВ рдХреЛ рдЫрд╣ рдорд╣реАрдиреЗ рдФрд░ рдПрдХ рд╕рд╛рд▓ рдХреЗ рд▓рд┐рдП рдореБрдлреНрдд рд╡рд┐рдХрд╛рд╕ рд▓рд╛рдЗрд╕реЗрдВрд╕ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ рдкрдврд╝реЗрдВ: рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛

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


All Articles