集智书童 | 清华大学/NVIDIA/斯坦福等在没有3D数据的情况下训练一个开放词汇的单目3D物体检测模型 !

OVM3D-Det:无3D数据训练单目3D物体检测模型

本文来源公众号“集智书童”,仅用于学术分享,侵权删,干货满满。

原文链接:清华大学/NVIDIA/斯坦福等在没有3D数据的情况下训练一个开放词汇的单目3D物体检测模型 !

最近,由于其在自动驾驶和机器人领域的广泛应用,无词汇3D目标检测受到了广泛关注,该方法旨在有效识别以前未见过的领域中的新类。

然而,现有的基于点云的开放式无词汇3D检测模型受到高部署成本的限制。在这项工作中,作者提出了一种新的开放式无词汇单目3D目标检测框架,称为OVM3D-Det,该框架仅使用RGB图像训练检测器,使其既具有成本效益又具有可扩展性,可以访问公开的数据。与传统方法不同,OVM3D-Det不需要高精度的激光雷达或3D传感器数据作为输入或生成3D边界框。

相反,它使用开放式无词汇2D模型和伪激光雷达来自动 Token RGB图像中的3D目标,促进开放式无词汇单目3D检测器的学习。然而,直接使用伪激光雷达生成的标签训练3D模型是不够的,因为噪声点云估计的边界框不准确,被严重遮挡的目标。

为了解决这些问题,作者引入了两种创新设计:自适应伪激光雷达侵蚀和基于大型语言模型先验知识的边界框精炼。这些技术有效地校准了3D标签,并使3D检测器仅使用RGB进行训练。

大量实验表明,OVM3D-Det在室内和室外场景下的性能优于 Baseline 。

1 Introduction

近年来,由于其在自动驾驶等领域的广泛应用,3D目标检测吸引了大量关注,增强现实,具身AI,等等。虽然许多3D检测器在3D感知发展过程中表现出色,并持续刷新流行的基准测试[14; 10; 52]的最先进记录,但它们通常难以将泛化到训练数据之外的其他目标类别,这严重限制了它们在多样化实际场景中的应用。为了解决这一挑战,许多以前的工作已经取得了进展,以在更广泛的场景中检测开放词汇目标,即在训练过程中关注识别和定位不属于已知类别的目标。

然而,这些基于开放词汇的3D检测器严重依赖于从高精度LiDARs或3D传感器捕获的点云,这需要昂贵的部署。相反,在另一项研究中,单目3D目标检测器直接输入单视图像,对目标进行定位和识别3D边界框。在没有昂贵的点云获取的情况下,单目3D检测器拓宽了部署目标检测模型的经济平台。尽管单目方法在推理过程中解放了3D目标检测的昂贵点云,但它们的训练过程仍然需要在密集 Token 过程中使用图像和LiDAR或3D传感器数据对,这阻止了进一步的数据扩展。鉴于在线RGB图像的丰富性,有人可能问:单目3D检测器的训练是否可以从大量可用的RGB图像中受益,以提高开放词汇感知能力?

在这篇论文中,作者通过提出一个名为 OVM3D-Det 的新颖开放词汇单目3D目标检测框架来回答这个问题。该框架仅需要RGB图像进行训练,可以利用各种数据,并在部署时发挥其开放词汇潜力,如图1所示。为了从大量图像中挖掘有价值的信息并探索开放集物体,作者利用开放词汇2D模型找到属于新类别的物体。为了获取其对应的3D边界框,作者采用伪LiDAR[57]辅助深度估计器确定物体在3D空间中的位置。

然而,这种框架的简单实现导致了不准确的3D边界框,从而降低了经过训练的开源3D检测器的性能(参见表5(a),7.3%与18.5%AP)。作者归因于高度嘈杂的伪激光雷达。尽管最近深度估计模型[16, 67, 40, 56, 65]在各种结构化环境和具有不同内参的相机之间展示了惊人的零样本泛化能力,但伪激光雷达在自动标注过程中可能会累积错误:

(1)生成的点云噪声较大,难以将目标与背景中的伪迹区分开;

(2)目标物体可能被遮挡,其实际大小难以估计,因为点云是从单一视角生成的。

