如何使用a - frame在触发时设置对象的旋转以匹配Vive控制器的旋转?
How do I set an object's rotation to match a Vive controller rotation upon trigger using A-Frame?
以项目a - frame Dominoes为例,我创建了一个基本的a - frame应用程序,当按下Vive触发器时生成对象。
我可以让新生成的对象在触发时匹配Vive的控制器位置,但是我无法想出一种方法来匹配新对象的旋转到控制器的旋转。
这是我尝试过的:
onTriggerDown: function () {
var sceneEl = d3.select(this.el.sceneEl);
var controllerWorldPosition = this.el.object3D.getWorldPosition();
var controllerWorldRotation = this.el.object3D.getWorldRotation();
sceneEl.append('a-obj-model')
.attr('id', 'base-street-children')
.attr('scale', '0.01 0.01 0.01')
.attr('position', controllerWorldPosition)
.attr('rotation', controllerWorldRotation)
.attr('src', '#base-street-obj')
.attr('mtl', '#base-street-mtl');
},
有什么特别的设置一个新的对象的旋转与JavaScript,我错过了?
在Three.js中,旋转以弧度为单位,但在A-Frame中旋转以度为单位。因为你是从Three.js Object3D中提取旋转数据,所以你需要在将其应用于a - frame实体之前进行转换。
在你的例子中是这样做的:
.attr('rotation', function() {
var controllerWorldRotationX = controllerWorldRotation._x / (Math.PI / 180);
var controllerWorldRotationY = controllerWorldRotation._y / (Math.PI / 180);
var controllerWorldRotationZ = controllerWorldRotation._z / (Math.PI / 180);
return controllerWorldRotationX + ' ' + controllerWorldRotationY + ' ' + controllerWorldRotationZ;
})
相关文章:
- 在指令控制器中使用$attrs时出现问题
- 有没有任何方法可以将控制器从文件加载到ui路由器$stateProvider中
- 知道为什么我的旋转木马不会自动更改图片吗
- 从控制器返回后Ajax启动事件激发
- 获取@ResponseBody的一部分作为主干和Spring MVC控制器之间的参数
- 如何在单击复选框后调用控制器方法
- 在控制器和数据对象之间同步数据
- 将Javascript数组发送到控制器ASP.NET MVC
- 角度控制器结构
- 如何在Jquery中发布后将值从视图返回到控制器
- 将值从html传递到AngularJS控制器
- 从我的控制器返回一个不同于200的代码以触发ajax错误,这被认为是一种好的做法吗
- 从控制器继承了隔离的作用域以生成可重用的指令
- Flash Uploadify在调用我的MVC控制器时没有保留会话/授权
- 顺时针旋转Svg元件
- 为什么不't我的变量在我的控制器中填充后在我的视图中呈现
- Nodejs API控制器,用于在API之间切换
- 将鼠标旋转限制为特定的度数
- 如何在Angular单元测试中从另一个控制器的rootScope将方法添加到rootScope中
- 如何使用a - frame在触发时设置对象的旋转以匹配Vive控制器的旋转?