۲۹ شهریور ۱۴۰۳

Techboy

اخبار و اطلاعات روز تکنولوژی

با StereoKit برنامه های دات نت برای متاورس بسازید

ابزارهای واقعیت مختلط منبع باز مایکروسافت ساخت برنامه های OpenXR را در NET آسان می کند.

ابزارهای واقعیت مختلط منبع باز مایکروسافت ساخت برنامه های OpenXR را در NET آسان می کند.

بسیاری از پلتفرم واقعیت ترکیبی ویندوز به Unity بستگی دارد. با این حال، این بهترین گزینه به دلایل زیادی نیست، به خصوص مدل مجوز آن که هنوز هم بسیار بر بازار بازی متمرکز است. جایگزین هایی وجود دارد. می‌توانید از WebXR در یک مرورگر تعبیه‌شده استفاده کنید یا با ابزارهای چند پلتفرمی در پلتفرم Power که بر اساس پیاده‌سازی React Native Babylon.js ساخته شده است. اما اگر با کد دات‌نت کار می‌کنید و می‌خواهید آن را به واقعیت افزوده و واقعیت مجازی گسترش دهید، همچنان به آن نیاز دارید. مجموعه ای از کتابخانه های واقعیت مختلط دات نت.

OpenXR: یک استاندارد با واقعیت ترکیبی باز

خوشبختانه، یک رویکرد مبتنی بر استانداردهای باز برای کار با واقعیت ترکیبی و مجموعه‌ای از ابزارهای دات نت برای کار با آن وجود دارد. گروه Khronos بدنه ای صنعتی است که مسئول استانداردهای گرافیکی مانند OpenGL و OpenCL است که به کد کمک می کند تا بیشترین بهره را از سخت افزار GPU داشته باشد. به عنوان بخشی از وظایف خود، استاندارد OpenXR را مدیریت می کند که به شما امکان می دهد یک بار کد بنویسید. و آن را روی هر هدست یا دستگاه واقعیت افزوده اجرا کنید. با زمان‌های اجرا از مایکروسافت، Oculus و Collabara، از جمله، کد OpenXR باید در اکثر پلتفرم‌هایی که می‌توانند کدهای NET را میزبانی کنند، اجرا شود.

ماهیت چند پلتفرمی و چند دستگاهی OpenXR امکان داشتن یک پایه کد را فراهم می‌کند که می‌تواند واقعیت ترکیبی را به پلتفرم‌های پشتیبانی‌شده ارائه دهد، اگر از زبان یا چارچوبی استفاده می‌کنید که در همه آن پلتفرم‌ها کار می‌کند. از آنجایی که پلتفرم مدرن دات نت اکنون از اکثر مکان هایی که احتمالاً می خواهید برنامه های OpenXR را میزبانی کنید، پشتیبانی می کند، باید حامی مالی مایکروسافت را پیدا کنید. ابزار StereoKit روشی ایده‌آل برای ساخت آن برنامه‌ها، به‌ویژه با ابزارهای رابط کاربری متقابل پلتفرم مانند MAUI که محتوای غیرOpenXR را میزبانی می‌کند. می‌توانید پروژه را در GitHub پیدا کنید.

از آنجایی که توسط تیمی مشابه با ابزار واقعیت ترکیبی ویندوز توسعه می‌یابد، برنامه‌هایی برای تکامل به سمت استفاده از زبان طراحی واقعیت ترکیبی مایکروسافت وجود دارد. این باید به این دو ابزار اجازه دهد تا از مجموعه ویژگی های مشابهی پشتیبانی کنند تا بتوانید برنامه های مبتنی بر Unity را به چارچوب توسعه C# گسترده تر بیاورید.

مایکروسافت از افزونه های شخص ثالث برای GitHub Copilot رونمایی کرد

کار با StereoKit

StereoKit صرفاً برای گرفتن دارایی های سه بعدی شما و نمایش آنها در یک محیط تعاملی با واقعیت ترکیبی با تمرکز بر عملکرد و یک API مختصر (در اسناد به آن “مختصر” اشاره می کند) طراحی شده است تا کد نوشتن را ساده کند. این برای توسعه دهندگان C# طراحی شده است، اگرچه اگر نیاز به نزدیک شدن به سخت افزار خود دارید، پشتیبانی بیشتری از C و C++ وجود دارد. اگرچه در ابتدا برای برنامه های HoloLens 2 و برای واقعیت افزوده طراحی شده بود، این ابزار برای ساخت کدهای واقعیت مجازی و استفاده از واقعیت افزوده در دستگاه های تلفن همراه مناسب است.

