【发布时间】:2020-03-19 07:38:07
【问题描述】:
我有一个像这样导入的 .obj 文件:
OBJLoader.load('/models/model.obj', m => {
let model = m.children[0];
model.material = new THREE.MeshBasicMaterial();
scene.add(model);
});
我使用 THREE.MeshBasicMaterial 覆盖默认材质,因此我可以单独编辑贴图。
稍后,我得到一个 CanvasTexture 并将其用作地图:
let texture = new CanvasTexture(canvas);
model.material.map = texture;
model.material.needsUpdate = true;
这似乎可行,但我无法正确看到场景中对象的纹理 - 看起来它非常“放大” - 只显示纹理的整体颜色,而不是任何细节。我玩过texture.repeat,但似乎无法得到我想要的,即:
纹理应该出现在对象上并缩放以填充对象。我在 Blender 中制作了这个对象,它有很多面,但我希望纹理能够在所有面上填充整个对象,而不是重复。
我怎样才能做到这一点?
编辑:这是我正在使用的模型https://drive.google.com/drive/folders/1y6NmxNpamCtWsiBPlDhndnvQbxYPVgB7?usp=sharing
【问题讨论】:
-
有机会在这个帖子中分享模型吗?
-
@Mugen87 已编辑链接
标签: javascript canvas three.js