Yandex рдиреЗ iOS рдХреЗ рд▓рд┐рдП рдореИрдкреНрд╕ рдореЗрдВ рд╕рдВрд╡рд░реНрдзрд┐рдд рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдХреИрд╕реЗ рдмрдирд╛рдИред ARKit рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдЕрдиреБрднрд╡

рдмрд╣реБрдд рдХрдо рд▓реЛрдЧ рдмрдЪреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдСрдЧрдореЗрдВрдЯреЗрдб рд░рд┐рдпрд▓рд┐рдЯреА (AR) рджреНрд╡рд╛рд░рд╛ рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдХреБрдЫ рдХреЗ рд▓рд┐рдП, рдпрд╣ рддрдХрдиреАрдХ рдХреБрдЫ рдШрдВрдЯреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЦрд┐рд▓реМрдиреЗ рд╕реЗ рдЬреБрдбрд╝реА рд╣реИред рджреВрд╕рд░реЛрдВ рдХреЛ рдпрд╣ рдЕрдзрд┐рдХ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд▓рдЧрддрд╛ рд╣реИред


рдореЗрд░рд╛ рдирд╛рдо рджрд┐рдорд┐рддреНрд░реА рд╣реИ, рдФрд░ рдореИрдВ iOS рдХреЗ рд▓рд┐рдП Yandex.Maps рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдЖрдЬ рдореИрдВ Habr рдХреЗ рдкрд╛рдардХреЛрдВ рдХреЛ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдХреИрд╕реЗ рд╣рдордиреЗ рд╕рдВрд╡рд░реНрдзрд┐рдд рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд░реВрдЯрд┐рдВрдЧ рдмрдирд╛рдИред рдЖрдк ARKit рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рдЬрд╛рдиреЗрдВрдЧреЗ, рдЬрд┐рд╕рдХреА рдмрджреМрд▓рдд рд╕рдВрд╡рд░реНрдзрд┐рдд рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдХрд╛ рдкрд░рд┐рдЪрдп рдЕрдм рдХрдВрдкреНрдпреВрдЯрд░ рджреГрд╖реНрдЯрд┐ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдХреЗрд╡рд▓ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮреЛрдВ рдХреА рдЪрд┐рдВрддрд╛ рдирд╣реАрдВ рд╣реИред



2009 рдореЗрдВ, рдПрд╕реНрдХреНрд╡рд╛рдпрд░ рдкрддреНрд░рд┐рдХрд╛ рдЕрдкрдиреЗ рдЙрддреНрдкрд╛рдж рдореЗрдВ рд╕рдВрд╡рд░реНрдзрд┐рдд рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдореАрдбрд┐рдпрд╛ рдХреЗ рдмреАрдЪ рдкрд╣рд▓реА рдереАред рдореИрдЧрдЬрд╝реАрди рдХреЗ рдХрд╡рд░ рдкрд░ рдПрдХ рдХреЛрдб рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЖрдк рд░реЙрдмрд░реНрдЯ рдбрд╛рдЙрдиреА рдЬреВрдирд┐рдпрд░ рдХреЛ "рд▓рд╛рдЗрд╡" рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред



рдордиреЛрд░рдВрдЬрди рдЙрджреНрдпреЛрдЧ рдореЗрдВ рдПрдЖрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдпрд╣реАрдВ рддрдХ рд╕реАрдорд┐рдд рдирд╣реАрдВ рдерд╛ред рдПрдХ рдЬреНрд╡рд▓рдВрдд рдЙрджрд╛рд╣рд░рдг 2016 рдореЗрдВ рдЬрд╛рд░реА рдЧреЗрдо рдкреЛрдХреЗрдореЙрди рдЧреЛ рдерд╛ред рдЙрд╕ рд╡рд░реНрд╖ рдХреЗ рдЬреБрд▓рд╛рдИ рддрдХ, рдЗрд╕реЗ 16 рдорд┐рд▓рд┐рдпрди рд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЦреЗрд▓ рдХреА рд╕рдлрд▓рддрд╛ рдХреЗ рд╕рд╛рде рдПрдЖрд░ рдХреЗ рд╕рд╛рде рдХрдИ рдХреНрд▓реЛрдиреЛрдВ рдХрд╛ рдЙрджрдп рд╣реБрдЖред


рд╣рд╛рд▓ рдХреЗ рд╡рд░реНрд╖реЛрдВ рдореЗрдВ рдПрдЖрд░ рдЙрджреНрдпреЛрдЧ рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдШрдЯрдирд╛рдУрдВ рдХреЛ Google рдЧреНрд▓рд╛рд╕ рдФрд░ рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рд╣реЛрд▓реЛрд▓реЗрдВрд╕ рдХреА рдШреЛрд╖рдгрд╛ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдРрд╕реЗ рдЙрдкрдХрд░рдгреЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рд╡реЗрдХреНрдЯрд░ рджрд┐рдЦрд╛рддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдмрдбрд╝реА рдХрдВрдкрдирд┐рдпрд╛рдВ рдЪрд▓рддреА рд╣реИрдВред


Apple рдХреЛрдИ рдЕрдкрд╡рд╛рдж рдирд╣реАрдВ рдерд╛ред 2017 рдореЗрдВ, рдХрдВрдкрдиреА рдиреЗ ARKit рдлреНрд░реЗрдорд╡рд░реНрдХ рдкреЗрд╢ рдХрд┐рдпрд╛, рдЬрд┐рд╕рдХрд╛ рдорд╣рддреНрд╡ рдЙрджреНрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд╢рд╛рдпрдж рд╣реА рдХрдо рд╣реЛред рдФрд░ рд╣рдо рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред


ARKit


ARKit рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ, AR рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИ:


  • рд╡рд┐рд╢реЗрд╖ рдЯреИрдЧ (рдорд╛рд░реНрдХрд░) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреА рдХрдореА,
  • рдореМрдЬреВрджрд╛ Apple 2D / 3D рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг - SceneKit, SpriteKit, Metal,
  • рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рдбрд┐рд╡рд╛рдЗрд╕ рдХреА рд╕реНрдерд┐рддрд┐ рдФрд░ рдЕрднрд┐рд╡рд┐рдиреНрдпрд╛рд╕ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдЙрдЪреНрдЪ рд╕рдЯреАрдХрддрд╛,
  • рдХреИрдорд░рд╛ рдпрд╛ рд╕реЗрдВрд╕рд░ рдХреЛ рдХреИрд▓рд┐рдмреНрд░реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рдПрдЖрд░рдХреЗрдЯ рдХреЗ рд╣реБрдб рдХреЗ рддрд╣рдд рдПрдХ рджреГрд╢реНрдп рдЬрдбрд╝рддреНрд╡реАрдп рдУрдбреЛрдореЗрдЯреНрд░реА рдкреНрд░рдгрд╛рд▓реА рд╣реИ рдЬреЛ рдордВрдЪ рдкрд░ рд╕реНрдерд┐рддрд┐ рдФрд░ рд╡рд┐рд╕реНрдерд╛рдкрди рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдг рдХреЗ рджреГрд╢реНрдп (рдХреИрдорд░рд╛) рдФрд░ рдЬрдбрд╝рддреНрд╡реАрдп (рдПрдХреНрд╕реЗрд▓реЗрд░реЛрдореАрдЯрд░, рдЬрд╛рдЗрд░реЛрд╕реНрдХреЛрдк) рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛ рдХреЛ рдЬреЛрдбрд╝рддреА рд╣реИред рдЗрд╕ рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдХрдиреЗрдХреНрдЯрд┐рдВрдЧ рддрддреНрд╡ рдХрд▓рдорди рдлрд╝рд┐рд▓реНрдЯрд░ рд╣реИ - рдПрдХ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдЬреЛ рд╕рдордп рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдХреНрд╖рдг рдореЗрдВ рджреЛ рдЙрдк-рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рд░реАрдбрд┐рдВрдЧ рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдордВрдЪ рдкрд░ рд╣рдорд╛рд░реА рд╕реНрдерд┐рддрд┐ рдФрд░ рдЕрднрд┐рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рд░реВрдк рдореЗрдВ рд╣рдореЗрдВ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред ARKit рдореЗрдВ рджреГрд╢реНрдп рдХреА "рд╕рдордЭ" рднреА рд╣реИ - рд╣рдо рдХреНрд╖реИрддрд┐рдЬ рдФрд░ рдКрд░реНрдзреНрд╡рд╛рдзрд░ рд╕рддрд╣реЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рд╛рде рд╣реА рджреГрд╢реНрдп рдХреА рдкреНрд░рдХрд╛рд╢ рд╡реНрдпрд╡рд╕реНрдерд╛ рдХреА рд╕реНрдерд┐рддрд┐ рднреАред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рджреГрд╢реНрдп рдореЗрдВ рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╕рдордп, рд╣рдо рдЗрд╕рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреНрд░рдХрд╛рд╢ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдзрдиреНрдпрд╡рд╛рдж рдЬрд┐рд╕рд╕реЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдЕрдзрд┐рдХ рдпрдерд╛рд░реНрдерд╡рд╛рджреА рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред


рд╡реИрд╕реЗ

рдЬрд▓реНрдж рд╣реА, рдлреНрд░реЗрдорд╡рд░реНрдХ рд╕рдВрд╕реНрдХрд░рдг 2.0 рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рд╕рдореЗрдВ рдирдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рд╕реНрдерд┐рддрд┐ рд╕рдЯреАрдХрддрд╛ рдореЗрдВ рдХрд╛рдлреА рд╕реБрдзрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред


ARKit рдиреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдмрд╣реБрдд рдХрдо рдкреНрд░рдпрд╛рд╕ рдЦрд░реНрдЪ рдХрд░рддреЗ рд╣реБрдП рдЕрдкрдиреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдЙрдЪреНрдЪ-рдЧреБрдгрд╡рддреНрддрд╛ рд╡рд╛рд▓реЗ рд╕рдВрд╡рд░реНрдзрд┐рдд рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдХреЛ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреАред рд╣рдо рдЗрд╕реЗ Yandex.Maps рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВрдЧреЗред


Yandex.Maps рдкрд░ AR рдХреЗ рд╕рд╛рде рд░реВрдЯрд┐рдВрдЧ


