ThreeJs 将纹理添加到 GLTF 对象表面
ThreeJs add Texture to a GLTF object surface
我正在尝试在 gltf 加载的网格上动态应用图像。
加载模型的代码如下所示:
const gltfLoader = new GLTFLoader();
const url = 'resources/models/mesh.gltf';
gltfLoader.load(url, (gltf) => {
const root = gltf.scene;
scene.add(root);
})
从顶部看,元素看起来像一个圆角矩形:
检查导入的网格时,我可以看到 BufferGeometry 的计数为 18.000 点:
一切正常,但是如果我像这样应用纹理:
const texture = new THREE.TextureLoader().load( 'textures/land_ocean_ice_cloud_2048.jpg' );
const material = new THREE.MeshBasicMaterial( { map: texture } );
root.children[0].material = material;
图像不可见,但网格现在用一种颜色着色。
是否可以只在矩形的顶面上应用图像?
如果没有看到生成的图像,很难判断问题出在哪里。但是,我会像这样分配一个新纹理:root.children[0].material.map = texture
而不是创建一个全新的 material,因为您不想丢失 GLTF 中的所有 material 属性.
此外,MeshBasicMaterial
总是看起来很平淡,因为 it is not affected by lights。
我正在尝试在 gltf 加载的网格上动态应用图像。
加载模型的代码如下所示:
const gltfLoader = new GLTFLoader();
const url = 'resources/models/mesh.gltf';
gltfLoader.load(url, (gltf) => {
const root = gltf.scene;
scene.add(root);
})
从顶部看,元素看起来像一个圆角矩形:
检查导入的网格时,我可以看到 BufferGeometry 的计数为 18.000 点:
一切正常,但是如果我像这样应用纹理:
const texture = new THREE.TextureLoader().load( 'textures/land_ocean_ice_cloud_2048.jpg' );
const material = new THREE.MeshBasicMaterial( { map: texture } );
root.children[0].material = material;
图像不可见,但网格现在用一种颜色着色。
是否可以只在矩形的顶面上应用图像?
如果没有看到生成的图像,很难判断问题出在哪里。但是,我会像这样分配一个新纹理:root.children[0].material.map = texture
而不是创建一个全新的 material,因为您不想丢失 GLTF 中的所有 material 属性.
此外,MeshBasicMaterial
总是看起来很平淡,因为 it is not affected by lights。