У меня есть файл .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