【发布时间】:2018-08-19 13:52:36
【问题描述】:
我正在尝试创建一个时髦的 VR 菜单,以便当用户向下看时,菜单项位于相机下方的一列中,围绕圆形弯曲,因此它们看起来相同并朝向相机旋转。
还有一个带有示例的 CodePen http://codepen.io/bknill/pen/BLOwLj?editors=0010
我正在使用我发现的一些代码来计算位置
var radius = 60; // radius of the circle
var height = 60,
angle = 0,
step = (Math.PI /2 ) / menuItems.length;
menuItems.forEach(function(item,index){
var menuItem = createMenuItem(item.title);
menuItem.position.y = - Math.round(height/2 + radius * Math.sin(angle));
menuItem.position.z = Math.round(height/2 + radius * Math.sin(angle));
// menuItem.rotation.x = -Math.round(Math.PI * Math.sin(angle));
angle += step;
menu.add(menuItem);
})
这几乎是正确的,下一阶段是让它们以均匀的方式朝向相机旋转。使用 menuItem.lookAt(camera.position) 不起作用 - 它们不是均匀旋转。
child.lookAt(camera.position.normalize()) 这样做
谁让我知道我需要的巧妙数学运算来获得项目的旋转,以使它们面向相机并看起来像是在曲线上?
【问题讨论】:
标签: javascript math three.js