A-frame中物体沿X、Z轴旋转时不转动反而出现位置偏移问题求助
问题原因
- 核心诱因是加载的OBJ模型的轴心点(坐标原点)未对齐自身几何中心。当模型轴心点与自身几何中心偏移距离较大时,旋转操作实际是绕偏移的轴心点做圆周运动,视觉上就会呈现为位置偏移。你这里绕Y轴旋转正常,是因为刚好轴心点到模型的连线与Y轴重合,旋转时不会产生其他轴的位移。
- 现有代码存在笔误:
position="0 -8 -0"中Z轴的-0属于不规范写法,建议修正为0。
解决方案
方案1:修改源模型(优先推荐)
使用Blender等3D建模工具修正模型原点:
- 导入
free_head.obj文件,选中模型网格 - 执行「设置原点」-「原点到几何中心」操作
- 重新导出OBJ文件替换原有资源即可,修改后直接在当前实体上设置旋转参数即可正常生效。
方案2:嵌套实体层级(无需修改模型)
通过父子实体拆分控制逻辑,父实体负责旋转、缩放,子实体调整位置抵消轴心偏移,修改后代码参考:
<a-scene embedded arjs = 'trackingMethod: best; sourceType: webcam; debugUIEnabled: false;'> <a-anchor hit-testing-enabled='true'> <!-- 父实体控制旋转、缩放 --> <a-entity scale="5 5 5" rotation = "10 0 0"> <!-- 子实体承载模型、调整位置抵消轴心偏移 --> <a-entity position="0 -8 0" obj-model="obj: url(models/free_head.obj);"> </a-entity> </a-entity> </a-anchor> <a-camera-static/> </a-scene>
内容的提问来源于stack exchange,提问作者Doc Volz
相关产品推荐
相关产品推荐