рдЖрдорддреМрд░ рдкрд░, iOS рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХреА рдШреЛрд╖рдгрд╛ рдХреЗ рдмрд╛рдж, Yandex рдкрд░ рдХрдИ рдЯреАрдореЗрдВ рдПрдХ рд╕рд╛рде рдЕрдкрдиреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдирдИ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдкреЗрд╢ рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрддреА рд╣реИрдВред Yandex.Mart рдЯреАрдо рдиреЗ рдРрд╕рд╛ рд╣реА рдХрд┐рдпрд╛ред ARKit рдХреА рдШреЛрд╖рдгрд╛ рдХреЗ рдХреНрд╖рдг рд╕реЗ рдПрдХ рдорд╣реАрдиреЗ рдХреЗ рднреАрддрд░, рд╣рдордиреЗ рдЕрдХреНрд╕рд░ рдЪрд░реНрдЪрд╛ рдХреА рдХрд┐ рдЗрд╕реЗ рдореИрдкреНрд╕ рдореЗрдВ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПред рд╣рдордиреЗ рдПрдХ рджреВрд╕рд░реЗ рд╕реЗ рдХрд┐рд╕ рддрд░рд╣ рдХреЗ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рд╕реБрдиреЗ! рдЬрд▓реНрджреА рд╕реЗ рдкрд░реНрдпрд╛рдкреНрдд, рд╣рдо рдЗрд╕ рдирд┐рд╖реНрдХрд░реНрд╖ рдкрд░ рдкрд╣реБрдВрдЪреЗ рдХрд┐ рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдФрд░ рд╕рддрд╣ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдорд╛рд░реНрдЧ рдореЗрдВ рд╕рдВрд╡рд░реНрдзрд┐рдд рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣реИред


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


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рд░реВрдЯрд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╢рдмреНрдж рдХрд╣рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдореИрдВрдиреЗ рдЗрд╕ рдЕрд╡рдзрд╛рд░рдгрд╛ рдореЗрдВ рдХреНрдпрд╛ рд░рдЦрд╛ рд╣реИ? рдПрдХ рдореЛрдмрд╛рдЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдпрд╣ рдПрдХ рдХрд╛рдлреА рдорд╛рдирдХ рд╕реЗрдЯ рд╣реИ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдмрд┐рдВрджреБ A рд╕реЗ рдмрд┐рдВрджреБ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:


  • рдкреНрд░рд╕реНрдерд╛рди рдФрд░ рдЖрдЧрдорди рдмрд┐рдВрджреБрдУрдВ рдХрд╛ рдЪрдпрди,
  • рднреМрдЧреЛрд▓рд┐рдХ (рдЕрдХреНрд╖рд╛рдВрд╢, рджреЗрд╢рд╛рдВрддрд░) рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдореЗрдВ рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдПрдХ рд╕реЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдорд╛рд░реНрдЧ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛,
  • рдорд╛рд░реНрдЧ рд▓рд╛рдЗрди рдХреЗ рдирдХреНрд╢реЗ рдкрд░ рдкреНрд░рджрд░реНрд╢рди,
  • рдорд╛рд░реНрдЧ рдХреЗ рд╕рд╛рде рдЪрд▓рддреЗ рд╕рдордп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рдеред

рд╣рдо рдкрд╣рд▓реЗ рджреЛ рдмрд┐рдВрджреБрдУрдВ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдиреНрджреНрд░рд┐рдд рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред рдореИрдВ рдХреЗрд╡рд▓ рдпрд╣ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рд╣рдореЗрдВ рдЕрдкрдиреЗ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдпреИрдВрдбреЗрдХреНрд╕.рдорд╛рдкреНрдХрд┐рдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдорд╛рд░реНрдЧ рдорд┐рд▓рддрд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдПрдХ рдлрд▓реА рдХреЗ рд░реВрдк рдореЗрдВ рднреА рдЙрдкрд▓рдмреНрдз рд╣реИред рдирдХреНрд╢реЛрдВ рдореЗрдВ рдорд╛рдирдХ рд░рд╛рдЙрдЯрд┐рдВрдЧ рд╕реЗ рд╕рдВрд╡рд░реНрдзрд┐рдд рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рд░реВрдЯрд┐рдВрдЧ рдЕрд▓рдЧ рдХреИрд╕реЗ рд╣реЛрддреА рд╣реИ? рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореБрдЦреНрдп рдЕрдВрддрд░ рд▓рдЧрднрдЧ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЫрд┐рдкрд╛ рд╣реБрдЖ рдирдХреНрд╢рд╛ рд╣реИред рдореБрдЦреНрдп рдЬреЛрд░ рдХреИрдорд░реЗ рд╕реЗ рд╡реАрдбрд┐рдпреЛ рд╕реНрдЯреНрд░реАрдо рдХреА рдЫрд╡рд┐ рдХреЗ рд╕рд╛рде рд╕реНрдХреНрд░реАрди рдХреНрд╖реЗрддреНрд░ рдкрд░ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕ рдкрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рджреГрд╢реНрдп рддрддреНрд╡ рд╕реБрдкрд░рд┐рдВрдкреЛрдЬ рдХрд┐рдП рдЧрдП рд╣реИрдВ (рдлрд┐рдирд┐рд╢ рдорд╛рд░реНрдХ, рд╕рд╣рд╛рдпрдХ рдЪрд┐рд╣реНрди рдФрд░ рдорд╛рд░реНрдЧ рд░реЗрдЦрд╛ рдЫрд╡рд┐)ред рдЗрди рджреГрд╢реНрдп рддрддреНрд╡реЛрдВ рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХрд╛ рдЕрдкрдирд╛ рд╢рдмреНрджрд╛рд░реНрде рднрд╛рд░ рдФрд░ рдЗрд╕рдХрд╛ рдЕрдкрдирд╛ рддрд░реНрдХ рд╣реИ (рдЗрд╕реЗ рдХрдм рдФрд░ рдХреИрд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП)ред рд╣рдо рдмрд╛рдж рдореЗрдВ рдЗрди рддрддреНрд╡реЛрдВ рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреА рднреВрдорд┐рдХрд╛ рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдЕрдм рдореИрдВ рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддрд╛ рд╣реВрдВ рдЬреЛ рд╣рдорд╛рд░реЗ рд╕рд╛рдордиреЗ рдереЗ:


  • ARKit рджреГрд╢реНрдп рдкрд░ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд░рдЦрдирд╛ рд╕реАрдЦреЗрдВ, рдЙрдирдХреЗ рднреМрдЧреЛрд▓рд┐рдХ рдирд┐рд░реНрджреЗрд╢рди рдХреЛ рдЬрд╛рдирдХрд░,
  • рдкрд░реНрдпрд╛рдкреНрдд рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд╕рд╛рде 3 рдбреА рджреГрд╢реНрдп рдкрд░ рдЖрд╡рд╢реНрдпрдХ рдпреВрдЖрдИ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдирд╛ рд╕реАрдЦреЗрдВред

рд╣рдореЗрдВ рд╕реНрдЯреЗрдЬ рдкрд░ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЗ рднреМрдЧреЛрд▓рд┐рдХ рдХреЛ рдмрд┐рдВрджреБрдУрдВ рд╕реЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА, рдЪрдпрди рдХрд░реЗрдВ рдХрд┐ рдХреМрди рд╕реЗ рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рд╣реИ, рдФрд░ рд╕рд╣реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдХреИрдорд░рд╛ рдЫрд╡рд┐ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдпреВрдЖрдИ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рд╣реИред рд▓реЗрдХрд┐рди рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ рд▓рдЧрдиреЗ рд╕реЗ рд╕рдм рдХреБрдЫ рдереЛрдбрд╝рд╛ рдФрд░ рдЬрдЯрд┐рд▓ рд╣реЛ рдЧрдпрд╛ред


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


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


рдЙрдкрдХрд░рдг рдФрд░ рдПрдкреАрдЖрдИ


рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рдФрд░ рджреГрд╢реНрдп рджреГрд╢реНрдп рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдмрдирд╛рдирд╛ рдФрд░ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдирд╛ рдореБрдЦреНрдп рдХрд╛рдо рд╣реИред ARKit рдХреЗ рдЖрдЧрдорди рдХреЗ рд╕рд╛рде, ARSCNView рд╡рд░реНрдЧ (SCNView рд╡рд░реНрдЧ рдХреЗ рд╡рдВрд╢рдЬ - рджреГрд╢реНрдп рдореЗрдВ рджреГрд╢реНрдп рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдзрд╛рд░ рд╡рд░реНрдЧ) рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реЛ рдЧрдпрд╛, рдЬреЛ ARKit рдФрд░ SceneKit рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рдордп рд▓реЗрдиреЗ рд╡рд╛рд▓реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреН:


  • рдордВрдЪ рдкрд░ рдХреИрдорд░реЗ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рд╕рд╛рде рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рдлреЛрди рдХреА рд╕реНрдерд┐рддрд┐ рдХрд╛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди,
  • рд╕рдордиреНрд╡рдпрди рдкреНрд░рдгрд╛рд▓реА ARKit рдХреЗ рд╕рд╛рде рджреГрд╢реНрдп рдХрд╛ рд╕рдордиреНрд╡рдп рдкреНрд░рдгрд╛рд▓реА рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ,
  • рджреГрд╢реНрдп рдХреА рдкреГрд╖реНрдарднреВрдорд┐ рдХреЗ рд░реВрдк рдореЗрдВ, рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рдХреИрдорд░реЗ рд╕реЗ рд╡реАрдбрд┐рдпреЛ рд╕реНрдЯреНрд░реАрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

ARSCNView рдСрдмреНрдЬреЗрдХреНрдЯ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рд╕рдВрд╡рд░реНрдзрд┐рдд рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рд╕рддреНрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рднреА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдИрд╡реЗрдВрдЯ рдХреЗ рд▓рд┐рдП рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдм рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


рджреГрд╢реНрдп рдореЗрдВ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд╛рд░рд┐рд╕ рдпрд╛ рд╕реАрдзреЗ SCNNode рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╡рд░реНрдЧ рдЕрдкрдиреЗ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреА рд╕рдордиреНрд╡рдп рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдПрдХ рд╕реНрдерд┐рддрд┐ (рддреНрд░рд┐-рдЖрдпрд╛рдореА рд╡реЗрдХреНрдЯрд░) рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдореЗрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╡рд╕реНрддреБ рдореЗрдВ рдПрдХ рдЬрдбрд╝ рдХреЗ рд╕рд╛рде рджреГрд╢реНрдп рдкрд░ рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдПрдХ рдкреЗрдбрд╝ рдорд┐рд▓рддрд╛ рд╣реИ - рд╣рдорд╛рд░реЗ рджреГрд╢реНрдп рдХрд╛ рд░реВрдЯрдХреЛрдбред рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ UIKIT рдореЗрдВ UIView рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЗ рд╕рдорд╛рди рд╣реИред рдЬрдм рд╡реЗ рд╕рд╛рдордЧреНрд░реА рдФрд░ рдкреНрд░рдХрд╛рд╢ рд╡реНрдпрд╡рд╕реНрдерд╛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рддреЛ SCNNode рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рд╕реНрдЯреЗрдЬ рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


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


рд╡рд┐рд╢реНрд╡ рд╕рдВрдЬреНрдЮрд╛ рдЧреБрд░реБрддреНрд╡рд╛рдХрд░реНрд╖рдг рдФрд░ рд╢реАрд░реНрд╖рдХ


рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдВрдпреЛрдЬрди рдХреЗ рд╕рд╛рде, рдПрдХреНрд╕ / рдЬреЗрдб рдХреБрд▓реНрд╣рд╛рдбрд╝рд┐рдпреЛрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рджрдХреНрд╖рд┐рдг / рдкреВрд░реНрд╡ рдХреЗ рд▓рд┐рдП рджрд┐рд╢рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЧрдардмрдВрдзрди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди, рдХрдореНрдкрд╛рд╕ рд░реАрдбрд┐рдВрдЧ рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдХрд╛рд░рдг, рдХреБрд▓реНрд╣рд╛рдбрд╝рд┐рдпреЛрдВ рдХреЛ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рд╡рд░реНрдгрд┐рдд рджрд┐рд╢рд╛ рдореЗрдВ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдХреЛрдг рдкрд░ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдЙрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ рдЬрд┐рдирд╕реЗ рд╣рдореЗрдВ рдирд┐рдкрдЯрдирд╛ рдерд╛, рд▓реЗрдХрд┐рди рдмрд╛рдж рдореЗрдВ рдЙрд╕ рдкрд░ рдФрд░ рдЕрдзрд┐рдХред


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