面对这些挑战,作者在OVM3D-Det框架中设计了两个创新组件。为了减轻第一个问题,作者提出了一种自适应侵蚀方法,用于在伪LiDAR中过滤噪声并保留目标目标。这种方法根据目标大小自适应地移除靠近目标的噪声点,从而提高了3D边界框的精度。对于第二个问题,如果目标的大部分点都缺失,准确估算其尺寸是具有挑战性的。作者通过 Prompt 大型语言模型(如GPT-4[1])来获得每个类别中的目标的先验知识,以确定合理的边界框,并设计边界框搜索技术来优化不合理的边界框。最后,作者训练了开放词汇单目3D目标检测器,使其使用伪边界框进行定位,并使用与文本嵌入对齐进行识别。

总之,本文的贡献有三个方面:

(1) 作者提出了首个针对图像为基础的开放式多词汇3D检测任务,覆盖室内和室外场景;

(2) 作者引入了一个框架,OVM3D-Det,该框架无需依赖激光点云即可自动标注3D物体,从而扩展了利用互联网规模数据的能力;

(3) 作者提出的检测器,基于自标注伪目标进行训练,明显优于 Baseline ,展示了作者方法的有效性。

相关研究 无监督3D目标检测 近年来,3D场景理解的无监督学习越来越受到关注。这个新兴领域利用了2D视觉语言模型的零样本识别能力,使其能够泛化到新类别的目标。在这种背景下,许多工作探索了无监督3D目标检测,旨在实现新目标的识别。OV-3DET [30]引入了跨模态对比学习,将图像、点云和文本模态联系起来,使得点云检测器可以利用视觉语言预训练模型[45]。CODA [6]在标注的基础类别上训练了一个无类别3D检测器,逐步发现新目标并将其纳入训练标签。然而,以前的方法需要点云作为输入,具有较高的部署成本,而作者的研究关注无监督单目3D目标检测。

单目3D目标检测旨在从单张图像中预测3D边界框和物体类别,这由于将3D转换为2D时深度信息的丢失而具有挑战性。以前的工作利用额外的先验信息,如几何约束或地面深度,以提高性能。伪LiDAR[43, 57, 58, 68]使用现成的深度估计器生成伪LiDAR点,然后使用基于LiDAR的3D检测器。Cube R-CNN[3]通过使用虚拟深度,使用一致的虚拟相机内参将目标深度转换,从而提高了模型在数据集上的泛化能力。虽然这些方法已经取得了令人印象的结果,但它们都需要人工标注的3D标注进行模型训练。为了减少耗时的3D数据标注过程,一些工作[38, 18, 54]探索了单目3D目标检测的弱监督方法。尽管这些方法消除了3D标注的需要,但仍需要原始LiDAR数据。在[21]中,为了解决3D标注的缺乏,他们使用现成的深度估计器增强3D定位,通过自我知识蒸馏将此信息传递给3D检测器。然而,由于深度估计模型是在用于3D检测的数据集上预训练的,这种方法的泛化能力无法保证。与弱监督方法不同,作者旨在减轻昂贵的3D数据获取的负担,以便大量图像数据和增加模型的开放词汇能力。

深度估计模型。单目RGB图像重建深度是一个欠定问题[68, 36]。MiDaS[46]引入了一个仿射不变的目标,以忽略不同数据集上的深度尺度和变化,估计相对深度。最近,在大规模数据集上训练的视觉基础模型的成就[34, 24]鼓励了各种基础深度估计模型的开发。Depth Anything[65]扩展到大量的无标签数据,显著扩大了数据覆盖范围,从而提高了泛化能力。Metric3D[67]指出,通用的关键在于解决不同相机模型的度量歧义,并提出了一种通用的相机空间转换来处理尺度歧义问题。Unidepth[40]设计了一个相机模块,可以生成密集的相机表示来指导深度预测模块,使其能够针对给定图像进行零样本深度预测。这些深度估计模型的巨大进步为作者的方法生成实际伪激光雷达奠定了基础。

作者的目标是使用图像数据无监督地训练一个开放词汇单目3D模型,无需LiDAR点云。为实现这一目标,作者提出一个自动标注框架OVM3D-Det,该框架为RGB图像生成3D标签。OVM3D-Det首先为每个实例生成深度图,并将其反投影为伪LiDAR点云。然后,它对实例 Level 的伪LiDAR数据进行后处理,以消除伪影和噪声(见第3.1节)。接着,作者将一个紧密拟合于改进的伪LiDAR的3D边界框,并利用物体先验知识评估该框;如果认为其不合理,作者寻找最优的框。 (见第3.2节)。最后,作者在自动标注的数据上训练一个Cube R-CNN模型(见第3.3节)。整个框架如图3所示。

Generate Pseudo-LiDAR

