这篇文章主要针对SpatialMap_Dense_BallGame场景讲一下DenseSpatialMapBuilderFrameFilter 和 DenseSpatialMapDepthRenderer 这两个脚本。
一、场景分析
EasyAR4.0的所有功能都模块化了,SpatialMap_Dense_BallGame这个场景中
绿色框的物体上面挂载的脚本就是实现稠密空间的脚本了。其他三个物体是属于基础脚本。
Sample物体上的脚本是写了UI的控制,和小球的生成,这个代码很简单,所以就不说了。
二、DenseSpatialMapDepthRenderer脚本
这个脚本比较简单,主要功能就是记录相机的视口坐标系中的深度信息,然后转换成一张texture,把这种图片传递到场景中自动生成的环境Mesh的材质中。
相机是用的是session.Assembly.Camera也就是Main Camera,
if (!RenderDepthCamera || !MapMeshMaterial)
{
return;
}
if (depthTexture && (depthTexture.width != Screen.width || depthTexture.height != Screen.height))
{
Destroy(depthTexture);
}
if (!depthTexture)
{
depthTexture = new RenderTexture(Screen.width, Screen.height, 24);
MapMeshMaterial.SetTexture("_DepthTexture", depthTexture);
}
RenderDepthCamera.targetTexture = depthTexture;
RenderDepthCamera.RenderWithShader(Shader, "Tag");
RenderDepthCamera.targetTexture = null;
代码主要就是通过一个特殊shader 渲染相机,生成一个可以说是深度图的图片,然后传递给材质

本文深入探讨了EasyAR4.0中SpatialMap_Dense_BallGame场景的两个核心脚本:DenseSpatialMapDepthRenderer和DenseSpatialMapBuilderFrameFilter。详细解析了它们如何实现深度信息渲染及稠密三维重建。
最低0.47元/天 解锁文章
4083

被折叠的 条评论
为什么被折叠?