рдирд┐рд╢рд╛рди рдЦрддреНрдо рдХрд░реЛ


рд╕рдВрд╡рд░реНрдзрд┐рдд рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдХреЗ рд╕рд╛рде рдкреИрджрд▓ рдорд╛рд░реНрдЧ рдХрд╛ рдореБрдЦреНрдп рджреГрд╢реНрдп рддрддреНрд╡ рдлрд┐рдирд┐рд╢ рдорд╛рд░реНрдХ рд╣реИ, рдЬреЛ рдорд╛рд░реНрдЧ рдХреЗ рдЕрдВрддрд┐рдо рдмрд┐рдВрджреБ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рдирд┐рд╢рд╛рди рдХреЗ рдКрдкрд░ рднреА, рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдорд╛рд░реНрдЧ рдХреЗ рдЕрдВрддрд┐рдо рдмрд┐рдВрджреБ рддрдХ рджреВрд░реА рджрд┐рдЦрд╛рддреЗ рд╣реИрдВред


рдЦрддреНрдо-рд╕реНрдерд╛рди-рдЪрд┐рд╣реНрди-рд╕рд┐рдВрд╣рд╛рд╡рд▓реЛрдХрди


рдЖрдХрд╛рд░


рдЬрдм рд╣рдореЗрдВ рдкрд╣рд▓реА рдмрд╛рд░ рдЗрд╕ рдЯреИрдЧ рдХрд╛ рдбрд┐рдЬрд╝рд╛рдЗрди рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рд╣рдордиреЗ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕ рдЯреИрдЧ рдХреЗ рдЖрдХрд╛рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛ред рд╡реЗ рдкрд░рд┐рдкреНрд░реЗрдХреНрд╖реНрдп рдкреНрд░рдХреНрд╖реЗрдкрдг рдХреЗ рдирд┐рдпрдореЛрдВ рдХрд╛ рдкрд╛рд▓рди рдирд╣реАрдВ рдХрд░рддреЗ рдереЗред рдореИрдВ рд╕рдордЭрд╛рдКрдВрдЧрд╛ рдХрд┐ рддреАрди рдЖрдпрд╛рдореА рдЗрдВрдЬрди рдЬреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрдВрдкреНрдпреВрдЯрд░ рдЧреЗрдо, "рд▓реБрдХ" рдХреЛ рдкрд░рд┐рдкреНрд░реЗрдХреНрд╖реНрдп рдкреНрд░рдХреНрд╖реЗрдкрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдкрд░рд┐рдкреНрд░реЗрдХреНрд╖реНрдп рдкреНрд░рдХреНрд╖реЗрдкрдг рдХреЗ рдирд┐рдпрдореЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рджреВрд░ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЫреЛрдЯреЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдЪрд┐рддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╕рдорд╛рдирд╛рдВрддрд░ рд░реЗрдЦрд╛рдПрдВ рдЖрдорддреМрд░ рдкрд░ рд╕рдорд╛рдирд╛рдВрддрд░ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╕реНрдХреНрд░реАрди рдкреНрд▓реЗрди рдкрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдкреНрд░реЛрдЬреЗрдХреНрд╢рди рдЖрдХрд╛рд░ рд░реИрдЦрд┐рдХ рд░реВрдк рд╕реЗ (рдШрдЯрддрд╛) рдмрджрд▓рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдХреИрдорд░рд╛ рджреГрд╢реНрдп рдкрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ рджреВрд░ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд▓реЗрдЖрдЙрдЯ рдХреЗ рд╡рд░реНрдгрди рд╕реЗ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ рдХрд┐ рд╕реНрдХреНрд░реАрди рдкрд░ рдирд┐рд╢рд╛рди рдХрд╛ рдЖрдХрд╛рд░ 50 рдореАрдЯрд░ рд╕реЗ рдХрдо рд╣рдЯрд╛рдП рдЬрд╛рдиреЗ рдкрд░ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд (рдЕрдзрд┐рдХрддрдо) рдЖрдХрд╛рд░ рд╣реЛрддрд╛ рд╣реИ, рдлрд┐рд░ рд░реИрдЦрд┐рдХ рд░реВрдк рд╕реЗ 50 рдореАрдЯрд░ рд╕реЗ рдШрдЯрдХрд░ 2 рдХрд┐рдореА рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдиреНрдпреВрдирддрдо рдЖрдХрд╛рд░ рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд░рд╣рддрд╛ рд╣реИред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рдХрд╛рд░рдг рдРрд╕реА рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╣реИрдВред рд╡реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рджреГрд╢реНрдп рд╕реЗ рдорд╛рд░реНрдЧ рдХреЗ рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ рдХреЛ рдХрднреА рдирд╣реАрдВ рдЦреЛрдиреЗ рджреЗрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╣рдореЗрд╢рд╛ рдпрд╣ рдЕрдВрджрд╛рдЬрд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЙрд╕реЗ рдХрд╣рд╛рдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рд╣реИред


рдЦрддреНрдо-рд╕реНрдерд╛рди-рдЪрд┐рд╣реНрди рдЖрдХрд╛рд░ рдХреА рдорд╛рдВрдЧ


рд╣рдореЗрдВ рдпрд╣ рд╕рдордЭрдирд╛ рдерд╛ рдХрд┐ рд╣рдо рдХреБрдЫ рдирд┐рдпрдореЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ SceneKit рдкреНрд░рдХреНрд╖реЗрдкрдг рддрдВрддреНрд░ рдореЗрдВ рдЦреБрдж рдХреЛ рдХреИрд╕реЗ рдЬрдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВ рддреБрд░рдВрдд рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рдм рдХреБрдЫ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдм рдХреБрдЫ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рдЧрднрдЧ рджреЛ рд╕рдкреНрддрд╛рд╣ рдереЗ, рдЗрд╕рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рдХрд╛ рдЧрд╣рди рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╕ рд╕рдордп рдирд╣реАрдВ рдерд╛ред рдЕрдм, рд╣рдорд╛рд░реЗ рдирд┐рд░реНрдгрдпреЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддреЗ рд╣реБрдП, рдЙрдирдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдирд╛ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ, рдФрд░ рд╣рдо рдпрд╣ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рдП рдЧрдП рдЕрдзрд┐рдХрд╛рдВрд╢ рдирд┐рд░реНрдгрдп рд╕рд╣реА рдереЗред рдЖрдХрд╛рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдкрд╣рд▓реА рдареЛрдХрд░ рдереАред рдиреАрдЪреЗ рджреА рдЧрдИ рд╕рднреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ SceneKit рдФрд░ UIKit рджреЛрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореИрдВрдиреЗ рджреЛрдиреЛрдВ рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдмрддрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреМрди рд╕рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЖрдкрдХреЗ рдКрдкрд░ рд╣реИред


рдЖрдЗрдП рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рд╣рдордиреЗ SceneKit рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдлрд┐рдирд┐рд╢ рд▓реЗрдмрд▓ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред рдЕрдЧрд░ рд╣рдо рдЗрд╕ рдмрд╛рдд рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реИрдВ рдХрд┐ рд▓реЗрдЖрдЙрдЯ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд▓реЗрдмрд▓ рдХреЛ рд╕реНрдХреНрд░реАрди рдкрд░ рдПрдХ рд╕рд░реНрдХрд▓ рдХреА рддрд░рд╣ рджреЗрдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рддреЛ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ SceneKit рдореЗрдВ рд▓реЗрдмрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдПрдХ рдЧреЛрд▓рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (рдЪреВрдВрдХрд┐ рдХрд┐рд╕реА рднреА рд╡рд┐рдорд╛рди рдкрд░ рдЧреЛрд▓реЗ рдХрд╛ рдкреНрд░рдХреНрд╖реЗрдкрдг рдПрдХ рдЪрдХреНрд░ рд╣реИ)ред рдкреНрд░рдХреНрд╖реЗрдкрдг рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░реАрди рдкрд░ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рддреНрд░рд┐рдЬреНрдпрд╛ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдбрд┐рдЬрд╛рдЗрдирд░реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╕рдордп рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдХреНрд╖рдг рдореЗрдВ рдЧреЛрд▓реЗ рдХреА рддреНрд░рд┐рдЬреНрдпрд╛ рдЬрд╛рдирдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдмрд┐рдВрджреБ рдкрд░ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рддреНрд░рд┐рдЬреНрдпрд╛ рдХреЗ рдПрдХ рдЧреЛрд▓реЗ рдХреЛ рд░рдЦрдХрд░ рдФрд░ рдкрд╛рд╕ рдЖрдиреЗ рдпрд╛ рджреВрд░ рдЬрд╛рдиреЗ рдкрд░ рд▓рдЧрд╛рддрд╛рд░ рдЕрдкрдиреА рддреНрд░рд┐рдЬреНрдпрд╛ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╣реБрдП, рд╣рдореЗрдВ рдХрд┐рд╕реА рднреА рд╕рдордп рдЖрд╡рд╢реНрдпрдХ рдЖрдХрд╛рд░ рдХреА рд╕реНрдХреНрд░реАрди рдкрд░ рдПрдХ рдкреНрд░рдХреНрд╖реЗрдкрдг рдорд┐рд▓реЗрдЧрд╛ред рд╕рдордп рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдПрдХ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдмрд┐рдВрджреБ рдкрд░ рдХреНрд╖реЗрддреНрд░ рдХреА рддреНрд░рд┐рдЬреНрдпрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:


  1. рдордВрдЪ рдкрд░ рд╡рд╕реНрддреБ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ - рдЧреЛрд▓реЗ рдХрд╛ рдХреЗрдВрджреНрд░,
  2. рд╕реНрдХреНрд░реАрди рдкреНтАНрд▓реЗрди рдкрд░ рдЗрд╕ рдмрд┐рдВрджреБ рдХрд╛ рдкреНрд░реЛрдЬреЗрдХреНтАНрд╢рди рдЦреЛрдЬреЗрдВ (SceneKit API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ),
  3. рд╕реНрдХреНрд░реАрди рдкрд░ рдирд┐рд╢рд╛рди рдХреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрдХрд╛рд░ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдХреИрдорд░реЗ рд╕реЗ рдордВрдЪ рдкрд░ рдЧреЛрд▓реЗ рдХреЗ рдХреЗрдВрджреНрд░ рдХреА рджреВрд░реА рдкрд╛рддреЗ рд╣реИрдВ,
  4. рд╣рдо рдбрд┐рдЬрд╝рд╛рдЗрди рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдирд┐рдпрдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рджреВрд░реА рджреНрд╡рд╛рд░рд╛ рд╕реНрдХреНрд░реАрди рдкрд░ рдЖрд╡рд╢реНрдпрдХ рдЖрдХрд╛рд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ,
  5. рд╕реНрдХреНрд░реАрди (рд╕рд░реНрдХрд▓ рдХрд╛ рд╡реНрдпрд╛рд╕) рдкрд░ рдирд┐рд╢рд╛рди рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдЬрд╛рдирддреЗ рд╣реБрдП, рд╣рдо рдЗрд╕ рд╕рд░реНрдХрд▓ рдкрд░ рдХрд┐рд╕реА рднреА рдмрд┐рдВрджреБ рдХреЛ рдЪреБрдирддреЗ рд╣реИрдВ,
  6. рдЪрдпрдирд┐рдд рдмрд┐рдВрджреБ рдХрд╛ рдЙрд▓реНрдЯрд╛ рдкреНрд░рдХреНрд╖реЗрдкрдг (рдЕрдкреНрд░рдорд╛рдгрди) рдХрд░реЗрдВ,
  7. рд╣рдо рд╡реЗрдХреНрдЯрд░ рдХреА рд▓рдВрдмрд╛рдИ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдмрд┐рдВрджреБ рд╕реЗ рдордВрдЪ рдХреЗ рдХреЗрдВрджреНрд░ рддрдХ рдкрд╛рддреЗ рд╣реИрдВред