自适应伪LiDAR侵蚀。作者观察到伪LiDAR总体上令人印象深刻,但仍表现出相当大的噪声,这使得直接从伪LiDAR中获取精确的3D边界框具有挑战性。如图2所示,与LiDAR数据相比,伪LiDAR更密集但也更嘈杂。作者发现伪LiDAR中不准确的主要来源是预测 Mask 边缘的投影错误。这个问题出现的原因是前景物体和背景,在深度值上可能存在较大差异,在图像中可能看起来非常接近,从而使物体边界处的深度估计复杂化。因此,作者提出利用图像侵蚀操作消除不准确的物体 Mask 边缘,同时保留其他区域。图像侵蚀是数字图像处理中的形态操作。尽管其简单,但侵蚀过程有效地降低了噪声,从而得到更清晰的伪LiDAR表示。如图3(b)所示,侵蚀汽车 Mask 边缘后,汽车的伪LiDAR在车辆顶部前不再包含噪声。请参阅第C节以获取详细信息。

另一方面,作者注意到,强烈的侵蚀可能会完全消除像远处行人这样的小物体,而轻微的侵蚀可能会在大型物体上留下相当大的噪声。因此,作者引入了一个自适应侵蚀模块来解决这个问题。具体来说,这个模块根据RGB图像中地面SAM生成的 Mask 大小来调整侵蚀技术。具体来说,小物体将经历较少的侵蚀,保留更多的面积,而较大的物体将失去更多的边缘,以确保更精确的伪激光雷达。

Generate Pseudo 3D Bounding Boxes

基于改进的伪激光雷达,作者生成3D边界框作为伪标签,以赋予作者的单目3D目标检测模型定位能力。在不失去普遍性的前提下,作者假设场景中的物体的3D边界框与地面平行。为了生成这样的边界框,作者首先在摄像机坐标系C中估计地面平面方程。与第3.1节中的方法相同,作者使用"ground"为户外场景或"floor"为室内场景生成伪激光雷达。作者将这些 Mask 反投影到3D空间中,使用估计的深度,并应用最小二乘法拟合这些点,从而推导出表示地面的方程。然后,将伪激光雷达转换到新的坐标系C'中,其中原点与摄像机坐标系C的原点对齐,但水平平面与地面平行。

如图3(c)所示,作者进一步将点云投影到地面平面以估计箱子的方向。遵循[38]中描述的方法,作者计算伪激光雷达中每对点的方向,并构建这些计算方向的直方图。直方图中频率最高的方向被选为物体方向。此外,作者尝试使用主成分分析(PCA)通过线性变换从伪激光雷达中提取主要特征分量,并将具有最大方差的方向指定为边界框的方向。通过实验,作者观察到更简单且更有效的PCA方法可以有效地提取物体的方向(见表5(c))。

边界框搜索。在估计方向之后,作者根据目标的朝向为每个目标生成一个紧密的3D边界框,这些边界框被记录为粗糙的伪框。然而,由于图像中可能存在目标的遮挡,生成的伪LiDAR可能只覆盖部分目标。另一方面,细化的伪LiDAR仍然可能包含噪声。因此,作者观察到包含的边界框可能会过小或过大。为了生成适当的伪标签用于训练,作者进一步在粗糙的伪框基础上搜索最优边界框。

作者首先确定粗糙伪框的尺寸是否在合理范围内。大型语言模型(LLMs),如GPT-4 [1]被用来收集物体典型尺寸的数据。例如,作者将GPT-4 Prompt 为:“请根据实际尺寸,为类别的物体提供(长度,宽度,高度)。” 在作者的实验中,作者发现GPT-4可以提供特定类别物体通常大小的可靠信息,包括它们的宽度、长度和高度。当作者将GPT-4预测的物体尺寸替换为训练数据集的真实标注中统计推导的尺寸时,性能相似(见表5(d))。GPT-4预测的尺寸被视为类别的先验信息。如果粗糙伪框的尺寸在其对应类别先验信息的合理范围内,那么粗糙伪框就被认为是有效的伪标签。这个范围被设置为tao1到tao2倍的先验值,其中tao1表示下阈值,如果太小或太大,它将经过最优框集。

基于粗略的伪框,提出了潜在的 Box 。由于伪LiDAR是从物体表面捕获的点进行投影构建的,因此粗略伪框至少应该有一个边缘属于最优伪框。因此,从鸟瞰视角看,对于粗略伪框的四个角落,作者提出了两个具有类别先验的两个可能方向上的 Box (见图3(d)中的蓝点和两个蓝 Box )。也就是说,每个粗略伪框有8个 Proposal 的 Box 。

