gpt4 book ai didi

aframe - 如何更改对象 A-Frame 的枢轴点、变换原点或旋转点?

转载 作者:行者123 更新时间:2023-12-04 11:48:27 26 4
gpt4 key购买 nike

当我画一个 <a-box> .定位在盒子的中心。旋转围绕盒子的中心旋转。如何更改旋转点?

<a-box rotation="0 45 0"></a-box>

最佳答案

一种方法是将对象包裹在父实体中,偏移内部实体的位置,然后对父实体应用转换。

下面的代码将 Y 轴上的旋转点(或变换原点)移动 1 米。

<a-entity rotation="0 45 0">
<a-box position="0 1 0"></a-box>
</a-entity>

这个枢轴组件也可能工作:
var originalPosition = new THREE.Vector3();
var originalRotation = new THREE.Vector3();

/**
* Wrap el.object3D within an outer group. Apply pivot to el.object3D as position.
*/
AFRAME.registerComponent('pivot', {
dependencies: ['position'],

schema: {type: 'vec3'},

init: function () {
var data = this.data;
var el = this.el;
var originalParent = el.object3D.parent;
var originalGroup = el.object3D;
var outerGroup = new THREE.Group();

originalPosition.copy(originalGroup.position);
originalRotation.copy(originalGroup.rotation);

// Detach current group from parent.
originalParent.remove(originalGroup);
outerGroup.add(originalGroup);

// Set new group as the outer group.
originalParent.add(outerGroup);

// Set outer group as new object3D.
el.object3D = outerGroup;

// Apply pivot to original group.
originalGroup.position.set(-1 * data.x, -1 * data.y, -1 * data.z);

// Offset the pivot so that world position not affected.
// And restore position onto outer group.
outerGroup.position.set(data.x + originalPosition.x, data.y + originalPosition.y,
data.z + originalPosition.z);

// Transfer rotation to outer group.
outerGroup.rotation.copy(originalGroup.rotation);
originalGroup.rotation.set(0, 0, 0);
}
});

<a-entity pivot="0 1 0" rotation="0 45 0"></a-entity>

关于aframe - 如何更改对象 A-Frame 的枢轴点、变换原点或旋转点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41545619/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com