рд╡реЗрдХреНрдЯрд░ рдХреА рд▓рдВрдмрд╛рдИ рдХрд╛ рдкреНрд░рд╛рдкреНрдд рдорд╛рди рдЧреЛрд▓реЗ рдХрд╛ рд╡рд╛рдВрдЫрд┐рдд рддреНрд░рд┐рдЬреНрдпрд╛ рд╣реЛрдЧрд╛ред


рд╕реНрдерд╛рди-рд╕реНрдерд╛рди-рдЪрд┐рд╣реНрди рдЖрдХрд╛рд░ рд╕рдорд╛рдзрд╛рди рджреГрд╢реНрдпрдХрд┐рдЯ


рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рдордп, рд╣рдо рджреГрд╢реНрдп рдкрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдирд╣реАрдВ рдЦреЛрдЬ рдкрд╛рдП рдереЗ, рдФрд░ рд╣рдордиреЗ UIKit рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд┐рдирд┐рд╢ рдорд╛рд░реНрдХ рдЦреАрдВрдЪрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо 1-5 рдЪрд░рдгреЛрдВ рдХреЛ рджреЛрд╣рд░рд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рд╡рд╛рдВрдЫрд┐рдд рдЖрдХрд╛рд░ рдХреЗ рдПрдХ рдЪрдХреНрд░ рдХреЛ рд╕реНрдХреНрд░реАрди рдкрд░ UIKit рдЯреВрд▓реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЪрд░рдг 2 рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдмрд┐рдВрджреБ рдкрд░ рдЦреАрдВрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИред UIKit рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд▓реЗрдмрд▓ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред


рдХреЛрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╢рдмреНрдж

рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ рдореИрдВрдиреЗ рдирдореВрдиреЛрдВ рд╕рд╣рд┐рдд рдЙрдкрдпреЛрдЧреА рдФрд░ рд╕рд░рд▓ рд░реЛрдЪрдХ рд╕рд╛рдордЧреНрд░рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХрдИ рд▓рд┐рдВрдХ рджрд┐рдП, рдЬрд┐рд╕рдореЗрдВ рдЖрдк рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХреЛрдб рдкрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд▓реЗрдЦ рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкреНрд░рд╕реНрддреБрдд рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдореБрдЦреНрдп рд░реБрдЪрд┐ рдкреИрджрд▓ рдпрд╛рддреНрд░реА рдорд╛рд░реНрдЧ рдХрд╛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╣реИ , рдЬреЛ рдЕрдХреНрд╖ рд╕рдорд╛рдпреЛрдЬрди рддрдВрддреНрд░ рдХреЗ рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде рд╕рднреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдПрдХ рд╕рд╛рде рд▓рд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдиреАрдЪреЗ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред


рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдЗрд╖реНрдЯрддрдорддрд╛, рдкреВрд░реНрдгрддрд╛ рдФрд░ рдЙрддреНрдкрд╛рджрди рдЧреБрдгрд╡рддреНрддрд╛ =) рд╣реЛрдиреЗ рдХрд╛ рджрд╛рд╡рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред


рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ SceneKit рдФрд░ UIKit рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмреАрдЪ рдХрд╛ рдЕрдВрддрд░ рднреА рдЗрд╕ рддрдереНрдп рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИ рдХрд┐ SceneKit рдкрд░ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╕рдордп, рд░реВрдЯ рдПрдВрдбрдкреЙрдЗрдВрдЯ (рдлрд┐рдирд┐рд╢ рдорд╛рд░реНрдХ) рдХреЗ рд▓рд┐рдП SCNNode рдСрдмреНрдЬреЗрдХреНрдЯ рд╕рд╛рдордЧреНрд░реА рдФрд░ рдЬреНрдпрд╛рдорд┐рддрд┐ рдХреЗ рд╕рд╛рде рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рджрд┐рдЦрд╛рдИ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрдмрдХрд┐ UIKit рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд╕реНрдХреНрд░реАрди рдкреНрд▓реЗрди рдкрд░ рдкреНрд░рдХреНрд╖реЗрдкрдг рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдиреЛрдб рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рд╕реНрдХреНрд░реАрди рдкрд░ рдирд┐рд╢рд╛рди рдХреЗ рдХреЗрдВрджреНрд░ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП)ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЬреНрдпрд╛рдорд┐рддрд┐ рдФрд░ рд╕рд╛рдордЧреНрд░реА рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдорд╛рд░реНрдЧ рдХреЗ рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ рдХреЗ SCNNode рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдХреИрдорд░реЗ рд╕реЗ рджреВрд░реА рджреЛ рддрд░рд╣ рд╕реЗ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИ - рдЕрдВрдХреЛрдВ рдХреЗ рднреМрдЧреЛрд▓рд┐рдХ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдпрд╛ рджреГрд╢реНрдп рдкрд░ рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдмреАрдЪ рд╡реЗрдХреНрдЯрд░ рдХреА рд▓рдВрдмрд╛рдИ рдХреЗ рд░реВрдк рдореЗрдВред рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдХреИрдорд░рд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдПрдХ SCNNode рдЧреБрдг рд╣реИред рдХреИрдорд░рд╛ рдиреЛрдб рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╣рдорд╛рд░реЗ рджреГрд╢реНрдп рдХреЗ pointOfView рдЧреБрдг рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред


рд╣рдордиреЗ рд╕реАрдЦрд╛ рдХрд┐ рдлрд┐рдирд┐рд╢ рдорд╛рд░реНрдХ рдиреЛрдб рдХреЗ рддреНрд░рд┐рдЬреНрдпрд╛ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рд╕рдордп рдкрд░ рдПрдХ рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рдмрд┐рдВрджреБ рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рд╕реАрдирд┐рдЯ рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдпреВрдЖрдИрдХреИрдЯ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрдиреЗ рдкрд░ рдлрд┐рдирд┐рд╢ рдорд╛рд░реНрдХ рдХреЗ рджреГрд╢реНрдп рдХреА рд╕реНрдерд┐рддрд┐ред рдпрд╣ рд╕рдордЭрдирд╛ рдмрд╛рдХреА рд╣реИ рдХрд┐ рдЗрди рдореВрд▓реНрдпреЛрдВ рдХреЛ рдЕрджреНрдпрддрди рдХрд░рдирд╛ рдХрдм рдЖрд╡рд╢реНрдпрдХ рд╣реИ? рдпрд╣ рд╕реНрдерд╛рди SCNSceneRendererDelegate рдСрдмреНрдЬреЗрдХреНрдЯ рд╡рд┐рдзрд┐ рд╣реИ:


renderer(_ renderer: SCNSceneRenderer, didRenderScene scene: SCNScene, atTime time: TimeInterval) 

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


рдПрдиреАрдореЗрд╢рди


рдЕрдВрдд рдЪрд┐рд╣реНрди рджреЗрд╡ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдЗрд╕ рдЪрд┐рд╣реНрди рдореЗрдВ рддрд░рдВрдЧ рдПрдиреАрдореЗрд╢рди рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝реЗред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ iOS рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдПрдирд┐рдореЗрд╢рди рдмрдирд╛рдирд╛ рдХреЛрдИ рдмрдбрд╝реА рдмрд╛рдд рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдЬрдм рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рдзрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЕрдкрдиреЗ рджреГрд╢реНрдп рдХреЗ рдлреНрд░реЗрдо рдХреЛ рд▓рдЧрд╛рддрд╛рд░ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рднрд╛рдЧ рдЧрдПред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдПрдирд┐рдореЗрд╢рди рд╕реНрдереИрддрд┐рдХ UIView рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВред рдЗрд╕реА рддрд░рд╣ рдХреА рд╕рдорд╕реНрдпрд╛ - рджреГрд╢реНрдп рдЬреНрдпрд╛рдорд┐рддрд┐ рдХреЗ рддреНрд░рд┐рдЬреНрдпрд╛ рдХрд╛ рдирд┐рд░рдВрддрд░ рдЕрджреНрдпрддрди, рдЬрдм SceneKit рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рд╕реНрдкрдВрджрд┐рдд рдПрдиреАрдореЗрд╢рди рд╕рд░реНрдХрд▓ рдХреЗ рдЖрдХрд╛рд░ (UIKit рдХреЗ рд▓рд┐рдП) рдФрд░ рдЧреЛрд▓реЗ рдХреЗ рддреНрд░рд┐рдЬреНрдпрд╛ рдХреЗ рджреГрд╢реНрдп рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рдЖрддрд╛ рд╣реИ (рджреГрд╢реНрдп рдХреЗ рд▓рд┐рдП)ред рд╣рд╛рдВ, рд╣рд╛рдВ, рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ UIKit рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдиреАрдореЗрд╢рди рдХреЛ рдХреНрд▓реЗрдпрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд╣рд╛рдиреА рдХрд╣рдиреЗ рдХреА рд╕рд░рд▓рддрд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рджреЛ рдлреНрд░реЗрдо рдХреЗ рд▓рд┐рдП рд╕рдордорд┐рдд рд░реВрдк рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред UIKit рдкрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдпрджрд┐ рдЖрдк рдЙрд╕ рдХреЛрдб рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдЬреЛ рдЙрд╕реА рдлрд╝реНрд░реЗрдо рдХреЛ рдореМрдЬреВрджрд╛ рдХреЛрдб рд╕реЗ рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдЬреЛ рджреГрд╢реНрдп рдлрд╝реНрд░реЗрдо рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдлрд╝реНрд░реЗрдо рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕реЗрдЯ рдХрд░рдХреЗ рдПрдиреАрдореЗрд╢рди рдмрд╛рдзрд┐рдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдордиреЗ UIView рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдореЗрд╢рди .scale.xy рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдПрдиреАрдореЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред SceneKit рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдЖрдкрдХреЛ SCNNode рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рд╕реНрдХреЗрд▓ рдкреНрд░реЙрдкрд░реНрдЯреА рдХрд╛ рдПрдиреАрдореЗрд╢рди рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ SceneKit рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдЪреНрдЫреА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ CoreAnimation рдХрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдирдпрд╛ API рд╕реАрдЦрдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред Yandex.Maps рдореЗрдВ рд▓реЗрдмрд▓ рдПрдиреАрдореЗрд╢рди рдХреЗ рд╕рдорд╛рди рдПрдиреАрдореЗрд╢рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдХреЛрдб рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:


 let animationGroup = CAAnimationGroup.init() animationGroup.duration = 1.0 animationGroup.repeatCount = .infinity let opacityAnimation = CABasicAnimation(keyPath: "opacity") opacityAnimation.fromValue = NSNumber(value: 1.0) opacityAnimation.toValue = NSNumber(value: 0.1) let scaleAnimation = CABasicAnimation(keyPath: "scale") scaleAnimation.fromValue = NSValue(scnVector3: SCNVector3(1.0, 1.0, 1.0)) scaleAnimation.toValue = NSValue(scnVector3: SCNVector3(1.2, 1.2, 1.2)) animationGroup.animations = [opacityAnimation, scaleAnimation] finishNode.addAnimation(animationGroup, forKey: "animations") 

