Вавилонская текстура масштаба и настройки на лице - PullRequest
1 голос
/ 19 января 2020

Я создаю DynamicTexture с холстом, на котором нарисовано загруженное изображение, и я хотел бы применить его только к одной грани рамки, чтобы убедиться, что загруженное изображение масштабируется до текстуры должным образом.

Я нашел несколько примеров того, как применять спрайты к граням, но метод, который я использую, немного отличается, поэтому это сбивает с толку: https://www.babylonjs-playground.com/#ICZEXW # 8

До сих пор я учел следующее:

// Create the box
const frame = BABYLON.MeshBuilder.CreateBox("FrameBase", { height: 1.9, width: 1.95, depth: 0.05, updatable: true }, scene);
// Create textures and mat with 900 resolution
const textureResolution = 900;
const frameTexture = new BABYLON.DynamicTexture("FrameTexture", textureResolution, this._scene, true);
const textureContext = frameTexture.getContext();
const frameMaterial = new BABYLON.StandardMaterial("Mat", this._scene);                 
frameMaterial.diffuseTexture = frameTexture;
const img = new Image();
img.crossOrigin = "anonymous";
img.onload = function () {
    textureContext.drawImage(img, 0, 0);
    frameTexture.update();
};
// The following image has a width of 900px
img.src = 'imagepath.jpg';

mouldingMaterial.diffuseColor = new BABYLON.Color3(1, 0.5, 0.5);
mouldingMaterial.diffuseTexture = frameMaterial;

Кажется, что я могу масштабировать imagepath.jpg до размера Box, используя свойство textureResolution в DynamicTexture. Если я изменяю это, кажется, что материал не заполняет пространство ... это похоже на ширину загруженного изображения.

Предполагая, что я прав, проблема решена, но текстура применяется ко всем сторонам моей коробки. Я хотел бы применить его к одной стороне, а затем указать цвета для остальных.

...