然后作者通过一个搜索框的过程选择最佳拟合的 Proposal 框。由于单目RGB相机只能捕捉到面向相机的物体的表面,有效的边界框应该比远离相机的点云更集中于靠近相机边缘的区域。因此,作者借鉴了[38]中的光线路积分损失来确定哪个框是合适的。如图4(a)所示,损失计算了每个LiDAR点与该点到最近交点的 Proposal 框与相机光线的交点之间的距离。然而,仅计算光线路积分损失是不够的。由于光线路积分损失只包括相机光线与框的交点,有时可能会存在捷径。如图4(b)所示,盒C的光线路积分损失更小,但它显然不是作者想要的。因此,作者提出添加一个点比率损失,它考虑了被框住的点云与整个物体点云的比例。总的搜索框损失是这两个损失的总和:

Training Detector on Auto-Generated Pseudo Labels

Experiment Setup

作者在KITTI[14]和nuScenes[5]数据集上评估OVM3D-Det在室外场景下的性能,并在SUN RGB-D[52]和ARKitScenes[2]数据集上评估在室内场景下的性能。请注意,这些数据集并未出现在Unidepth[40]的训练数据中,因此不存在数据泄露。KITTI[14]包含7,481张训练图像和7,518张测试图像。由于官方测试集不可用,作者遵循[3]将训练集重分为3,321张训练图像,391张验证图像和3,769张测试图像。对于nuScenes[5],作者使用26,215张训练图像,1,915张验证图像和6,019张测试图像。SUN RGB-D[52]包括总共10,000个样本,每个样本带有定向的3D边界框,其中4,929个样本用于训练,356个样本用于验证,5,050个样本用于测试,遵循[3]。ARKitScenes[2]包括48,046张训练图像,5,268张验证图像和7,610张测试图像。

Main Results

Baseline 。 到目前为止,作者是第一个探索开放词汇单目3D目标检测模型的团队。因此,为了更好地评估所提出的任务,作者引入了以下 Baseline :

1)作者将Cube R-CNN [3]用所有数据集标注进行训练,包括基础和新的类别,以建立正则 Baseline 。

2)作者开发另一个 Baseline ,通过利用Grounding DINO使Cube R-CNN具有开放词汇能力,具体而言,作者首先使用训练集的基础类别标注训练一个无类别Cube R-CNN检测模型。这使得它能够在测试时定位来自新类别实例,而不仅仅局限于一组固定的类别。在测试时,作者使用Cube R-CNN预测3D边界框建议,并使用Grounding DINO从图像中获取2D检测结果。作者将3D边界框映射到图像帧上,并与Grounding DINO的预测进行匹配。从Grounding DINO匹配的2D检测框中,作者然后为相应的3D边界框分配类别。

3)尽管作者的OVM3D-Det模型不需要任何标注进行训练,但作者提供了一个比较 Baseline ,它使用基础类别标注进行训练,使用伪标签进行新类别,表示为OVM3D-Det。

结果。作者在表1和表2中分别报告了户外和室内数据集上的无监督单目3D目标检测结果。可以观察到,无监督的OVM3D-Det模型在新型类别上显著优于 Baseline 。具体而言,它在KITTI数据集上平均精确度(AP)提高了6.7%,在nuScenes数据集上提高了9.7%,在SUN RGB-D数据集上提高了8.5%,在ArkitScenes数据集上提高了16.8%。此外,在基于 GT 标注的基类和新型类别的伪标签上训练的OVM3D-Det模型在新类别上的性能也显著优于 Baseline 。这表明作者的框架确实为各种类别生成准确的伪标签,从而提高了模型在新类别上的性能。

在图6中,作者展示了模型在KITTI数据集上的性能随着训练数据量的变化。随着训练数据的增加,作者观察到性能的持续改善。这突显了作者的模型的强大潜力,表明在利用更易获得的图像数据时,它可以训练出具有更广泛词汇能力的模型。

与基于点云的方法相比。为了与最先进的基于点云的开词汇量3D检测方法进行比较,作者首先简单评估现有基于点云的开词汇量检测器OV-3DET [30],该检测器在点云数据上进行训练和测试。具体而言,作者将OV-3DET的开词汇量输入替换为从RGB图像和估计深度图中未校正的伪LiDAR。OV-3DET中的其他部分保持不变以进行公平比较。如表3所示,仅更改输入数据格式导致性能下降至3.4% AP。这一现象也在前人的工作中观察到并讨论[36, 66, 60],作者归因于真实点云和伪LiDAR之间的分布差异。

