استفاده از برآورد نور با مدل های Sceneform

Lighting Estimation API یک تصویر داده شده را برای نشانه های بصری مجزا تجزیه و تحلیل می کند و اطلاعات دقیقی در مورد نورپردازی در یک صحنه مشخص ارائه می دهد. سپس می‌توانید از این اطلاعات هنگام رندر کردن اشیاء مجازی برای نورپردازی آن‌ها در شرایطی مشابه با صحنه‌ای که در آن قرار گرفته‌اند استفاده کنید، این اشیا را واقعی‌تر نشان می‌دهد و تجربه غوطه‌وری را برای کاربران افزایش می‌دهد.

نشانه ها و مفاهیم نورپردازی

انسان ها به طور ناخودآگاه نشانه های ظریفی را در مورد نحوه روشن شدن اشیا یا موجودات زنده در محیط خود درک می کنند. هنگامی که یک شی مجازی فاقد سایه است یا دارای مواد براقی است که فضای اطراف را منعکس نمی کند، کاربران می توانند احساس کنند که شی کاملاً در یک صحنه خاص قرار نمی گیرد حتی اگر نتوانند دلیل آن را توضیح دهند. به همین دلیل است که رندر کردن اشیاء AR برای مطابقت با نور در یک صحنه برای تجربه‌های غوطه‌ورانه و واقعی‌تر بسیار مهم است.

Lighting Estimation با ارائه داده های دقیق که به شما امکان تقلید نشانه های نورپردازی مختلف را هنگام رندر کردن اشیاء مجازی می دهد، بیشتر کار را برای شما انجام می دهد. این نشانه ها سایه ها , نور محیط , سایه زنی , هایلایت های خاص و بازتاب ها هستند .

ما می توانیم این نشانه های بصری را اینگونه توصیف کنیم:

  • نور محیط. نور محیطی نور پراکنده ای است که از اطراف وارد می شود و همه چیز را روشن می کند.

  • سایه ها. سایه ها اغلب جهت دار هستند و به بینندگان می گویند که منابع نور از کجا می آیند.

  • سایه زدن. سایه، شدت نور در نواحی مختلف یک تصویر معین است. برای مثال، بخش‌های مختلف یک شیء بسته به زاویه نسبت به بیننده و مجاورت آن با منبع نور، می‌توانند سطوح سایه متفاوتی در یک صحنه داشته باشند.

  • نکات برجسته دیدنی این قطعات براق سطوح هستند که منبع نور را مستقیماً منعکس می کنند. نقاط برجسته روی یک شی نسبت به موقعیت بیننده در یک صحنه تغییر می کند.

  • انعکاس. تابش نور از سطوح متفاوت است و بستگی به این دارد که سطح دارای ویژگی‌های specular (یعنی بسیار بازتابنده) یا پراکنده (نه بازتابنده) باشد. به عنوان مثال، یک توپ فلزی بسیار دیدنی است و محیط خود را منعکس می کند، در حالی که توپ دیگری که به رنگ خاکستری مات رنگ آمیزی شده است، پراکنده خواهد بود. بیشتر اشیاء دنیای واقعی ترکیبی از این ویژگی ها را دارند - به یک توپ بولینگ کوبیده یا یک کارت اعتباری که به خوبی استفاده شده است فکر کنید.

    سطوح انعکاسی نیز رنگ ها را از محیط اطراف می گیرند. رنگ‌آمیزی یک جسم می‌تواند مستقیماً تحت تأثیر رنگ‌آمیزی محیط آن قرار گیرد. به عنوان مثال، یک توپ سفید در یک اتاق آبی رنگ مایل به آبی به خود می گیرد.

استفاده از حالت های برآورد نور برای افزایش واقع گرایی

