نور واقعی اشیاء مجازی در یک صحنه

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

  1. از کار افتاده است
  2. حالت شدت محیط
  3. حالت HDR محیطی

پیش نیازها

قبل از ادامه، مطمئن شوید که مفاهیم اساسی AR و نحوه پیکربندی یک جلسه ARCore را درک کرده اید.

تخمین روشنایی را فعال کنید

این مراحل را دنبال کنید تا تخمین نور را در برنامه خود فعال کنید.

  1. یک پروژه AR Foundation یا پروژه ARCore Extensions راه اندازی کنید.
  2. در برگه Hierarchy ، به XR Session Origin > AR Camera بروید.

  1. در قسمت AR Camera Manager ، Light Estimation را انتخاب کنید.
  2. در منوی کشویی Light Estimation ، حالت(های) مورد نظر خود را انتخاب کنید.

حالت Environmental HDR را فعال کنید

حالت HDR محیطی تنظیمات تخمین نور زیر را فعال می کند:

هنگامی که معیارهای زیر برآورده شوند، این حالت به طور خودکار فعال می شود:

حالت شدت محیط را فعال کنید

هنگامی که حالت شدت محیط در مؤلفه ARCameraManager انتخاب می شود، برآورد نور پایه به طور خودکار فعال می شود.

حالت شدت محیط تنظیمات تخمین نور زیر را فعال می کند:

  • رنگ محیطی
  • شدت محیط

از اطلاعات نور در صحنه خود استفاده کنید

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

مؤلفه ARCameraManager می‌تواند یک رویداد frameReceived را ایجاد کند که شرایط نور فریم‌ها را زمانی که تخمین نور فعال است، تخمین می‌زند. اطلاعات مربوط به رویدادهای frameReceived در ساختارهای ARCameraFrameEventArgs به عنوان ARLightEstimationData ذخیره می شود.

این مراحل را برای تغییر پارامترهای یک چراغ در زمان اجرا دنبال کنید.

  1. نور جهت دار موجود در صحنه خود را ایجاد یا تغییر دهید.
  2. یک اسکریپت جدید را به Directional Light متصل کنید.

    // Sample Lighting Estimation script
    
    Light light;
    void Awake ()
    {
        light = GetComponent<Light>();
    }
    
    void OnEnable()
    {
        if (cameraManager != null)
            cameraManager.frameReceived += FrameChanged;
    }
    
    void OnDisable()
    {
        if (cameraManager != null)
            cameraManager.frameReceived -= FrameChanged;
    }
    
    void FrameChanged(ARCameraFrameEventArgs args)
    {
       // Modify `light` parameters using ARCameraFrameEventArgs.
    }
    
  3. این اسکریپت جدید را برای تشخیص تغییرات در نور تغییر دهید. برای نمونه هایی از نحوه انجام این کار، اسکریپت های BasicLightEstimation.cs و HDRLightEstimation.cs Unity را بررسی کنید.

از پروب های محیطی در صحنه خود استفاده کنید

این مراحل را برای فعال کردن کاوشگرهای محیطی در صحنه خود دنبال کنید.

  1. قرار دادن خودکار را در ARSessionOrigin صحنه خود فعال کنید.
  2. یک جزء AREnvironmentProbeManager را به ARSessionOrigin اضافه کنید.