рдмреЛрд░реНрдб


рд▓реЗрдЦ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ, рдореИрдВрдиреЗ рдорд╛рд░реНрдЧ рдХреЗ рдЕрдВрддрд┐рдо рдмрд┐рдВрджреБ рдХреА рджреВрд░реА рдХреЗ рд╕рд╛рде рдПрдХ рдмрд┐рд▓рдмреЛрд░реНрдб рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛, рдЬреЛ рдХрд┐ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдкрд╛рда рдХреЗ рд╕рд╛рде рдПрдХ рд▓реЗрдмрд▓ рд╣реИ рдЬреЛ рд╣рдореЗрд╢рд╛ рдлрд┐рдирд┐рд╢ рдорд╛рд░реНрдХ рдХреЗ рдКрдкрд░ рд╕реНрдерд┐рдд рд╣реЛрддрд╛ рд╣реИред рдкрд░рдВрдкрд░рд╛ рд╕реЗ, рдореИрдВ UIKit рдФрд░ SceneKit рдкрд░ рдХреНрд░рд┐рдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдЖрдиреЗ рд╡рд╛рд▓реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд░реЗрдЦрд╛рдВрдХрд┐рдд рдХрд░реВрдВрдЧрд╛, рдкреНрд░рддреНрдпреЗрдХ рд░реВрдкрд░реЗрдЦрд╛ рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдКрдВрдЧрд╛ред


рдЪрд▓реЛ UIKit рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдмрд┐рд▓рдмреЛрд░реНрдб рдПрдХ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдпреВрдЖрдИрдмреЗрд▓ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдкрд╛рда рдХреЛ рд▓рдЧрд╛рддрд╛рд░ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдорд╛рд░реНрдЧ рдХреЗ рдЕрдВрддрд┐рдо рдмрд┐рдВрджреБ рдХреА рджреВрд░реА рджрд┐рдЦрд╛рддрд╛ рд╣реИред рдЖрдЗрдП рд╣рдо рдЙрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рджреЗрдЦреЗрдВ рдЬреЛ рд╣рдо рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред


рдЦрддреНрдо-рд╕реНрдерд╛рди-рдЪрд┐рд╣реНрди-рдмреЛрд░реНрдб-рд╕рдорд╕реНрдпрд╛ рдХреЛ UIKit


рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рдлрд╝реНрд░реЗрдо рдореЗрдВ рд▓реЗрдмрд▓ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рдлрд╝реЛрди рдХреЛ рдШреБрдорд╛рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдлрд╝реНрд░реЗрдо рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдирд╣реАрдВ рд╣реЛрддрд╛ (рдпрд╣ рдЕрдЬреАрдм рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдпрджрд┐ рдпрд╣ рдирд╣реАрдВ рдерд╛)ред рдЙрд╕реА рд╕рдордп, рд╣рдо рдЪрд╛рд╣реЗрдВрдЧреЗ рдХрд┐ рд▓реЗрдмрд▓ рдкреГрдереНрд╡реА рдХреЗ рд╕рдорддрд▓ рдХреЗ рд╕рдорд╛рдирд╛рдВрддрд░ рдмрдирд╛ рд░рд╣реЗред


рдЦрддреНрдо-рд╕реНрдерд╛рди-рдЪрд┐рд╣реНрди-рдмреЛрд░реНрдб-рд╡рд╛рдВрдЫрд┐рдд- UIKit


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


рдЦрддреНрдо-рд╕реНрдерд╛рди-рдЪрд┐рд╣реНрди-рдмреЛрд░реНрдб-рд╕рдорд╛рдзрд╛рди UIKit


рдПрдХ рд╕рд░рд▓ рдХрд╛рд░реНрдп рдЬреЛ рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рд╕реНрдХреВрд▓ рдЬреНрдпрд╛рдорд┐рддрд┐ рдкрд╛рдареНрдпрдХреНрд░рдо рдХреА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЛ рд╕рд╛рдмрд┐рдд рдХрд░рддрд╛ рд╣реИред


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


рдЦрддреНрдо-рд╕реНрдерд╛рди-рдЪрд┐рд╣реНрди-рдмреЛрд░реНрдб-рд╕рдорд╕реНрдпрд╛ рдХреЛ scenekit


рдпрд╣ рд╕рдорд╕реНрдпрд╛ SCNBillboardConstraint API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рд▓ рдХреА рдЧрдИ рд╣реИред рд╣рдорд╛рд░реЗ рдиреЛрдб рдХреЗ рдХрд╕реИрд▓реЗ рдХреЗ рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐: рд╢реБрд▓реНрдХ рдЕрдХреНрд╖ Y рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдерд┐рд░рд╛рдВрдХ рдЬреЛрдбрд╝рдиреЗ рдкрд░, рд╣рдореЗрдВ рдПрдХ рдиреЛрдб рдорд┐рд▓рддрд╛ рд╣реИ рдЬреЛ рдЗрд╕рдХреЗ рд╕рдордиреНрд╡рдп рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд╡рд╛рдИ рдЕрдХреНрд╖ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдШреВрдорддрд╛ рд╣реИ, рддрд╛рдХрд┐ рд╣рдореЗрд╢рд╛ рдХреИрдорд░реЗ рдХреА рдУрд░ рдЙрдиреНрдореБрдЦ рд╣реЛред рдбреЗрд╡рд▓рдкрд░ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рдХрд╛рд░реНрдп рдЗрд╕ рдиреЛрдб рдХреЛ рд╕рд╣реА рдКрдВрдЪрд╛рдИ рдкрд░ рд░рдЦрдирд╛ рд╣реИ, рддрд╛рдХрд┐ рджреВрд░реА рд╡рд╛рд▓рд╛ рдмрд┐рд▓рдмреЛрд░реНрдб рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╣рдореЗрд╢рд╛ рджрд┐рдЦрд╛рдИ рджреЗред


 let billboardConstraint = SCNBillboardConstraint() billboardConstraint.freeAxes = SCNBillboardAxis.Y finishNode.constraints = [billboardConstraint] 

рд╕рд╣рд╛рдпрдХ рдЯреИрдЧ


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


рдЦрддреНрдо-рд╕реНрдерд╛рди-рдЪрд┐рд╣реНрди-рд╕рдВрдХреЗрдд-рд╕рд┐рдВрд╣рд╛рд╡рд▓реЛрдХрди


рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдкрд╛рдардХреЛрдВ рдореЗрдВ рд╕реЗ рдХреБрдЫ рдиреЗ рдХреБрдЫ рдЦреЗрд▓реЛрдВ рдореЗрдВ рдЗрд╕реА рддрд░рд╣ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ рд╣реИ, рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдирд┐рд╢рд╛рдиреЗрдмрд╛рдЬреЛрдВ рдиреЗред рдЬрдм рд╣рдордиреЗ рдЗрд╕ UI рддрддреНрд╡ рдХреЛ рд▓реЗрдЖрдЙрдЯ рдореЗрдВ рджреЗрдЦрд╛ рддреЛ рд╣рдорд╛рд░реА рдЯреАрдо рдХреЛ рдЖрд╢реНрдЪрд░реНрдп рд╣реБрдЖред рдореБрдЭреЗ рддреБрд░рдВрдд рдпрд╣ рдХрд╣рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд╕рд╣реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдПрдХ рдШрдВрдЯреЗ рд╕реЗ рдЕрдзрд┐рдХ рдХреЗ рдкреНрд░рдпреЛрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдВрддрд┐рдо рдкрд░рд┐рдгрд╛рдо рдЦрд░реНрдЪ рдХрд┐рдП рдЧрдП рд╕рдордп рдХреЗ рд▓рд╛рдпрдХ рд╣реИред рд╣рдо рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдХреЗ рд╢реБрд░реВ рдХрд┐рдпрд╛, рдЕрд░реНрдерд╛рддреН:


  • рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рдХрд┐рд╕реА рднреА рдЕрднрд┐рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рд▓рд┐рдП, рд▓реЗрдмрд▓ рд╕реНрдХреНрд░реАрди рдХреА рд╕реАрдорд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЪрд▓рддрд╛ рд╣реИ,
  • рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдорд╛рд░реНрдЧ рдХреЗ рдЕрдВрддрд┐рдо рдмрд┐рдВрджреБ рдкрд░ 180 рдбрд┐рдЧреНрд░реА рдкрд░ рдореБрдбрд╝ рдЧрдпрд╛ рд╣реИ, рддреЛ рд▓реЗрдмрд▓ рд╕реНрдХреНрд░реАрди рдХреЗ рдиреАрдЪреЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИ,
  • рд╕рдордп рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдХреНрд╖рдг рдкрд░, рдирд┐рд╢рд╛рди рдХреА рдУрд░ рдореБрдбрд╝рдирд╛ рдорд╛рд░реНрдЧ рдХреЗ рдЕрдВрддрд┐рдо рдмрд┐рдВрджреБ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЫреЛрдЯрд╛ рдореЛрдбрд╝ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдордиреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╢реБрд░реВ рдХрд┐рдпрд╛ред рд▓рдЧрднрдЧ рддреБрд░рдВрдд, рд╣рдо рдЗрд╕ рдирд┐рд╖реНрдХрд░реНрд╖ рдкрд░ рдкрд╣реБрдВрдЪреЗ рдХрд┐ UIKit рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рддрд┐рдкрд╛рджрди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛ рд╕рдордп рдореЗрдВ рд╣рд░ рдкрд▓ рдЗрд╕ рд▓реЗрдмрд▓ рдХреЗ рдХреЗрдВрджреНрд░ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдерд╛ред рдлрд┐рдирд┐рд╢ рдорд╛рд░реНрдХ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЗрд╕ рддрд░рд╣ рдХреЗ рдХрд╛рд░реНрдп рдореЗрдВ рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдХрд╛ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕рдХреЗ рд╕рдорд╛рдзрд╛рди рдкрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдзреНрдпрд╛рди рдирд╣реАрдВ рджреВрдВрдЧрд╛ред рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдХреЗрд╡рд▓ рд╕рд╣рд╛рдпрдХ рд▓реЗрдмрд▓ рдХреЗ рдХреЗрдВрджреНрд░ рдХреЛ рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рд╡рд┐рд╡рд░рдг рджреВрдВрдЧрд╛, рдФрд░ рд╕реНрд░реЛрдд рдХреЛрдб рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред


