【发布时间】:2019-07-12 01:20:42
【问题描述】:
我有一个自定义对象,它是两个网格的减法。这种减法创建了一个类似框架的对象。
createFrame (x, y, z) {
const frameMesh = new THREE.Mesh(new THREE.BoxGeometry(1,1,1));
frameMesh.scale.set(x, y, z);
const smallerFrameMesh = frameMesh.clone()
smallerFrameMesh.scale.set(x - 4, y - 4, z);
// subtraction
const frameGeometry = fromCSG(toCSG(frameGeometry).subtract(toCSG(smallerFrameMesh)));
const frame = new THREE.Mesh(frameGeometry, new THREE.MeshStandardMaterial(0xffffff));
frame.geometry.computeVertexNormals();
frame.userData.isFrame = true;
return frame;
}
现在,只要尺寸发生变化,我就会动态地缩放此框架。问题是使用.scale 只会让我的对象拉伸,而我希望它保留框架的宽度(在本例中为 4)。
是否可以指定对象应该如何缩放(比如编写我自己的缩放函数实现)或者是否有可以使用的属性/方法可以保留“空白”与“对象”部分?提前谢谢你。
【问题讨论】:
标签: javascript three.js 3d csg threecsg