我正在开发一个 POC,我必须在其中自定义 3d 模型中的手表。我正在使用 thee.js 来做 webgl 的东西。我能够更改表带颜色、表盘颜色并在表带上加载纹理图像。但是当我尝试在手表上添加动态文本时我被卡住了,当用户在 Engrave Text 文本框中键入时,我必须更新手表后表盘上的文本。为此,我尝试了https://github.com/jeromeetienne/threex.dynamictexture库,它适用于新几何体,但我无法将其添加到手表的现有模型中。
我已经在 github 中推送了所有代码:https ://github.com/bhupendra1011/watch-3d-engrave ,因为我无法从我的小提琴帐户 {CORS issue} 加载外部 3d 模型。POC 的演示可以在这里看到:https ://bhupendra1011.github.io/watch-3d-engrave/index.html
以下是在表盘上添加文字的代码;要加载文本,请单击 index.html 中的使用纹理文本框
function engraveTextOnWatch(val = "IWC") {
dynamicTexture = new THREEx.DynamicTexture(512, 512);
dynamicTexture.context.font = "bolder 90px Verdana";
// watch back dial geometry & material where text needs to be engraved
var backDialGeometry = object3d.children[1].children[0].children[0].geometry;
var backDialMaterial = object3d.children[1].children[0].children[0].material;
// geometry to add dynamic text
var geometry = new THREE.CubeGeometry(1, 1, 1);
var material = new THREE.MeshBasicMaterial({
map: dynamicTexture.texture
});
var mesh = new THREE.Mesh(geometry, material);
scene.add(mesh); // adding mesh to scene , but this needs to be attache to watch's back dial geomtry
/* tried adding dynamicTexture to watch back dial material, but this is not working , text not appearing */
//backDialMaterial.map = dynamicTexture.texture;
dynamicTexture.texture.needsUpdate = true;
dynamicTexture.drawText(val, 2, 256, "orange");
}
请让我知道如何在现有模型上添加动态文本。谢谢。