рдЦреЛрдЬ рдХреЗрдВрджреНрд░ рдПрд▓реНрдЧреЛрд░рд┐рдердо рдЦреЛрдЬ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо:


  1. рдмрд┐рдВрджреБ рдХреЗ рднреМрдЧреЛрд▓рд┐рдХ рд╕рдордиреНрд╡рдп рд╕реЗ рдкреНрд░рд╛рдкреНрдд рджреГрд╢реНрдп рдкрд░ рдорд╛рд░реНрдЧ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП SCNNode рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдБ,
  2. рд╕реНрдХреНрд░реАрди рдкреНрд▓реЗрди рдкрд░ рдПрдХ рдмрд┐рдВрджреБ рдХрд╛ рдкреНрд░рдХреНрд╖реЗрдкрдг рдЦреЛрдЬреЗрдВ,
  3. рд╕реНрдХреНрд░реАрди рдХреЗ рд╕рдордиреНрд╡рдп рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рд╕реНрдХреНрд░реАрди рдХреА рд╕реАрдорд╛рдУрдВ рдХреЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд╕рд╛рде рдкрд╛рдпрд╛ рдкреНрд░рдХреНрд╖реЗрдкрдг рдХреЗ рдмрд┐рдВрджреБ рддрдХ рд╕реНрдХреНрд░реАрди рдХреЗ рдХреЗрдВрджреНрд░ рд╕реЗ рдЦрдВрдб рдХреЗ рдЪреМрд░рд╛рд╣реЗ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдВред

рдЦрддреНрдо-рд╕реНрдерд╛рди-рдЪрд┐рд╣реНрди-рд╕рдВрдХреЗрдд-рд╕рдорд╛рдзрд╛рди


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


рд░реВрдЯ рдкреЙрд▓реАрд▓рд╛рдЗрди


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


рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐, рдбрд┐рдЬрд╛рдЗрди рд╕реЗ, рддреАрд░ рдПрдХ рджреВрд╕рд░реЗ рд╕реЗ 3 рдореАрдЯрд░ рдХреА рджреВрд░реА рдкрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдЖрдк рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ (рддреАрд░) рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рддреЗ рд╣реИрдВ рдЬреЛ рд▓рдЧрднрдЧ 1 рдХрд┐рдореА рд▓рдВрдмреЗ рдорд╛рд░реНрдЧ рдХреЗ рд╕рд╛рде рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рдпрд╣ рд▓рдЧрднрдЧ 330 рдЯреБрдХрдбрд╝реЗ рд╣реЛрдВрдЧреЗред рдЙрд╕реА рд╕рдордп, рдкреНрд░рддреНрдпреЗрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдорд╛рд░реНрдЧ рдХреЗ рдЕрдкрдиреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд╕рд╛рде рдЖрдВрджреЛрд▓рди рдХрд╛ рдПрдХ рдПрдиреАрдореЗрд╢рди рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд▓рдЧрднрдЧ 100-150 рдореАрдЯрд░ рдХреА рджреВрд░реА рдкрд░ рдордВрдЪ рдкрд░ рдХреИрдорд░реЗ рдХреА рд╕реНрдерд┐рддрд┐ рд╕реЗ рджреВрд░рд╕реНрде рддреАрд░ рдЙрдирдХреЗ рдЫреЛрдЯреЗ рдЖрдХрд╛рд░ рдХреЗ рдХрд╛рд░рдг рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдЕрджреГрд╢реНрдп рд╣реИрдВред рдЗрди рдХрд╛рд░рдХреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╕рднреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдиреНрд╣реЗрдВ рдорд╛рд░реНрдЧ рд╕реЗ 100 рдореАрдЯрд░ рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣рдЯрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╕рдордп-рд╕рдордп рдкрд░ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╕реЗрдЯ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рдкрд░реНрдпрд╛рдкреНрдд рдорд╛рддреНрд░рд╛ рдореЗрдВ рджреГрд╢реНрдп рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЕрдирд╛рд╡рд╢реНрдпрдХ рджреГрд╢реНрдп рдЧрдгрдирд╛ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдмреИрдЯрд░реА рдХреЛ рдмрдЪрд╛рддреЗ рд╣реИрдВред


рдорд╛рд░реНрдЧ-рдкреЙрд▓реАрд▓рд╛рдЗрди-рд╕рд┐рдВрд╣рд╛рд╡рд▓реЛрдХрди


рдЖрдЗрдП рдореБрдЦреНрдп рдЪрд░рдгреЛрдВ рдХреЛ рджреЗрдЦреЗрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЕрдВрддрд┐рдо рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдорд╣рд╕реВрд╕ рдХрд░рдирд╛ рдерд╛:


  • рдорд╛рд░реНрдЧ рдЕрдиреБрднрд╛рдЧ рдХрд╛ рдЪрдпрди рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╣рдо рдЖрджрд┐рдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВрдЧреЗ,
  • 3 рдбреА рдореЙрдбрд▓ рдХрд╛ рдирд┐рд░реНрдорд╛рдг,
  • рдПрдиреАрдореЗрд╢рди рдирд┐рд░реНрдорд╛рдг
  • рдПрдХ рдорд╛рд░реНрдЧ рдХреЗ рд╕рд╛рде рдбреНрд░рд╛рдЗрд╡рд┐рдВрдЧ рдХрд░рддреЗ рд╕рдордп рдЕрджреНрдпрддрди рдХрд░реЗрдВред

рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рднреВрдЦрдВрдб рдХрд╛ рдЪрдпрди рдХрд░рдирд╛


рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рд╣рдо рдкреВрд░реЗ рдорд╛рд░реНрдЧ рдХреЗ рд▓рд┐рдП рддреАрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╖реНрдЯрддрдо рдЕрдиреБрднрд╛рдЧ рдЪреБрдиреЗрдВред рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рд╕рдордп рдкрд░ рдЦрдВрдб рдХреА рдкрд╕рдВрдж рдореЗрдВ рдирд┐рдХрдЯрддрдо рдорд╛рд░реНрдЧ рдЦрдВрдб (рдорд╛рд░реНрдЧ рдЦрдВрдб / рдЦрдВрдбреЛрдВ рдХрд╛ рдХреНрд░рдо) рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдорд╛рд░реНрдЧ рдХреЗ рдЕрдВрддрд┐рдо рдмрд┐рдВрджреБ рдХреА рдУрд░ рдирд┐рдХрдЯрддрдо рдорд╛рд░реНрдЧ рд╕реЗ рдЦрдВрдбреЛрдВ рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ рдЬрдм рддрдХ рдХрд┐ рдЙрдирдХреА рдХреБрд▓ рд▓рдВрдмрд╛рдИ 100 рдореАрдЯрд░ рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддреАред


рдорд╛рд░реНрдЧ-рдкреЙрд▓реАрд▓рд╛рдЗрди рдорд╛рд░реНрдЧ-рднрд╛рдЧ-рдЪрдпрди


3 рдбреА рдореЙрдбрд▓ рдирд┐рд░реНрдорд╛рдг