在经过伪激光雷达训练后,OV-3DET从3.4%提高到7.1% AP,相较于原模型实现了2倍的改进。CODA [6] 相比原模型略有提升。在基于点云的开放词汇3D目标检测方法上,OV-3DET(训练时使用点云)在SUN RGB-D上的AP为10.8,OVM3D-Det为15.1。

然而,作者的方法在10.8% AP上的性能仍然证明了作者的优势,因为作者的方法专注于适应伪LiDAR的噪声特性,而之前的开放词汇3D检测器主要是为真实点云生成伪标签而设计的。作者方法与其他 Baseline 的主要区别在于自适应伪LiDAR侵蚀和边界框细化技术,并结合了语言模型的先验知识。作者的方法在生成伪标签方面比其他 Baseline 更有效。

对于户外3D检测,作者也试图建立另一个 Baseline ,因为OV-3DET [30]仅包括室内数据的结果。作者试图使用伪激光雷达数据集(KITTI数据集)训练OV-3DET。如表4所示,仅在伪激光雷达点上进行训练会导致相当弱的性能,只有1.3%的AP。这个结果反映了户外数据的特点,即巨大的空间尺度可能导致难以忍受的伪标签错误。因此,由于原始伪激光雷达的不准确边缘,生成合理和可靠的伪框具有挑战性。

Ablation Studies

作者在KITTI数据集上进行了消融研究。结果见表5。作者报告了每个模型在所有类别上的平均AP性能。

与Naive Framework的比较。如果作者移除应用于伪LiDAR和边界框的改进(即,直接使用原始伪LiDAR并紧密将其框定以获得框),模型性能将减少11.2%的AP。这一结果表明,作者的框架在解决嘈杂伪LiDAR方面的有效性,其中伪LiDAR数据的改进和估计的边界框的改进证明至关重要。

Mask 侵蚀(Mask Erosion) 作者将自适应侵蚀过程替换为固定核侵蚀,导致2.1% AP的下降。这证明了作者提出的自适应侵蚀模块的有效性,表明标准固定 Kernel 可能不适合所有情况,因为它可能过度侵蚀小物体,或者对于具有大量噪声的大物体来说是不够的。

方向估计。在这里,作者比较了两种确定 Box 方向的方法:使用主成分分析(PCA)或计算伪LiDAR中每对点方向分布的分布。作者发现,简单而高效的PCA方法表现更好,超过了1.8%的AP。

物体的维度先验是本文方法的一个重要组成部分。它们不仅有助于识别边界框的不合理预测,还有助于校正边界框的大小。如表5(d)所示,如果没有这些先验,AP将显著降低4.5%。值得注意的是,当作者利用大型语言模型或数据集统计推导的先验,结果相似。在B节中,作者对所有数据集上LLM生成先验和从数据集统计推导的形状先验进行了全面的比较。这表明大型语言模型具有强烈的常识理解,进一步强调了作者的方法在广泛数据上的潜力。作者还测试了用于确定框合理性的下阈值tao1和上阈值tao2的敏感性。如表5(f)和(g)所示,它们在较宽范围内保持稳定。

盒形搜索损失。作者进一步研究了不同损失函数对评估边界框 Proposal 的影响。结果如表5(e)所示。仅使用光线路跟踪损失导致性能不佳,获得12.2% AP。然而,添加点比例损失显著提升了性能,达到18.5% AP。

此外,作者还可以通过自训练方法来进一步优化模型,该方法涉及使用先前的良好训练模型的结果作为后续训练过程的伪标签。如表6所示,自训练可以进一步改善最初生成的伪框质量,提高在不同距离的目标检测性能。

Qualitative Results

如图5所示,作者用期望类别的问题描述来 Prompt OVM3D-Det模型,从而获得相应的检测框。结果表明,该模型在室内和室外场景中,都能够定位并识别各种类型和大小的物体。

5 Conclusion

在本文中,作者提出了OVM3D-Det,这是首个针对基于图像的3D开放词汇检测的框架。OVM3D-Det可以仅使用RGB图像自动为开放词汇3D边界框进行标签,探索互联网中无处不在的图像数据的巨大潜力。

为了解决预测伪LiDAR中的噪声点云和被遮挡的目标物体,作者设计了两种创新解决方案:自适应伪LiDAR侵蚀和世界知识 bounding box搜索。在OVM3D-Det下进行训练的开放词汇检测器在AP至少提高+6.7%,最高可提高+16.8%。

