You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Babylon.js中加载纹理并对OBJ模型进行编辑与纹理添加

在Babylon.js中加载纹理并编辑OBJ模型

一、加载纹理并应用到OBJ模型的基础流程

  • 加载纹理资源:用BABYLON.Texture类创建纹理实例,传入纹理路径和当前场景:
    const texture = new BABYLON.Texture("textures/your-texture.jpg", scene);
    
  • 创建材质(推荐用PBR材质,适配现代渲染需求):
    const material = new BABYLON.PBRMetallicRoughnessMaterial("objMat", scene);
    
  • 绑定纹理到材质:根据纹理类型赋值到对应属性,比如漫反射纹理用baseTexture:
    material.baseTexture = texture;
    
  • 将材质应用给模型网格:找到OBJ对应的Mesh实例,把材质赋值过去:
    mesh.material = material;
    

二、对BABYLON.SceneLoader.Append加载的OBJ模型进行编辑与纹理添加

注意Append是异步操作,必须在加载完成回调里处理模型,否则可能找不到目标对象:

BABYLON.SceneLoader.Append(
  "skull/", 
  "skull.obj", 
  scene,
  (loadedScene) => {
    // 1. 定位加载后的模型(OBJ可能是多个子网格的集合,按名称查找或遍历)
    const skullModel = loadedScene.getMeshByName("skull");
    if (!skullModel) return;

    // 2. 模型编辑示例:缩放、位移、旋转
    skullModel.scaling.set(2, 2, 2); // 放大2倍
    skullModel.position.y = 1; // 向上移动1个单位
    skullModel.rotation.y = Math.PI / 4; // 绕Y轴旋转45度

    // 3. 添加纹理与颜色
    // 加载纹理
    const skullTex = new BABYLON.Texture("textures/skull-texture.png", loadedScene);
    // 创建并配置材质
    const skullMat = new BABYLON.PBRMetallicRoughnessMaterial("skullMat", loadedScene);
    skullMat.baseTexture = skullTex;
    // 叠加纯色(比如偏红的色调)
    skullMat.baseColor = new BABYLON.Color3(1, 0.2, 0.2);
    // 将材质应用给模型下所有子网格
    skullModel.getChildMeshes().forEach(mesh => {
      mesh.material = skullMat;
    });
  }
);

额外注意事项

  • 如果OBJ附带.mtl材质文件,Append会自动加载默认材质,若要替换直接覆盖即可。
  • 纹理路径要确保正确,避免因路径错误导致纹理加载失败。
  • 若需修改模型顶点数据,可直接操作mesh.positions数组,修改后调用mesh.updateVerticesData(BABYLON.VertexBuffer.PositionKind, mesh.positions)生效。

内容的提问来源于stack exchange,提问作者mnwer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 14:01:02