我正在建造一个带门的橱柜3D模型以及动态改变尺寸的机会。我的橱柜是一套在json中定义的立方体。这是架子上的例子:
addButtonCopyFiles[i].ID = templateId[i].Text;
eachPanel[i].Controls.Add(addButtonCopyFiles[i]);
调整静态元素的比例和位置没有问题,我这样做:
{
"name": "shelf_top",
"rotation_point": {
"px": 0,
"py": 0,
"pz": 0,
"onclick": [{
"rx": 0,
"ry": 0,
"rz": 0
}]
},
"elements": [{
"e_type": "box",
"h": 50,
"w": 100,
"d": 2,
"x": 0,
"y": 49,
"z": 0,
"rx": Math.PI / 2,
"ry": 0,
"rz": 0,
"textures": ["textures/drewno.jpg", "textures/drewno.jpg", "textures/drewno.jpg", "textures/drewno.jpg", "textures/bok.jpg", "textures/drewno.jpg"]
}],
"handler": null
}
但我不知道如何处理旋转门。它们具有旋转点,在调整大小期间应该将旋转点连接到墙壁的前部。但是没有设置旋转点的方法。我已经尝试根据这个答案Three.js move geometry's center进行翻译,但它只改变了位置,而不是轮换点。 在这里,它是门的json表示:
function resizeHeight(h) {
$clickEvent[0].scale.y = h - 4;
$clickEvent[1].scale.y = h - 4;
$clickEvent[2].scale.y = h - 4;
$clickEvent[4].position.setY(-h / 2 + 1);
$clickEvent[5].position.setY(h / 2 - 1);
}
编辑: 在将旋转点设置为父对象的方法中进行深入研究后,一切正常。