总之,作者提出了一种简单 yet 惊人的有效的基于图像的3D开放词汇检测基准方法,希望它能为未来的研究提供新的研究点。

参考文献

[0]. Training an Open-Vocabulary Monocular.

THE END !

文章结束,感谢阅读。您的点赞,收藏,评论是我继续更新的动力。大家有推荐的公众号可以评论区留言,共同学习,一起进步。

<think>嗯,用户的问题是关于在Three.js中删除已经加载到场景中的模型。特别是他们提到了使用modelLoader.loadModelToScene方法后如何移除glb模型。首先,我需要确认Three.js中移除模型的标准方法,因为用户可能使用的是自定义的加载方法,比如modelLoader.loadModelToScene,这可能不是Three.js的内置方法。 首先,我应该回忆Three.js的基本结构。场景(Scene)是一个容器,包含了所有的3D对象,比如网格(Mesh)、灯光(Light)、相机(Camera)等。当用户加载一个模型后,通常这个模型会被添加到场景中作为场景的子对象。要移除模型,需要从场景中将其移除,并释放相关资源。 但用户提到的modelLoader.loadModelToScene可能是一个自定义的加载器方法,我需要考虑这种情况。假设这个方法将加载的模型添加到场景中,并可能返回该模型的引用或将其存储在某个变量中。用户需要知道如何正确地移除这个模型。 接下来,我需要分步骤思考如何正确移除模型。首先,必须从场景中移除模型对象。如果模型一个Object3D实例(比如Group或Mesh),可以使用scene.remove(model)来移除。但还需要考虑模型可能包含多个子对象,需要遍历并全部移除。同时,材质(Material)和几何体(Geometry)需要手动释放内存,因为Three.js不会自动处理这些资源。此外,如果模型有动画或事件监听器,也需要停止动画并移除事件监听器,避免内存泄漏。 然后,我需要验证这些步骤是否正确。比如,在Three.js文档中,确实提到使用scene.remove()来移除对象。材质和几何体的dispose()方法也是必要的,因为WebGL会持有这些资源的引用,不及时释放会导致内存占用增加。对于自定义加载器,用户需要确保在加载时保存模型的引用,以便后续操作。 用户可能遇到的问题包括:模型未正确从场景中移除,导致仍然可见;或者内存泄漏,因为材质和几何体未被释放。因此,在回答中需要强调这两个方面。此外,如果用户使用的是自定义加载器,可能需要检查该加载器是否有特定的方法用于移除模型,或者是否有其他资源需要处理。 最后,需要提供示例代码,展示如何正确移除模型。包括从场景中移除、释放资源、处理动画和事件等步骤。同时,提醒用户确保在加载模型时保留引用,这样才能在之后进行移除操作。 可能的相关问题包括如何优化Three.js的内存管理,如何处理复杂模型的加载和卸载,或者如何检测内存泄漏。这些可以作为相关问题推荐给用户,帮助他们进一步了解相关主题。</think>在Three.js中删除已加载到场景的模型需要分步骤操作,以下是具体实现方法: ### 1. 获取模型引用 首先需在加载模型时保存返回的模型对象: ```javascript let loadedModel; modelLoader.loadModelToScene(&#39;model.glb&#39;, (model) => { loadedModel = model; // 保存模型引用 scene.add(model); // 添加到场景 }); ``` ### 2. 移除模型的核心步骤 通过遍历模型树进行彻底删除: ```javascript function removeModel() { if (!loadedModel) return; // 递归遍历所有子对象 loadedModel.traverse((child) => { if (child.isMesh) { // 释放几何体和材质资源 child.geometry.dispose(); if (child.material) { if (Array.isArray(child.material)) { child.material.forEach(mat => mat.dispose()); } else { child.material.dispose(); } } } }); scene.remove(loadedModel); // 从场景移除 loadedModel = null; // 清除引用 } ``` ### 3. 高级内存管理 对于复杂场景建议: - 使用`performance.memory`监测内存变化 - 添加模型时记录时间戳,超过闲置时间自动卸载 - 使用`TextureLoader`的`dispose()`处理纹理资源 ### 4. 特殊场景处理 ```javascript // 处理动画系统 if (loadedModel.animations) { mixer.stopAllAction(); } // 移除事件监听 loadedModel.removeEventListener(&#39;click&#39;, clickHandler); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值