arcore - 如何在前置摄像头中调整 ARCore 光线估计
问题描述
您好我有一些关于ARCore材质和前置照明的问题和疑问 - 摄像头
当我从 substancfe 画家绘制网格并导出其纹理然后将它们放在统一材质上并分配给网格后。模型很酷,但是当照明在游戏中时。模型变黑。纹理不出现。我如何在前置摄像头中进行照明,您可以提供任何建议吗?谢谢你。
解决方案
为场景中的所有灯光应用来自相机的灯光估计,并使用 ARFoundation 渲染设置环境光
using UnityEngine;
using System.Collections.Generic;
using UnityEngine.XR.ARFoundation;
public class lightEstimationController: MonoBehaviour
{
private ARCameraManager arCameraManager;
private Light[] lights;
private void Awake()
{
lights = GetComponentsInChildren<Light>();
arCameraManager = this.GetComponent<ARCameraManager>();
}
private void OnEnable()
{
if (arCameraManager)
arCameraManager.frameReceived += FrameUpdated;
}
private void OnDisable()
{
if (arCameraManager)
arCameraManager.frameReceived -= FrameUpdated;
}
private void FrameUpdated(ARCameraFrameEventArgs args)
{
if(args.lightEstimation.averageBrightness.HasValue)
{
for(int i=0;i< lights.Length; i++)
{
lights[i].intensity = args.lightEstimation.averageBrightness.Value;
if (args.lightEstimation.averageColorTemperature.HasValue)
{
lights[i].colorTemperature = args.lightEstimation.averageColorTemperature.Value;
}
if (args.lightEstimation.colorCorrection.HasValue)
{
lights[i].color = args.lightEstimation.colorCorrection.Value;
}
}
float factor = args.lightEstimation.averageBrightness.Value;
Color color = new Color(SceneConfig.SceneLightColor.r * factor, SceneConfig.SceneLightColor.g * factor, SceneConfig.SceneLightColor.b * factor);
RenderSettings.ambientLight = color;
// Debug.Log( $"Color Correction: {args.lightEstimation.colorCorrection.Value}");
// Debug.Log($"Color Temperature: {args.lightEstimation.averageColorTemperature.Value}");
// Debug.Log ( $"Brightness: {args.lightEstimation.averageBrightness.Value}");
}
}
}
推荐阅读
- reactjs - 使用样式组件
- elixir - 如何查询 binary_id 字段或字符串?
- node.js - Nodejs中firebase函数中的离线Jest单元测试实现
- blender - Fbx 没有导入
- angular - 为什么在 Angular 组件的输入和输出上使用 bindingPropertyName?
- php - mysql_connect 和 openssl_decrypt 的问题
- mysql - Sequelize 如何比较日期的年份和月份
- python - 错误的 SciPy 1.7 源代码构建
- sql-server - Azure Data Studio 连接问题
- rust - 我可以定义一个具有返回特征对象的通用函数的特征吗?