网格过滤器(MeshFilter)

一、概述

MeshFilter(网格过滤器)组件用于持有和管理网格数据的引用。它继承自 Component 类,与同一节点上的 MeshRenderer 组件配合使用——MeshFilter 负责提供网格(Mesh)数据,MeshRenderer 负责将该网格渲染到场景中。

在 IDE 的组件面板中,MeshFilter 组件的面板效果如图1-1所示:

1-1

(图1-1)

二、属性说明

2.1 sharedMesh(共享网格)

MeshFilter 最核心的属性是 sharedMesh,类型为 Mesh。它持有对网格资源的引用,决定了该节点显示什么形状的模型。

在 IDE 面板中,点击 Mesh 属性名称旁的箭头标识符,可以调出选取列表,从中选择想要引用的网格资源。

注意:当更改 MeshFilter 引用的网格时,该节点上其他组件的设置不会自动改变。例如,MeshRenderer 不会更新其设置,这可能导致渲染结果不符合预期。如果发生这种情况,请根据需要手动调整其他组件的设置。

三、代码示例

3.1 设置网格

// 创建 3D 节点
let sprite3D = new Laya.Sprite3D();
scene.addChild(sprite3D);

// 添加 MeshFilter 组件
let meshFilter = sprite3D.addComponent(Laya.MeshFilter);

// 设置内置基础网格
meshFilter.sharedMesh = Laya.PrimitiveMesh.createBox(1, 1, 1);       // 立方体
meshFilter.sharedMesh = Laya.PrimitiveMesh.createSphere(0.5, 32, 32); // 球体
meshFilter.sharedMesh = Laya.PrimitiveMesh.createCylinder(0.5, 2);    // 圆柱
meshFilter.sharedMesh = Laya.PrimitiveMesh.createCapsule(0.5, 2);     // 胶囊体
meshFilter.sharedMesh = Laya.PrimitiveMesh.createPlane(10, 10);       // 平面

3.2 获取和替换网格

// 获取当前网格引用
let meshFilter = node.getComponent(Laya.MeshFilter);
let currentMesh = meshFilter.sharedMesh;

// 通过加载替换网格
Laya.Mesh.load("res/models/myModel.lm", Laya.Handler.create(this, (mesh: Laya.Mesh) => {
    meshFilter.sharedMesh = mesh;
}));

3.3 配合 MeshRenderer 使用

MeshFilter 和 MeshRenderer 通常成对出现在同一个节点上:

let sprite3D = new Laya.Sprite3D();
scene.addChild(sprite3D);

// 添加网格过滤器和网格渲染器
let meshFilter = sprite3D.addComponent(Laya.MeshFilter);
let meshRenderer = sprite3D.addComponent(Laya.MeshRenderer);

// 设置网格数据
meshFilter.sharedMesh = Laya.PrimitiveMesh.createBox(1, 1, 1);

// 设置渲染材质
meshRenderer.material = new Laya.BlinnPhongMaterial();

创建基础模型请参考 3D基础显示对象

Copyright ©Layabox 2026 all right reserved,powered by LayaAir Engine更新时间: 2026-06-02 11:29:27

results matching ""

    No results matching ""