این قسمت اول متن مصاحبه دوم برنامه ماست (
از سال 2012، آندری در گروه تحقیقاتی Visualization and Computer Graphics کار می کند. درگیر پروژه های کاربردی بزرگ در سطح ایالتی و بین المللی. در این قسمت از گفتگو، از تجربه او در پشتیبانی AR برای رویدادهای عمومی صحبت می کنیم.
عکس
زمینه و اهداف پروژه
کد زمانی (توسط
ما آنها را به طور اتفاقی ملاقات کردیم
- شما با VR کار می کنید، اما آیا می توانید با واقعیت افزوده کار کنید؟
- خب، یه جورایی، بله.
- چنین وظیفه ای وجود دارد، با چنین یادداشت های مقدماتی. آیا میتوانید آن را انجام دهید؟
آنها کمی شلغم خود را خراشیدند، به نظر می رسد هیچ چیز غیر واقعی وجود ندارد:
- اول سعی کنیم همه چیز را مطالعه کنیم و بعد راه حلی پیدا کنیم.
دیمیتری: آیا آنها فقط حمایت رسانه ای می کنند؟
اندرو: آنها یک پشته کامل می سازند. از نظر مدیریتی و سازمانی کاملا درگیر کارگردانی، صحنه پردازی، انتخاب منظره، تدارکات و سایر پشتیبانی های فنی هستند. اما آنها می خواستند برای بازی های اروپایی کار خاصی انجام دهند. این جلوههای ویژه، مانند واقعیت ترکیبی، مدتهاست که برای تلویزیون ساخته شدهاند، اما از نظر اجرای فنی مقرون به صرفهترین نیستند. بنابراین، بچه ها به دنبال گزینه های جایگزین بودند.
دیمیتری: بیایید مشکل را با جزئیات بیشتر مورد بحث قرار دهیم. از چه چیزی تشکیل شده بود؟
اندرو: یک رویداد وجود دارد. یک ساعت و نیم طول می کشد. ما باید مطمئن شویم که مخاطبانی که آن را به صورت زنده تماشا می کنند و کسانی که در استادیوم نشسته اند می توانند جلوه های واقعیت افزوده را در هماهنگی کامل با برنامه زنده از نظر زمان و مکان در سایت ببینند.
تعدادی محدودیت فنی وجود داشت. انجام همگام سازی زمان از طریق اینترنت غیرممکن بود، زیرا ترس از بارگذاری بیش از حد در شبکه با غرفه های پر و احتمال حضور سران کشورها در این رویداد وجود داشت که می تواند شبکه های تلفن همراه را مسدود کند.
آندری کارساکوف، عکس از
ما دو مؤلفه کلیدی برای این پروژه داشتیم - تجربه شخصی که مردم می توانند از طریق دستگاه های تلفن همراه به دست بیاورند، و آنچه در پخش تلویزیونی و صفحه های اطلاعاتی در خود استادیوم وجود دارد.
اگر ناگهان فردی در حال تماشای اپیزودهای واقعیت افزوده از طریق یک دستگاه تلفن همراه است و در همان زمان روی صفحه نمایش قرار می گیرد، باید همان تصویر را ببیند.
ما به دو سیستم تقریباً متفاوت نیاز داشتیم تا در زمان کاملاً هماهنگ شوند. اما ویژگی این گونه نمایش ها این است که اینها رویدادهای پیچیده ای هستند که در آن تعداد زیادی خدمات فنی درگیر هستند و همه عملیات بر اساس کدهای زمانی انجام می شود. کد زمان یک لحظه خاص در زمان است که در آن چیزی شروع می شود: نور، صدا، خروج افراد، باز شدن گلبرگ های صحنه و غیره. باید با این سیستم سازگار می شدیم تا همه چیز در زمان مناسب شروع شود. ویژگی دیگر این بود که صحنه ها و قسمت های با واقعیت افزوده مربوط به فیلمنامه بودند.
دیمیتری: اما آیا تصمیم گرفتید استفاده از کدهای زمانی را به دلیل خطرات بالای فورس ماژور کنار بگذارید یا در ابتدا برخی از ویژگی های قدرت را محاسبه کرده اید و متوجه شدید که بار روی کل سیستم بسیار زیاد است؟
اندرو: اگر یک سرویس همگام سازی برای چنین مخاطبانی بسازید، خیلی سخت نیست. در هر صورت درخواست ها یک شبه با شکست مواجه نمی شوند. بله، بار زیاد است، اما اضطراری نیست. سوال این است که آیا اگر شبکه به طور ناگهانی خاموش شود، آیا ارزش صرف منابع و زمان برای این امر را دارد؟ ما مطمئن نبودیم که این اتفاق نمی افتد. در نهایت، همه چیز کار کرد، با وقفه های ناشی از بار، اما کار کرد، و ما مطابق با کد زمان مطابق با یک طرح متفاوت همگام سازی کردیم. این یکی از چالش های جهانی بود.
مشکلات پیاده سازی از نقطه نظر UX
کد زمانی (توسط
اندرو: ما همچنین باید در نظر می گرفتیم که استادیوم یک محل برگزاری کنسرت کلاسیک نیست و سیستم ها را در سراسر فضا برای دستگاه های تلفن همراه همگام سازی می کنیم. بنابراین، چند وقت پیش من ویروسی شدم
عکس
اما این همیشه یک تجربه در مقابل شماست - تمام جمعیت در مقابل صحنه می ایستند، هماهنگ سازی بسیار ساده است. در مورد یک استادیوم، باید بفهمید که در کدام سمت دایره قرار دارید، موقعیت نسبی، تا استادیوم با فضایی که در محیط مجازی وجود دارد، جا بیفتد. چالش تلخی بود آنها سعی کردند آن را از راه های مختلف حل کنند و نتیجه آن پرونده ای نزدیک به آنچه توسط لوبودا اجرا شد، اما نه از همه نظر بود.
ما به کاربر اجازه می دهیم تصمیم بگیرد کجا باشد. ما برای ورزشگاه علامت گذاری کردیم، جایی که مردم یک بخش، یک ردیف، یک مکان را انتخاب کردند. همه اینها در چهار "کلیک". بعد باید مسیر صحنه را مشخص می کردیم. برای انجام این کار، ما شباهتی از آنچه که صحنه تقریباً باید از منظر سفارشی به نظر برسد را نشان دادیم. او آن را ترکیب کرد، ضربه زد و تمام شد - صحنه نشست. ما سعی کردیم تا حد امکان این روند را ساده کنیم. با این حال، 90 درصد از بینندگانی که میخواستند سریال را تماشا کنند، افرادی نیستند که تجربه برقراری ارتباط با واقعیت افزوده را داشته باشند.
دیمیتری: آیا برنامه جداگانه ای برای این پروژه وجود داشت؟
اندرو: بله، یک برنامه برای iOS و Android که ما آن را به فروشگاه فرستادیم. یک کمپین تبلیغاتی جداگانه برای آن وجود داشت. قبلا به تفصیل نحوه دانلود و غیره توضیح داده شده بود.
دیمیتری: شما باید بدانید که جایی برای آزمایش فیزیکی و یادگیری نحوه استفاده از چنین برنامه ای وجود ندارد. بنابراین، کار "آموزش" مخاطب پیچیده تر شد.
اندرو: بله بله. با UX، ما با مشکلات زیادی روبرو شدیم، زیرا کاربر می خواهد تجربه را با سه کلیک دریافت کند: دانلود، نصب، راه اندازی - کار کرد. بسیاری از افراد برای دنبال کردن آموزش های پیچیده، خواندن آموزش ها و غیره تنبل هستند. و ما سعی نکردیم همه چیز را تا حد امکان در آموزش برای کاربر توضیح دهیم: یک پنجره در اینجا باز می شود، دسترسی به دوربین در اینجا، در غیر این صورت کار نمی کند، و غیره. مهم نیست که چقدر توضیح می نویسید، مهم نیست چقدر مفصل می جوید، مهم نیست چه گیف هایی را وارد می کنید، مردم آن را نمی خوانند.
در مینسک، ما مجموعه بزرگی از بازخوردها را در مورد این بخش جمع آوری کردیم، و در حال حاضر تغییرات زیادی برای برنامه در کازان داشته ایم. ما نه تنها آن فونوگرامها و آن کدهای زمانی را که با یک قسمت خاص از واقعیت افزوده مطابقت دارند، در آنجا قرار دادیم، بلکه همه آواگرامها و کدهای زمانی را به طور کامل گرفتیم. بنابراین برنامه شنیده است که در زمان راهاندازی چه اتفاقی میافتد، و - اگر شخصی در لحظه اشتباه وارد سیستم شود - این اطلاعات را ارائه میدهد: "رفیق، متاسفم، قسمت AR شما 15 دقیقه دیگر خواهد بود."
کمی در مورد معماری و رویکرد به همگام سازی
کد زمانی (توسط
دیمیتری: آیا تصمیم گرفتید با صدا همگام سازی کنید؟
اندرو: بله تصادفی اتفاق افتاد. ما در حال بررسی گزینه ها بودیم و با یک شرکت مواجه شدیم
دیمیتری: اما این یک چیز است - شما در اتاق نشیمن خود نشسته اید و یک چیز دیگر - یک استادیوم با هزاران نفر. با کیفیت ضبط صدا و متعاقباً تشخیص آن، اوضاع برای شما چگونه پیش رفت؟
اندرو: ترس ها و تردیدهای زیادی وجود داشت، اما در بیشتر موارد همه چیز به خوبی تشخیص داده می شد. آنها با الگوریتمهای حیلهگر خود روی آهنگهای صوتی امضا میسازند - وزن نتیجه کمتر از فایل صوتی اصلی است. هنگامی که میکروفون به صدای اطراف گوش می دهد، سعی می کند این ویژگی ها را پیدا کند و بر اساس آنها آهنگ را تشخیص دهد. در شرایط خوب، دقت همگام سازی 0,1-0,2 ثانیه است. این بیش از حد کافی بود. در شرایط بد، اختلاف تا 0,5 ثانیه بود.
خیلی به دستگاه بستگی دارد. ما با ناوگان بزرگی از دستگاه ها کار کردیم. برای آیفون تنها 10 مدل وجود دارد. از نظر کیفیت و سایر ویژگی ها خوب کار کردند. اما با اندروید باغ وحش شبیه مادر من است. در همه جا معلوم نشد که همگام سازی صدا کار کرده است. مواردی وجود داشت که به دلیل برخی ویژگی ها، شنیدن آهنگ های مختلف در دستگاه های مختلف غیرممکن بود. در جایی فرکانس های پایین ناپدید می شوند، در جایی فرکانس های بالا شروع به خس خس کردن می کنند. اما اگر دستگاه یک نرمال ساز روی میکروفون داشت، همگام سازی همیشه کار می کرد.
دیمیتری: لطفاً در مورد معماری به ما بگویید - چه چیزی در پروژه استفاده شده است؟
اندرو: ما برنامه را در Unity ساختیم - ساده ترین گزینه از نظر چند پلتفرم و کار با گرافیک. بنیاد AR استفاده کرد. ما بلافاصله گفتیم که نمیخواهیم سیستم را پیچیده کنیم، بنابراین خودمان را به مجموعهای از دستگاههایی که از ARKit و ARCore پشتیبانی میکنند محدود کردیم تا زمانی برای آزمایش همه چیز داشته باشیم. ما یک پلاگین برای DigitalSoft SDK ساختیم
ما کمی با سیستم ذرات صحبت کردیم، زیرا کاربر می تواند در هر زمان در یک قسمت خاص وارد شود و ما باید همه چیز را از لحظه ای که از آن همگام شده است ببینیم. ما با سیستمی دستکاری کردیم که اجازه می دهد سناریوها به وضوح در زمان پخش شوند، به طوری که تجربه سه بعدی را می توان مانند یک فیلم به جلو و عقب پیمایش کرد. در حالی که با انیمیشن های کلاسیک خارج از جعبه کار می کند، مجبور شدیم با سیستم های ذرات سرهم کنیم. در یک نقطه، آنها شروع به تخم ریزی می کنند، و اگر شما خود را در جایی قبل از نقطه تخم ریزی پیدا کردید، آنها هنوز متولد نشده اند، اگرچه به نظر می رسد که باید باشند. اما در واقع حل این مشکل بسیار آسان است.
برای بخش موبایل، معماری بسیار ساده است. برای پخش تلویزیونی همه چیز پیچیده تر است. ما محدودیت های سخت افزاری داشتیم. مشتری یک شرط گذاشت: "در اینجا ما فلان پارک سخت افزاری داریم، تقریباً همه چیز باید روی آن کار کند." ما فوراً روی این واقعیت تمرکز کردیم که با کارتهای فیلمبرداری نسبتاً مقرون به صرفه کار خواهیم کرد. اما بودجه به معنای بد بودن آنها نیست.
محدودیتهایی روی سختافزار، کارتهای ضبط ویدیو و شرایط کاری وجود داشت - نحوه دریافت تصویر. کارتهای ضبط - طراحی Blackmagic، که طبق طرح کلیدگذاری داخلی کار میکنند - این زمانی است که یک فریم ویدیو از دوربین به شما میرسد. کارت دارای تراشه پردازشی خاص خود است که در آن یک قاب نیز قرار داده شده است که باید روی قاب ورودی قرار گیرد. کارت آنها را با هم مخلوط می کند - ما هیچ چیز دیگری را در آنجا لمس نمی کنیم و بر فریم دوربین فیلمبرداری تأثیر نمی گذاریم. او نتیجه را از طریق خروجی ویدئو به اتاق کنترل میفرستد. این روش خوبی برای همپوشانی عناوین و سایر موارد مشابه است، اما برای جلوه های واقعیت ترکیبی چندان مناسب نیست زیرا محدودیت های زیادی در خط لوله رندر وجود دارد.
دیمیتری: از نظر محاسبات بلادرنگ، اتصال شی یا چیز دیگری؟
اندرو: از نظر کیفیت و دستیابی به اثرات مطلوب. زیرا ما نمی دانیم که تصویر را روی چه چیزی قرار می دهیم. ما به سادگی اطلاعات رنگ و شفافیت را در بالای جریان اصلی ارسال می کنیم. برخی از اثرات مانند شکست، شفافیت صحیح و سایه های اضافی را نمی توان با این طرح به دست آورد. برای انجام این کار، باید همه چیز را با هم رندر کنید. به عنوان مثال، هیچ راهی برای ایجاد اثر اعوجاج هوا از آتش یا آسفالت داغ وجود ندارد. همین امر در مورد انتقال اثر شفافیت با در نظر گرفتن ضریب شکست نیز صدق می کند. ما در ابتدا بر اساس این محدودیت ها محتوا تولید کردیم و سعی کردیم از افکت های مناسب استفاده کنیم.
دیمیتری: آیا قبلاً محتوای خود را در اولین پروژه بازی های اروپایی داشتید؟
اندرو: نه، مرحله اصلی توسعه محتوا توسط بچه های سایت Sechenov.com انجام شد. گرافیست های آنها محتوای اولیه را با انیمیشن ها و چیزهای دیگر ترسیم می کردند. و ما همه چیز را در موتور ادغام کردیم، جلوه های اضافی اضافه کردیم، آن را تطبیق دادیم تا همه چیز به درستی کار کند.
اگر در مورد خط لوله صحبت کنیم، برای پخش تلویزیونی همه چیز را روی Unreal Engine 4 مونتاژ کردیم. تصادفاً، آنها در همان لحظه شروع به تقویت ابزارهای خود برای واقعیت ترکیبی کردند. معلوم شد که همه چیز به این سادگی نیست. الان هم همه ابزارها خام هستند، باید خیلی چیزها را با دست تمام می کردیم. در مینسک ما روی یک ساخت سفارشی موتور کار کردیم، یعنی چیزهایی را در داخل موتور بازنویسی کردیم تا مثلاً بتوانیم روی اشیاء واقعی سایه بکشیم. نسخهای از موتور که در آن زمان فعلی بود، ویژگیهایی نداشت که این امکان را با استفاده از ابزارهای استاندارد انجام دهد. به همین دلیل، بچه های ما مونتاژ سفارشی خود را ساختند تا هر آنچه ضروری بود را فراهم کنند.
سایر تفاوت های ظریف و سازگاری با WorldSkills در کازان
کد زمانی (توسط
دیمیتری: اما همه اینها در یک بازه زمانی نسبتاً کوتاه؟
اندرو: ضرب الاجل ها تنگ بود
دیمیتری: آیا اقتباسی از یک پروژه به پروژه دیگر وجود داشت؟ در یک ماه و نیم باید از پیشرفت ها بهره برد و پروژه را با محتوای جدید به سایت جدید منتقل کرد؟
اندرو: بله یک ماه و نیم بود. ما یک تعطیلات دو هفته ای برای کل تیم بعد از پروژه مینسک برنامه ریزی کرده بودیم. اما بلافاصله پس از بسته شدن، بچه های Sechenov.com بالا می آیند و می گویند: "خب، پس بیایید کازان را انجام دهیم." ما هنوز موفق شدیم کمی استراحت کنیم، اما خیلی سریع به این پروژه تغییر مکان دادیم. چند کار فنی را انجام دادیم. بیشتر وقت صرف محتوا شد، زیرا برای WorldSkills ما آن را به طور کامل انجام دادیم، فقط آن را با تیم سازنده هماهنگ کردیم. فقط یک فیلمنامه از طرف آنها بود. اما ساده تر بود - نیازی به تکرار اضافی نبود. وقتی خودتان محتوا ایجاد می کنید، بلافاصله نحوه عملکرد آن را در موتور می بینید و می توانید سریعاً ویرایش و هماهنگ کنید.
در مورد قسمت موبایل، ما تمام ظرافت هایی را که در مینسک داشتیم در نظر گرفتیم. ما یک طراحی اپلیکیشن جدید ساختیم، معماری را کمی دوباره طراحی کردیم، آموزش هایی اضافه کردیم، اما سعی کردیم تا حد امکان کوتاه و واضح باشد. ما تعداد مراحل کاربر را از راه اندازی برنامه تا مشاهده محتوا کاهش دادیم. یک ماه و نیم برای تکمیل یک پروژه کافی کافی بود. در عرض یک هفته و نیم به سایت رسیدیم. کار در آنجا آسانتر بود زیرا تمام کنترل پروژه در دست برگزارکنندگان بود و نیازی به هماهنگی با کمیته های دیگر نبود. کار در کازان ساده تر و راحت تر بود و اینکه زمان کمتری وجود داشت کاملاً طبیعی بود.
دیمیتری: اما آیا تصمیم گرفتید رویکرد همگام سازی را به همان شکلی که بود، بر اساس صدا رها کنید؟
اندرو: بله، ما آن را با صدا ترک کردیم. خوب کار کرد. همانطور که می گویند، اگر کار کرد، به آن دست نزنید. ما به سادگی تفاوت های ظریف کیفیت آهنگ صوتی را در نظر گرفتیم. وقتی آنها مقدمه را انجام دادند، یک قسمت آموزشی برای مردم وجود داشت که قبل از شروع نمایش آن را امتحان کنند. تعجب آور بود که وقتی در لحظه پخش آهنگ در استادیوم تشویق های طوفانی به گوش می رسد، "زنده"، سیستم به شما اجازه می دهد تا به خوبی با این آهنگ هماهنگ شوید، اما اگر در این لحظه تشویق های ضبط شده با مسیر مخلوط شود، آنگاه مسیر دیگر گرفتار نمی شود. چنین تفاوت های ظریفی در نظر گرفته شد و همه چیز از نظر صدا کاملاً هماهنگ بود.
PS در قسمت دوم شماره در مورد تجسم داده های علمی، مدل سازی فرآیند در پروژه های دیگر، توسعه بازی و برنامه کارشناسی ارشد صحبت می کنیم.
PPS در همین حال، در نسخه انگلیسی Habr:
منبع: www.habr.com