Javascript 改变旋转点
我正在建立一个带门的橱柜的三维模型,并有机会动态改变尺寸。我的橱柜是一组用json定义的立方体。这是书架的示例:Javascript 改变旋转点,javascript,three.js,rotation,Javascript,Three.js,Rotation,我正在建立一个带门的橱柜的三维模型,并有机会动态改变尺寸。我的橱柜是一组用json定义的立方体。这是书架的示例: { "name": "shelf_top", "rotation_point": { "px": 0, "py": 0, "pz": 0, "onclick": [{ "rx": 0, "ry": 0, "rz": 0 }] }, "elements": [{ "e_type": "b
{
"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
}
调整静态元素的比例和位置没有问题,我是这样做的:
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);
}
但我不知道如何管理旋转门。它们具有旋转点,在调整大小期间,旋转点应附着到墙的前部。但是没有设置旋转点的方法。我试着根据这个答案进行翻译,但它只改变了位置,没有改变旋转点。
这里是门的json表示:
{
"name": "doors_right",
"rotation_point": {
"px": 49,
"py": 0,
"pz": 26,
"onclick": [{
"rx": 0,
"ry": 0,
"rz": 0
}, {
"rx": 0,
"ry": Math.PI / 2,
"rz": 0
}]
},
"elements": [{
"e_type": "box",
"h": 100,
"w": 50,
"d": 2,
"x": -24,
"y": 0,
"z": 0,
"rx": 0,
"ry": 0,
"rz": 0,
"textures": ["textures/drewno.jpg", "textures/drewno.jpg", "textures/drewno.jpg", "textures/drewno.jpg", "textures/drewno.jpg", "textures/drewno.jpg"]
}]
}
编辑:
在深入研究将旋转点设置为父对象的方法后,一切都正常。这个问题已经得到了回答和解决。可以平移几何体属性位置(而不是对象位置)或生成父对象。你能用这些方法中的一种做一个JSFIDLE示例吗?谢谢@mlkn,我正在使用遗留代码,这是我在这些方法中遇到问题的根源。在重新生成部分代码并使用父对象(如您建议的答案中所示)后,一切都很顺利。这个问题已经得到了回答。可以平移几何体属性位置(而不是对象位置)或生成父对象。你能用这些方法中的一种做一个JSFIDLE示例吗?谢谢@mlkn,我正在使用遗留代码,这是我在这些方法中遇到问题的根源。在重新生成一部分代码并使用父对象(如您建议的答案中所示)之后,一切都可以完美地工作