Config.LightEstimationMode API حالت هایی دارد که روشنایی محیط را با درجات مختلف دانه بندی و واقع گرایی تخمین می زند.

  • حالت HDR محیطی ( ENVIRONMENTAL_HDR ). این حالت از یک API تشکیل شده است که امکان تخمین واقعی نور را برای نور جهت، سایه ها، هایلایت های خاص و بازتاب ها فراهم می کند.

  • حالت شدت محیط ( AMBIENT_INTENSITY ). این حالت میانگین شدت پیکسل و رنگ نور را برای یک تصویر مشخص تعیین می کند. این یک تنظیم درشت است که برای موارد استفاده طراحی شده است که در آن نورپردازی دقیق مهم نیست، مانند اشیایی که دارای نور پخته هستند.

  • DISABLED . اگر نور برای مطابقت با محیط معین مربوط به یک صحنه یا یک شی نیست، Config.LightEstimationMode را غیرفعال کنید.

با استفاده از حالت ENVIRONMENTAL_HDR

حالت ENVIRONMENTAL_HDR از یادگیری ماشینی برای تجزیه و تحلیل تصویر دوربین ورودی و ترکیب نور محیطی برای ارائه یک شی مجازی استفاده می کند.

این حالت نور جهت، هارمونیک‌های کروی محیط و نقشه مکعبی HDR را با هم ترکیب می‌کند تا اشیا مجازی احساس کنند که از نظر فیزیکی بخشی از یک صحنه خاص هستند:

  • نور جهت دار منبع نور ظاهری را برای یک تصویر مشخص تجزیه و تحلیل می کند. این نوع نورپردازی، نقاط برجسته با موقعیت معقول را اضافه می کند و سایه ها را در جهتی مطابق با سایر اشیاء واقعی قابل مشاهده ایجاد می کند.

  • هارمونیک های کروی محیطی نمایشی واقعی از نور کلی محیطی که از همه جهات در یک صحنه وارد می شود را دریافت می کنند. در حین رندر کردن، از این اطلاعات برای اضافه کردن نشانه های ظریفی استفاده می شود که تعریف اشیاء مجازی را نشان می دهد.

  • یک نقشه مکعبی HDR نور محیطی اطراف شی مجازی را ثبت می کند. در طول رندر، این مکعب انعکاس مواد با براقیت متوسط ​​تا بالا را ایجاد می کند.

تصویر زیر نمونه ای از یک شی مجازی را نشان می دهد که در یک صحنه با ENVIRONMENTAL_HDR فعال شده است.

حالت ENVIRONMENTAL_HDR را برای صحنه Sceneform پیکربندی کنید

برای استفاده از ENVIRONMENTAL_HDR با یک صحنه Sceneform، کلاس ARFragment را گسترش دهید و پیکربندی را به صورت زیر لغو کنید:

@Override
protected Config getSessionConfiguration(Session session) {
  Config config = new Config(session);
  config.setLightEstimationMode(Config.LightEstimationMode.ENVIRONMENTAL_HDR);
  return config;
}

برای مشاهده نمونه ای از نحوه عملکرد، به نمونه منظومه شمسی مراجعه کنید. (این نمونه ENVIRONMENTAL_HDR را بدون استفاده از ARFragment پیاده سازی می کند.)

با استفاده از حالت AMBIENT_INTENSITY

حالت AMBIENT_INTENSITY میانگین شدت پیکسل و اسکالرهای تصحیح رنگ را برای یک تصویر مشخص تعیین می کند. این یک تنظیم درشت است که برای موارد استفاده طراحی شده است که در آن نور دقیق مهم نیست، مانند اشیایی که دارای نور پخته هستند.

  • شدت پیکسل میانگین شدت پیکسل نور در یک صحنه را برای اعمال روی یک شی مجازی کامل می گیرد.

  • اسکالرهای تصحیح رنگ ، تعادل رنگ سفید را برای هر فریم جداگانه تشخیص می‌دهند و به شما امکان می‌دهند یک شی مجازی را تصحیح رنگ کنید تا راحت‌تر در رنگ‌آمیزی کلی صحنه ادغام شود.

حالت AMBIENT_INTENSITY را برای صحنه Sceneform پیکربندی کنید

برای استفاده از AMBIENT_INTENSITY با یک صحنه Sceneform، کلاس ARfragment را گسترش دهید و پیکربندی را به صورت زیر لغو کنید:

@Override
protected Config getSessionConfiguration(Session session) {
  Config config = new Config(session);
  config.setLightEstimationMode(Config.LightEstimationMode.AMBIENT_INTENSITY);
  return config;
}