در حال حاضر پشتیبانی از پلتفرم بر روی برنامه های کاربردی ۶۴ بیتی متمرکز شده است و StereoKit به عنوان بسته NuGet ارسال می شود. توسعه دهندگان دسکتاپ ویندوز در حال حاضر فقط به کد x64 دسترسی دارند، اگرچه شما باید بتوانید از ARM64 HoloLens Universal Windows Platform (UWP) روی سایر سخت افزارهای ARM مانند Surface Pro X استفاده کنید. بسته لینوکس از هر دو x64 و ARM64 پشتیبانی می کند. برنامه‌های اندروید فقط بر روی دستگاه‌های ARM64 اجرا می‌شوند (البته آزمایش باید از طریق فناوری Android Bridge که توسط زیرسیستم ویندوز برای اندروید در سخت‌افزار اینتل استفاده می‌شود کار کند). متأسفانه، در حال حاضر نمی‌توانیم کاملاً چند پلتفرم باشیم زیرا هیچ پیاده‌سازی iOS وجود ندارد زیرا هیچ نسخه رسمی OpenXR iOS وجود ندارد. اپل بر روی ابزار ARKit خود تمرکز کرده است و به عنوان یک راه حل، تیم StereoKit در حال حاضر روی یک پیاده سازی WebAssembly بین پلتفرمی کار می کند که باید در هر جایی که زمان اجرای جاوا اسکریپت سازگار با WebAssembly وجود دارد اجرا شود.

توسعه با StereoKit برای کسانی که ساخته اند نباید خیلی سخت باشد. کد رابط کاربری NET. احتمالاً بهتر است با ویژوال استودیو کار کنید، اگرچه دلیلی ندارد که نتوانید از محیط توسعه دات نت دیگری که از NuGet پشتیبانی می کند استفاده کنید. کاربران ویژوال استودیو باید اطمینان حاصل کنند که توسعه دسکتاپ دات نت را برای برنامه‌های OpenXR ویندوز، UWP برای برنامه‌های هدفمند هولولنز و توسعه دات‌نت موبایل برای Oculus و سایر سخت‌افزارهای مبتنی بر Android را فعال کرده‌اند. برای آزمایش کد به یک زمان اجرا OpenXR نیاز دارید و در صورت نداشتن هدست، می توانید از شبیه ساز دسکتاپ استفاده کنید. یکی از مزایای کار با ویژوال استودیو این است که تیم توسعه StereoKit مجموعه ای از قالب های ویژوال استودیو را ارائه کرده است. که می تواند با بارگیری پیش نیازها و پر کردن برخی از کدهای دیگ بخار، شروع به کار را سرعت بخشد.

Eclipse Theia IDE برای دسکتاپ، مرورگر می رسد

بیشتر توسعه‌دهندگان احتمالاً الگوی NET Core را می‌خواهند، زیرا این قالب با پیاده‌سازی‌های دات‌نت مدرن در ویندوز و لینوکس کار می‌کند و شما را برای قالب چند پلتفرمی در حال توسعه آماده می‌کند. توسعه .NET بین پلتفرمی اکنون بر ابزارهایی مانند MAUI و WinUI متمرکز شده است، بنابراین به احتمال زیاد پیاده سازی UWP با گذشت زمان از اهمیت کمتری برخوردار می شود، به خصوص اگر تیم نسخه WebAssembly را ارسال کند.

اولین برنامه C# با واقعیت ترکیبی خود را بسازید

کدهای ساختمانی در StereoKit با کمک اولیه های سه بعدی کاملاً تعریف شده ای که ایجاد اشیاء در فضای واقعیت ترکیبی را ساده می کنند، کمک می کند. کشیدن یک مکعب (نسخه واقعیت ترکیبی “Hello, world”) را می توان در تعداد انگشت شماری از خطوط کد با نمونه دیگری، یک برنامه طراحی فضای آزاد، در بیش از ۲۰۰ خط C# انجام داد. این کتابخانه بیشتر تعاملات با OpenXR را برای شما انجام می دهد و به شما این امکان را می دهد که مستقیماً با محیط خود کار کنید نه اینکه نیاز به اجرای توابع ترسیم سطح پایین داشته باشید یا کدی داشته باشید که نیاز به مدیریت دوربین ها و صفحه های مختلف دارد.