рдЖрдЗрдП рд╣рдо рдПрдХ 3 рдбреА рдореЙрдбрд▓ рдмрдирд╛рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЖрдкрдХреЛ рдПрдХ рд╕рд╛рдзрд╛рд░рдг 3D рдореЙрдбрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП (рд╣рдорд╛рд░реЗ рддреАрд░ рдХреА рддрд░рд╣) рдХрд┐рд╕реА рднреА 3D рд╕рдВрдкрд╛рджрдХ рдХреЛ рдЦреЛрд▓рдирд╛ рд╣реЛрдЧрд╛, рдХреБрдЫ рд╕рдордп рдЗрд╕реЗ рдорд╣рд╛рд░рдд рд╣рд╛рд╕рд┐рд▓ рдХрд░рдиреЗ рдФрд░ рдЗрд╕ рдореЙрдбрд▓ рдХреЛ рдмрдирд╛рдиреЗ рдореЗрдВ рд▓рдЧрд╛рдирд╛ рд╣реЛрдЧрд╛ред рдпрджрд┐ рдЖрдкрдХреА рдЯреАрдо рдХреЗ рд▓реЛрдЧреЛрдВ рдХреЛ 3D рдореЙрдбрд▓рд┐рдВрдЧ рдореЗрдВ рдЕрдиреБрднрд╡ рд╣реИ, рдпрд╛ рдЙрдирдХреЗ рдкрд╛рд╕ рд╕реАрдЦрдиреЗ рдХрд╛ рд╕рдордп рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 3DMax (рдФрд░ рдЗрд╕реЗ рдЦрд░реАрджрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП), рддреЛ рдЖрдк рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рднрд╛рдЧреНрдпрд╢рд╛рд▓реА рд╣реИрдВред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рдордп, рд╣рдордореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдХреЛрдИ рд╡рд┐рд╢реЗрд╖ рдЕрдиреБрднрд╡ рдирд╣реАрдВ рдерд╛, рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЦрд╛рд▓реА рд╕рдордп рдирд╣реАрдВ рдерд╛, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдПрдХ рдореЙрдбрд▓ рдмрдирд╛рдирд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдмреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рддрд╛рддреНрдХрд╛рд▓рд┐рдХ рд╕рд╛рдзрдиреЛрдВ рдХреЗ рд╕рд╛рдеред рдореЗрд░рд╛ рдорддрд▓рдм рдХреЛрдб рдореЗрдВ рдореЙрдбрд▓ рдХрд╛ рд╡рд░реНрдгрди рд╣реИред рдпрд╣ рд╕рдм рддреНрд░рд┐рдХреЛрдг рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ 3D рдореЙрдбрд▓ рдХреА рдкреНрд░рд╕реНрддреБрддрд┐ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реБрдЖред рддрдм рд╣рдореЗрдВ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдореЙрдбрд▓ рдХреЗ рд╕рдордиреНрд╡рдп рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдЗрди рддреНрд░рд┐рдХреЛрдгреЛрдВ рдХреЗ рдХреЛрдиреЗ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЛ рдвреВрдВрдврдирд╛ рдерд╛, рдФрд░ рдлрд┐рд░ рддреНрд░рд┐рдХреЛрдг рдХреЗ рдХреЛрдиреЗ рдХреЗ рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдмрдирд╛рдПрдВред рд╣рдорд╛рд░реЗ рдирд┐рдкрдЯрд╛рди рдореЗрдВ рдЗрд╕ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде, рд╣рдо SceneKit рдореЗрдВ рд╕реАрдзреЗ рдЖрд╡рд╢реНрдпрдХ рдЬреНрдпрд╛рдорд┐рддрд┐ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдк рд╣рдорд╛рд░реЗ рдЬреИрд╕реЗ рдПрдХ рдореЙрдбрд▓ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣:


 class ARSCNArrowGeometry: SCNGeometry { convenience init(material: SCNMaterial) { let vertices: [SCNVector3] = [ SCNVector3Make(-0.02, 0.00, 0.00), // 0 SCNVector3Make(-0.02, 0.50, -0.33), // 1 SCNVector3Make(-0.10, 0.44, -0.50), // 2 SCNVector3Make(-0.22, 0.00, -0.39), // 3 SCNVector3Make(-0.10, -0.44, -0.50), // 4 SCNVector3Make(-0.02, -0.50, -0.33), // 5 SCNVector3Make( 0.02, 0.00, 0.00), // 6 SCNVector3Make( 0.02, 0.50, -0.33), // 7 SCNVector3Make( 0.10, 0.44, -0.50), // 8 SCNVector3Make( 0.22, 0.00, -0.39), // 9 SCNVector3Make( 0.10, -0.44, -0.50), // 10 SCNVector3Make( 0.02, -0.50, -0.33), // 11 ] let sources: [SCNGeometrySource] = [SCNGeometrySource(vertices: vertices)] let indices: [Int32] = [0,3,5, 3,4,5, 1,2,3, 0,1,3, 10,9,11, 6,11,9, 6,9,7, 9,8,7, 6,5,11, 6,0,5, 6,1,0, 6,7,1, 11,5,4, 11,4,10, 9,4,3, 9,10,4, 9,3,2, 9,2,8, 8,2,1, 8,1,7] let geometryElements = [SCNGeometryElement(indices: indices, primitiveType: .triangles)] self.init(sources: sources, elements: geometryElements) self.materials = [material] } } static func arrowBlue() -> SCNGeometry { let material = SCNMaterial() material.diffuse.contents = UIColor.blue material.lightingModel = .constant return ARSCNArrowGeometry(material: material) } 

рдЕрдВрддрд┐рдо рдкрд░рд┐рдгрд╛рдо рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:


рдорд╛рд░реНрдЧ-рдкреЙрд▓реАрд▓рд╛рдЗрди-рддреАрд░-рдореЙрдбрд▓


рд░реВрдЯ рд▓рд╛рдЗрди рдПрдиреАрдореЗрд╢рди


рдорд╛рд░реНрдЧ рдХреА рдПрдХ рдПрдирд┐рдореЗрдЯреЗрдб рд░реЗрдЦрд╛ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд░рд╛рд╕реНрддреЗ рдкрд░ рдЕрдЧрд▓рд╛ рдХрджрдо рд╕реНрд╡рдпрдВ рдПрдиреАрдореЗрд╢рди рдмрдирд╛рдиреЗ рдХрд╛ рдЪрд░рдг рдерд╛ред рд▓реЗрдХрд┐рди рдПрдиреАрдореЗрд╢рди рдХреЛ рдорд╣рд╕реВрд╕ рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдХреНрдпрд╛ рд╣реИ, рдЬреЛ рдЕрдВрддрд┐рдо рд░реВрдк рдореЗрдВ рджрд┐рдЦрддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рддреАрд░ рдорд╛рд░реНрдЧ рдХреЗ рдЪрдпрдирд┐рдд рдЦрдВрдб рдХреЗ рд╢реБрд░реБрдЖрддреА рдмрд┐рдВрджреБ рдкрд░ рдЕрдкрдирд╛ рдЖрдВрджреЛрд▓рди рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕ рдЦрдВрдб рдХреЗ рдЕрдВрдд рддрдХ рдорд╛рд░реНрдЧ рдХреЗ рд╕рд╛рде "рддреИрд░рддрд╛ рд╣реИ"?



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


рдорд╛рд░реНрдЧ-рдкреЙрд▓реАрд▓рд╛рдЗрди рдорд╛рд░реНрдЧ-рдкрд╛рд░реНрдЯ-рд╡рд┐рднрд╛рдЬрди


рдкреНрд░рддреНрдпреЗрдХ рдЦрдВрдб рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ, рд╣рдо рддреАрд░ рдХреЗ SCNNode рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдПрдиреАрдореЗрд╢рди рдЗрд╕рдХреЗ рд╕реЗрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдЪрд▓рддреЗ рд╣реИрдВред


рдорд╛рд░реНрдЧ-рдкреЙрд▓реАрд▓рд╛рдЗрди-рддреАрд░-рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реНрдерд┐рддрд┐


рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдПрдиреАрдореЗрд╢рди рдЦрдВрдб рдореЗрдВ рдХрднреА-рдХрднреА рдПрдХ рдЦрдВрдб рд╣реЛрддрд╛ рд╣реИ, рдХрднреА-рдХрднреА рджреЛ рдпрд╛ рдЕрдзрд┐рдХ рдХрд╛ред рдпрд╣ рд╕рдм рдХрджрдо (рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ - 3 рдореАрдЯрд░) рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рддреАрд░ рдФрд░ рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЗ рдмреАрдЪ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдорд╛рд░реНрдЧ рдмрдирд╛рддреЗ рд╣реИрдВред


рдПрдХ рддреАрд░ рдПрдиреАрдореЗрд╢рди рджреЛ рдЪрд░рдгреЛрдВ рдХрд╛ рдПрдХ рдХреНрд░рдо рд╣реИ:


  • рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд░реЛрдЯреЗрд╢рди рдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХреЛрдг рдХреЗ рд╕рд╛рде,
  • рдЦрдВрдбреЛрдВ рдХреЗ рдХрдиреЗрдХреНрд╢рди рдмрд┐рдВрджреБрдУрдВ рдкрд░ рдШреБрдорд╛рд╡ рдХреЗ рд╕рд╛рде рдЦрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдЕрдиреБрдХреНрд░рдоред

рдпреЛрдЬрдирд╛рдмрджреНрдз рд░реВрдк рд╕реЗ, рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:


рдорд╛рд░реНрдЧ-рдкреЙрд▓реАрд▓рд╛рдЗрди-рддреАрд░-anitaion-рдЪрд░рдгреЛрдВ


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


рдЗрд╕ рдкрд░, рдореИрдВ рдкреНрд░рддрд┐рдкрд╛рджрди рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдкрд╣рд▓реБрдУрдВ рдХреЗ рд╡рд┐рдЪрд╛рд░ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдФрд░ рдореБрдЦреНрдп рднрд╛рдЧ рдкрд░ рдЬрд╛рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддрд╛ рд╣реВрдВ - рд╡рд╕реНрддреБрдУрдВ рдХреЗ рднреМрдЧреЛрд▓рд┐рдХ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рджреНрд╡рд╛рд░рд╛ рдордВрдЪ рдкрд░ рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕реНрдерд┐рддрд┐ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдгред


рджреГрд╢реНрдп рдкрд░ рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреА рд╕реНрдерд┐рддрд┐ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг


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


  • рдЬрд┐рдпреЛрдбреЗрд╕рд┐рдХ (рдпрд╛ рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП рднреМрдЧреЛрд▓рд┐рдХ) рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ - рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдореЗрдВ рд╡рд╕реНрддреБрдУрдВ (рдорд╛рд░реНрдЧ рдмрд┐рдВрджреБрдУрдВ) рдХреА рд╕реНрдерд┐рддрд┐,
  • рдХрд╛рд░реНрдЯреЗрд╢рд┐рдпрди рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ - рджреГрд╢реНрдп рдкрд░ рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕реНрдерд┐рддрд┐ (ARKit рдореЗрдВ)ред рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рджреГрд╢реНрдп рдХреА рд╕рдордиреНрд╡рдп рдкреНрд░рдгрд╛рд▓реА рд╕рдордиреНрд╡рдп рдкреНрд░рдгрд╛рд▓реА ARKit (ARSCNView рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ) рдХреЗ рд╕рд╛рде рдореЗрд▓ рдЦрд╛рддреА рд╣реИред

рдПрдХ рд╕рдордиреНрд╡рд┐рдд рдкреНрд░рдгрд╛рд▓реА рд╕реЗ рджреВрд╕рд░реЗ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╕рдВрднрд╡ рд╣реИ рдХрд┐ ARKit рдореЗрдВ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдореАрдЯрд░ рдореЗрдВ рдорд╛рдкрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рджреЛ geodetic рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЗ рдмреАрдЪ рдСрдлрд╕реЗрдЯ рдХреЛ рдмрдбрд╝реА рд╕рдЯреАрдХрддрд╛ рдХреЗ рд╕рд╛рде рдореАрдЯрд░ рдореЗрдВ рдСрдлрд╕реЗрдЯ рдФрд░ ARKit рд╕рдордиреНрд╡рдп рдкреНрд░рдгрд╛рд▓реА рдХреЗ рдПрдХреНрд╕ рдФрд░ рдЬреЗрдб рдХреБрд▓реНрд╣рд╛рдбрд╝рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЕрдиреБрд╡рд╛рдж рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛ рджреВрдВ рдХрд┐ рднреВ-рд╕реНрдерд┐рд░ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рджреЗрд╢рд╛рдВрддрд░ рдФрд░ рдЕрдХреНрд╖рд╛рдВрд╢ рдХреЗ рд╕рд╛рде рдмрд┐рдВрджреБ рд╣реЛрддреЗ рд╣реИрдВред


рдЖрдЗрдП рднреВрдЧреЛрд▓ рдХреЗ рдкрд╛рдареНрдпрдХреНрд░рдо рд╕реЗ рдРрд╕реА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЛ рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рд╕рдорд╛рдирддрд╛рдПрдВ рдФрд░ рд╢рд┐рд░реЛрдмрд┐рдВрджреБ, рдФрд░ рдЙрдирдХреЗ рдореВрд▓ рдЧреБрдг:


  • рд╕рдорд╛рдирд╛рдВрддрд░ рдЕрдХреНрд╖рд╛рдВрд╢ рдХреЗ рдПрдХ рдбрд┐рдЧреНрд░реА рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде рдПрдХ рдкрдВрдХреНрддрд┐ рд╣реИред рд╡рд┐рднрд┐рдиреНрди рд╕рдорд╛рдирддрд╛рдУрдВ рдХреА рд▓рдВрдмрд╛рдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реЛрддреА рд╣реИред
  • рдореЗрд░рд┐рдбрд┐рдпрди - рджреЗрд╢рд╛рдВрддрд░ рдХреЗ рдбрд┐рдЧреНрд░реА рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде рдПрдХ рдкрдВрдХреНрддрд┐ред рд╕рднреА рдордзреНрдпрд╛рд╣реНрди рд░реЗрдЦрд╛рдУрдВ рдХреА рд▓рдВрдмрд╛рдИ рд╕рдорд╛рди рд╣реЛрддреА рд╣реИред

рдЕрдм рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЗ рд╕рд╛рде рджреЛ рдЬрд┐рдпреЛрдбреЗрдЯрд┐рдХ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЗ рдмреАрдЪ, рдореАрдЯрд░ рдореЗрдВ рдСрдлрд╕реЗрдЯ рдХреА рдЧрдгрдирд╛ рдХреИрд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЗрдирд▓рд╛рдЗрди (lat_1, lon_1) рдФрд░ рдЗрдирд▓рд╛рдЗрди (lat_2, lon_2) :


\ Delta x = \ Delta lon \ times meterInLonDegree (lat_ {0}) ред \ Delta z = \ Delta lat \ times рдореАрдЯрд░InLatDegree


meterInLonDegree (\ Alpha) = \ frac {2 \ pi R_ \ text {рднреВрдорд┐} \ cos \ left (\ рдЕрд▓реНрдлрд╛ \ рджрд╛рдПрдБ)} {360 ^ {┬░}} ред meterInLatDegree = \ frac {2 \ pi R_ \ text {рднреВрдорд┐}} {360 ^ {┬░}}


рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг

рдЬрд┐рдпреЛрдбреЗрдЯрд┐рдХ рдореЗрдВ рд╡рд┐рд╕реНрдерд╛рдкрди рдХреЗрд╡рд▓ рдЫреЛрдЯреЗ рд╡рд┐рд╕реНрдерд╛рдкрди рдкрд░ рд░реЗрдЦреАрдп рд░реВрдк рд╕реЗ рдорд╛рдирдЪрд┐рддреНрд░реЛрдВ рдХреЛ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХрд░рддрд╛ рд╣реИред рдмрдбрд╝реЗ рд╡рд┐рд╕реНрдерд╛рдкрдиреЛрдВ рдкрд░, рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рдЕрднрд┐рдиреНрди рд░реВрдк рд╕реЗ рд▓реЗрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред


рдЕрдм рдЬрдм рд╣рдо рдПрдХ рд╕рдордиреНрд╡рдп рдкреНрд░рдгрд╛рд▓реА рд╕реЗ рджреВрд╕рд░реЗ рдореЗрдВ рдСрдлрд╕реЗрдЯ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдПрдХ рд╕рдВрджрд░реНрдн рдмрд┐рдВрджреБ рдкрд░ рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдПрдХ рдмрд┐рдВрджреБ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рднреМрдЧреЛрд▓рд┐рдХ рд╕рдордиреНрд╡рдп рдФрд░ ARKit рдореЗрдВ рд╕рдордиреНрд╡рдп (рдордВрдЪ рдкрд░ рд╕рдордиреНрд╡рдп) рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдмрд┐рдВрджреБ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдордВрдЪ рдкрд░ рдХрд┐рд╕реА рднреА рд╡рд╕реНрддреБ рдХреЗ рд╕рдордиреНрд╡рдп рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рдХреЗ рднреМрдЧреЛрд▓рд┐рдХ рд╕рдордиреНрд╡рдп рдХреЛ рдЬрд╛рди рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдкрд░реЛрдХреНрдд рд╕реВрддреНрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП, рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
рд╕рдВрд╡рд░реНрдзрд┐рдд рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рд╕рддреНрд░ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ, рд╣рдордиреЗ рдЕрдкрдиреЗ рднреМрдЧреЛрд▓рд┐рдХ рд╕рдордиреНрд╡рдп рдХреЗ рд▓рд┐рдП CoreLocation рд╕реЗ рдкреВрдЫрд╛ рдФрд░ рдЗрд╕реЗ рддреБрд░рдВрдд рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ - рдЗрдирд▓рд╛рдЗрди (lat_0, lon_0) ред рдЗрд╕ рддрдереНрдп рдХреЛ рдпрд╛рдж рдХрд░рддреЗ рд╣реБрдП рдХрд┐ ARKit рд╕рдордиреНрд╡рдп рдкреНрд░рдгрд╛рд▓реА рдХреА рдЙрддреНрдкрддреНрддрд┐ рдЙрд╕ рдмрд┐рдВрджреБ рдкрд░ рд╕рддреНрд░ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╣реИ рдЬрд╣рд╛рдВ рдбрд┐рд╡рд╛рдЗрд╕ рд╕реНрдерд┐рдд рд╣реИ, рд╣рдореЗрдВ рд╕рдВрджрд░реНрдн рдмрд┐рдВрджреБ рдорд┐рд▓рд╛, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рднреМрдЧреЛрд▓рд┐рдХ рд╕рдордиреНрд╡рдп рдФрд░ рджреГрд╢реНрдп рдкрд░ рд╕рдордиреНрд╡рдп рдЬрд╛рдирддреЗ рд╣реИрдВред \ рдЗрдирд▓рд╛рдЗрди (x_0, y_0, z_0) = (0,0,0) ред рд╣рдореЗрдВ рдПрдХ рднреМрдЧреЛрд▓рд┐рдХ рд╕рдордиреНрд╡рдп рдХреЗ рд╕рд╛рде рд╡рд╕реНрддреБ рдХреЗ рджреГрд╢реНрдп рдкрд░ рд╕рдордиреНрд╡рдп рдХреЛ рдЦреЛрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЗрдирд▓рд╛рдЗрди (lat_1, lon_1) ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рднреМрдЧреЛрд▓рд┐рдХ рд╕рдордиреНрд╡рдп рдФрд░ рд╣рдорд╛рд░реЗ рд╕рдВрджрд░реНрдн рдмрд┐рдВрджреБ рдХреЗ рднреМрдЧреЛрд▓рд┐рдХ рд╕рдордиреНрд╡рдп рдХреЗ рдмреАрдЪ рдореАрдЯрд░ рдореЗрдВ рдСрдлрд╕реЗрдЯ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдВ, рдФрд░ рдлрд┐рд░ рд╕рдВрджрд░реНрдн рдмрд┐рдВрджреБ рдХреЗ рджреГрд╢реНрдп рдкрд░ рд╕рдордиреНрд╡рдп рдХреЗ рд▓рд┐рдП рдорд┐рд▓рд╛ рд╣реБрдЖ рдСрдлрд╕реЗрдЯ рдЬреЛрдбрд╝реЗрдВред рджреГрд╢реНрдп рдкрд░ рдкрд░рд┐рдгрд╛рдореА рд╕рдордиреНрд╡рдп рд╡рд╛рдВрдЫрд┐рдд рд╣реЛрдЧрд╛ред


рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ-рд░реВрдкрд╛рдВрддрд░рдг-рд╡рд╕реНрддреБ-рд╕реНрдерд┐рддрд┐-рдСрди-рджреГрд╢реНрдп


рдореИрдВ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдкрд╛рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рджреГрд╢реНрдп рдХреА рд╕реНрдерд┐рддрд┐ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдореЗрдВ рдХреЗрд╡рд▓ рд╡рд╕реНрддреБ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реЛрдЧреА, рдпрджрд┐ рджреГрд╢реНрдп рд╕рдордиреНрд╡рдп рдкреНрд░рдгрд╛рд▓реА рдХреЗ рдПрдХреНрд╕ / рдЬреЗрдб рдЕрдХреНрд╖ рдХреЛ рджрдХреНрд╖рд┐рдг / рдкреВрд░реНрд╡ рджрд┐рд╢рд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╕рдВрд░реЗрдЦрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХреНрд╕рд┐рд╕ рд╕рдВрд░реЗрдЦрдг, рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рд╡рд┐рд╢реНрд╡рд╡реНрдпрд╛рдкреА рдзреНрд╡рдЬ рдХреЛ gravitiAndHeading рдкрд░ рд╕реЗрдЯ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкреЛрд╕реНрдЯ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдХрд╣рд╛, рдпрд╣ рд╣рдореЗрд╢рд╛ рдорд╛рдорд▓реЗ рд╕реЗ рджреВрд░ рд╣реИред


рдЖрдЗрдП рд╕рдВрджрд░реНрдн рдмрд┐рдВрджреБ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рд╡рд┐рдзрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЕрдиреБрдорд╛рди рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЛ рдкреЗрд╢ рдХрд░рддреЗ рд╣реИрдВ - рдордВрдЪ рдкрд░ рднреМрдЧреЛрд▓рд┐рдХ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдФрд░ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХрд╛ рдПрдХ рд╕реЗрдЯред


рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ-рд░реВрдкрд╛рдВрддрд░рдг рдЕрдиреБрдорд╛рди рдкрд░рд┐рднрд╛рд╖рд╛


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


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


ARKit + CoreLocation рдЕрд╡рдзрд╛рд░рдгрд╛:


  • рдЬрдм CLLocationManager рд╕реЗ CLLocation рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣рд╛ рд╣реИ
    • scene.pointOfView.worldPosition рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджреГрд╢реНрдп рдкрд░ рдПрдХ рд╕реНрдерд┐рддрд┐ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░реЗрдВ
    • рдЗрд╕ рд╕рдордиреНрд╡рдп рдЬреЛрдбрд╝реА (рдЕрдиреБрдорд╛рди) рдХреЛ рдмрдлрд╝рд░ рдореЗрдВ рд╕рд╣реЗрдЬреЗрдВ
  • рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рд╕рдЯреАрдХ рд╕реНрдерд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
    • рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдЕрдиреБрдорд╛рди рдЪреБрдиреЗрдВ
    • рдордВрдЪ рдкрд░ рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдФрд░ рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рдЕрдиреБрдорд╛рди рдХреЗ рдордВрдЪ рдкрд░ рд╕реНрдерд┐рддрд┐ рдХреЗ рдмреАрдЪ рдСрдлрд╕реЗрдЯ рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдВ

, , CoreLocation, .


, ┬л ┬╗. , .


(, ):


  • ( horizontalAccuracy),
  • ,
  • 100 .

CoreLocation . , , CoreLocation , 100 .


, . , , ( 100 ).



, X/Z ARKit / . ARKit , , .


рдХреНрдпреЛрдВ?

, (, IKEA, ), Y ARKit тАУ , . gravity worldAlignment.


, . , , , . . AR . , , , , . AR.



, . , \inline t_1 CLLocationManager \inline (lat_1,lon_1) тАФ \inline (x_1,z_1) ред \inline t_2 CLLocationManager тАФ \inline (lat_2,lon_2) \inline (x_2,z_2) рдХреНрд░рдорд╢рдГред


ARKit тАФ \inline (\Delta x,\Delta z) 2 CoreLocation \inline t_2 ред \inline (lat_2,lon_2) \inline (lat_{2calc},lon_{2calc}) ред , CoreLocation . . ARKit /.


coordinates-conversion-correction-angle-problem


ARKit Y? . :


  1. ,
  2. ,
  3. ,
  4. ,
  5. .

. . CLLocationManager' , ( ), ( ).


?

. , , . , , GPS .


1, 2 : \inline initialBearing(1,2) рдФрд░ \inline initialBearing(1,2_{calc}) , \inline 2_{calc} тАУ 2, ARKit. \inline initialBearing(a,b) ( Bearing).


coordinates-conversion-correction-angle-calculation-for-pair


. , ? , , , , . , , , horizontalAccuracy. , , , . :


coordinates-conversion-correction-angle-calculation-error


, , .


. , . рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:


  • N ,
  • ,
  • M ( ?).

, , , , (), . , . , , . , , ( ). .


, . , , ( , , ).


рдкрд░реАрдХреНрд╖рдг


, . , , , . 2 :


  • ,
  • .

- , , , , .


. , , 100 CLLocation, . , , , 10 ( 10 ). ? , "". , . , , , . , , . , CoreLocation. , . , .


. , . , (, ), , 0 . , , .


" ". . , , , , CLLocation, , . ( ) .


, ARKit.


correction-angle-calculation-alg-testing-street-before-correction


, .


correction-angle-calculation-alg-testing-street-after-correction


( 3-4 ) , .


correction-angle-calculation-alg-testing-street-after-last-correction


JS, AR CoreLocation.


correction-angle-calculation-alg-testing-tracks


тАФ gravity worldAlignment . , . .


рдПрдХ рдирд┐рд╖реНрдХрд░реНрд╖ рдХреЗ рдмрдЬрд╛рдп


Slack, , , , . AR. . AR AppStore 2017 . , .


рдЙрдкрдпреЛрдЧреА рд▓рд┐рдВрдХ



, . .

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


All Articles