Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 改变旋转点_Javascript_Three.js_Rotation - Fatal编程技术网

Javascript 改变旋转点

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

我正在建立一个带门的橱柜的三维模型,并有机会动态改变尺寸。我的橱柜是一组用json定义的立方体。这是书架的示例:

{
  "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,我正在使用遗留代码,这是我在这些方法中遇到问题的根源。在重新生成一部分代码并使用父对象(如您建议的答案中所示)之后,一切都可以完美地工作