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

FXGL 3D:如何为3D盒子添加PNG图片作为表面

在FXGL中为3D盒子添加PNG纹理的方法

你可以通过PhongMaterial的纹理映射功能实现,核心是将PNG图片加载为JavaFX Image 对象,再绑定到材质的漫反射纹理(diffuseMap)上,具体步骤如下:

步骤1:加载PNG纹理

FXGL提供了内置的资源加载器,也可以直接用JavaFX的Image类加载,两种方式任选:

  • 方式一(推荐,用FXGL资源管理):
    // 假设PNG文件放在项目的assets/textures/box_skin.png路径下
    Texture texture = FXGL.getAssetLoader().loadTexture("box_skin.png");
    
  • 方式二(自定义路径加载):
    // 从类路径加载,适合非默认资源目录的情况
    Image textureImage = new Image(getClass().getResourceAsStream("/textures/box_skin.png"));
    

步骤2:创建带纹理的PhongMaterial

将加载好的图片绑定到PhongMaterial的diffuseMap(漫反射纹理,即表面显示的贴图):

PhongMaterial texturedMaterial = new PhongMaterial();
// 如果用方式一,取Texture的Image对象
texturedMaterial.setDiffuseMap(texture.getImage());
// 如果用方式二,直接传入Image
// texturedMaterial.setDiffuseMap(textureImage);

步骤3:为盒子设置材质

直接调用Box的setMaterial()方法绑定材质:

// 创建一个10x10x10的3D盒子
Box box = new Box(10, 10, 10);
box.setMaterial(texturedMaterial);

注意事项

  • 确保PNG文件路径正确,FXGL默认资源根目录是assets,所以放在assets/textures下的文件可以直接用文件名加载
  • 如果是带透明通道的PNG,JavaFX会自动处理透明度,无需额外配置
  • 除了漫反射纹理,还可以通过setSpecularMap()设置高光纹理,实现更复杂的材质效果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 06:23:21