[FreedomAI]第五周——AI的LOD

本文探讨了LOD(Level of Detail)技术从图形学引入到AI领域的概念。在图形学中,LOD用于优化性能,减少远处图元的细节渲染。在AI中,类似的思路被采用,通过调整AI的详细程度,降低对远离玩家的AI行为的计算复杂度。通过添加LODComponent组件并实时计算级别,结合FSM系统和动画系统的优化,实现了根据距离和场景动态调整AI计算资源的效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

LOD——Level of Detail,多细节层次,这本身是图形学的一个概念,在图形学中,为了对性能进行加速,我们很正常的会有这样一个想法,对于那些比较远的图元,我们是不是可以不渲染他大量的细节,而只描绘出一个轮廓呢?——而这在视觉效果上其实并不会产生太大差距,因为往往比较远的图元真正体现在图元上仅仅只是几个像素而已。由此,在图形学中,我们往往会对图元设计多个细节层次,每个细节层次都表现出不同的细节程度,比如,第一级,启用阴影,光照模型,法线贴图,全部的Mesh,第二级,启用光照模型,法线贴图,全部Mesh,第三级,不用法线贴图................................

在AI中,其实我们发现,这个概念是可以类比的,玩家当然不会关心过于远的AI是在走在跑,是不是用一些策略有效的组织进攻。所以在AI中,我们同样引用了LOD的概念。

首先对所有的AI增加一个LODComponent的组件,存着AI的LOD级别,然后再用一个系统实时的计算LOD级别。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityECS;
using FreedomAI;

namespace FreedomAI
{
	public class LODComponent:UComponent
	{
		public int mLOD;
		public static int maxLOD;
	};

	public class LODUpdateSystem:USystem
	{
		public static float[] lodDistance;

		public static GameObject mPlayer;

		public override void Init ()
		{
			base.Init ();
			this.AddRequestComponent (typeof(LODComponent));
		}

		public override void Update (UEntity uEntity)
		
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值