هنگام نوشتن کد باید تفاوت های کلیدی بین برنامه های دسکتاپ سنتی و کار در StereoKit را در نظر بگیرید. شاید مهمترین آنها مدیریت وضعیت باشد. StereoKit باید عناصر UI را در هر فریم پیاده‌سازی کند و تا حد امکان وضعیت کمتری را بین حالت‌ها ذخیره کند. جنبه هایی در این رویکرد وجود دارد که کارها را تا حد زیادی ساده می کند. همه عناصر رابط کاربری سلسله مراتبی هستند، بنابراین با خاموش کردن یک عنصر به طور خودکار عناصر فرزند آن تغییر می کند.

این رویکرد به شما امکان می‌دهد عناصر UI را به دیگر اشیاء مدل خود متصل کنید. StereoKit از بسیاری از فرمت های استاندارد سه بعدی اشیاء پشتیبانی می کند، بنابراین تنها کاری که باید انجام دهید این است که یک مدل را از یک فایل بارگذاری کنید قبل از تعریف تعاملات و اضافه کردن یک ناحیه طرح بندی به مدل، که به عنوان میزبان عناصر UI عمل می کند و شی را در بالای صفحه قرار می دهد. سلسله مراتب رابط کاربری مهم است که از شناسه های عنصر در یک شی UI استفاده مجدد نکنید، زیرا آنها اساس مدل حالت تعامل حداقلی StereoKit را تشکیل می دهند و برای ردیابی عناصر در حال حاضر فعال هستند و می توانند در تعاملات کاربر استفاده شوند.

مقدمه gRPC: جایگزین REST

StereoKit رویکرد «اول دست» را برای تعاملات با واقعیت ترکیبی اتخاذ می‌کند. با استفاده از حسگرهای دستی مانند دوربین‌های ردیابی هولولنز در صورت وجود یا شبیه‌سازی آن‌ها برای کنترل‌کننده‌های ماوس یا گیم‌پد. دست‌ها در فضای تعامل نمایش داده می‌شوند و می‌توان از آن‌ها برای قرار دادن سایر عناصر UI با توجه به موقعیت دست استفاده کرد، به عنوان مثال، صرف نظر از اینکه کاربر در کجای فضای برنامه هستند، همیشه منوی کنترل را نزدیک دستان کاربر قرار می‌دهد.

اگر برای نحوه پیاده‌سازی ویژگی‌های خاص نیاز به الهام دارید، یک کتابخانه مفید صحنه های نمایشی در مخزن StereoKit GitHub است. اینها شامل کد نمونه برای کار با کنترل‌کننده‌ها و مدیریت ورودی دست، از جمله دیگر عناصر ضروری یک تعامل با واقعیت ترکیبی است. این کد به خوبی مستند شده است، و نکات زیادی در مورد نحوه استفاده از عناصر کلیدی APIهای StereoKit در اختیار شما قرار می دهد.

حذف وابستگی مایکروسافت به Unity برای واقعیت مختلط یک چیز خوب است. داشتن ابزار منبع باز خود تضمین می کند که واقعیت ترکیبی شهروند درجه یک در اکوسیستم دات نت است که تا حد امکان در آن اکوسیستم پشتیبانی می شود. هدف قرار دادن OpenXR همچنین کلید موفقیت StereoKit است زیرا سطح مشترکی از پشتیبانی را در دستگاه‌های واقعیت ترکیبی مانند HoloLens، واقعیت مجازی مانند Oculus و واقعیت افزوده در Android تضمین می‌کند. شما می توانید از پروژه مشابهی برای هدف قرار دادن دستگاه های مختلف و ادغام با ابزارها و فناوری های آشنا مانند MAUI استفاده کنید. نیازی نیست واقعیت ترکیبی جنبه جداگانه ای از کد شما باشد. StereoKit آوردن آن را به پروژه های دات نت موجود بدون نیاز به ایجاد تغییرات قابل توجه ساده می کند. پس از همه، اکنون فقط یک لایه رابط کاربری دیگر است!