我有一个旋转的球体,我有一个div附加的例子可以在这里查看: https://jsfiddle.net/ao5wdm04/
我计算x和y值并使用translate3d变换放置div,这非常有效.

我的问题是如何获得rotateX,rotateY和rotateZ或rotate3d变换的值,以便div“切线”球体表面.我知道立方体网格面向球体中心,所以我假设相对于相机的向外法线向量的旋转向量将包含我需要的值.但我不太清楚如何获得这些.

更新

通过使用欧拉角,我几乎达到了预期的效果,如下所示:https://jsfiddle.net/ao5wdm04/1/但旋转不够大.

解决方法

免责声明:我对three.js一无所知.我刚做了一点OpenGL.

您的欧拉角来自模型视图投影的原点(第74-80行).我看不出这背后的逻辑.

如果你的div在球体表面上,那么它应该以div的位置处的球体法线定向.幸运的是,你已经拥有了这些角度.它们被命名为轮换.

如果使用用于定位div的旋转角度替换第82-84行中的欧拉角,则在我的浏览器中,当div位于圆的边缘时,div显示为边缘,当它位于圆的中心时,则面朝上.它看起来像是在一个圆圈中移动,边缘在屏幕上.这是你想要的效果吗?

我对链接代码的修改:

82 var rotX = (rotation.x * (180/ Math.PI));
83 var rotY = (rotation.y * (180/ Math.PI));
84 var rotZ = 0;

编辑

喔好吧.旋转变量就是摄像机的旋转变量.它控制着赤道的切线.您还需要修改方向以考虑纬度.

使rotY等于负纬度.然后确保在赤道旋转之前发生这种旋转.轮换不是可交换的.

总之,来自https://jsfiddle.net/ao5wdm04/1/的代码的更改如下:

27 var lat = 45 * Math.PI / 180;
...
82 var rotX = (rotation.x * (180/ Math.PI));
83 var rotY = - 45;
...
88 document.getElementById('face').style.webkitTransform = 'translate3d(' + x + 'px,' + y + 'px,0px) rotateY('+rotX+'deg) rotateX('+rotY+'deg)';

我不知道纬度应该如何在init和render函数之间传播.正如我所说,我不熟悉这种语言.

与相机相关的Three.js立方体面旋转矢量的更多相关文章

  1. 【HTML5】3D模型--百行代码实现旋转立体魔方实例

    本篇文章主要介绍【HTML5】3D模型--百行代码实现旋转立体魔方实例,具有一定的参考价值,有需要的可以了解一下。

  2. ios – Autolayout旋转轮

    我正在尝试使用CGAffineTransformRotate旋转UIImageView约束,但是视图在旋转时抖动.如果我使用CATransform3DRotate旋转它的图层,则不会发生这种情况,但只要我编辑约束(更改常量),旋转的图像就会跳开.有谁有想法如何解决这个问题?这是跳过的旋转图像的屏幕截图解决方法自动布局作用于UIView的框架.框架根据视图的中心,边界和变换属性计算.默认情况下,vi

  3. ios – 在没有框架改变的情况下旋转UIView

    我有一个UIView,它的高度和宽度在旋转到90度时互换.现在,当我尝试增加高度或宽度时,我看起来异常.如何更改旋转的UIView的高度?解决方法Apple的文档声明,当视图的转换不是标识转换时,视图的frame属性将变为未定义.旋转视图会更改视图的变换.现在,为什么这会使框架无效?

  4. Swift Core Graphics教程之Gradients 与 Context

    你使用过UIBezierPath的就是在UIKit层中对CoreGraphics层中CGPath的封装。你可以看到CoreGraphics的对象和方法都是CG开头的,非常容易辨认。视图将包含一个Graph和CounterViews,确定他们是视图控制器的主视图的子视图,并且Graph在CounterViews之上。打开ViewController.swift,为Container和GraphViews添加outloets:@IBOutletweakvarcontainerView:UIView!最后,为了

  5. swift教程-使用UIGestureRecognizer

    swift教程-使用UIGestureRecognizer更新提示:这篇教程已经由CarolineBegbie为适配IOS8及Swift做了更新。假如你想要在你的应用中检测手势,例如点击,缩放,平移,或者旋转,用Swift和内建的UIGestureRecognizer类实现是非常容易的。UIGestureRecognizer概述在开始之前,先看一份如何使用UIGestureRecognizers以及为什么它们如此得心应手。在IOS3.0,苹果公司就开始拯救UIGestureRecognizer类!使用UI

  6. 图层几何学与几何变换

    iOS图形几何学几何学的基础应用就是要在对应的坐标系统里面对事物进行布局操作,而这些布局位置也是所有动画实现的基石。而这些时间线上图片的状态变化无非就是平移、旋转、缩放以及它们组合起来的几何变换。下面我们开始来聊聊这些几何变换。仿射变换仿射变换是指在二维空间坐标系统中对图像进行平移、旋转、缩放等几何变换。

  7. Swift 3:如何缩放和旋转UIImageView?

    我真的很难在网上找到教程以及已经回答的问题.我有一个UIImageView,我在我的视图中心.我现在能够在屏幕上点击并拖动它.我希望能够缩放并旋转此视图.我该如何实现这一目标?

  8. Swift – 如何更改SCNNode对象的Pivot

    我一直在玩SCNNode对象一段时间了,我迷失了Pivot.如何更改SCNNode的枢轴并将枢轴放在条形边缘之一上?

  9. swift – Scenekit:旋转并动画一个SCNNode

    因为变量/常量有明确的类型,Swift不会进行隐式类型转换.3是无类型的,但是当它分配给d时,类型推断默认为选择Int,因为您没有指定任何其他内容.如果您看到类型转换错误,您可能有代码混合从函数返回的文字,常量和/或值.您可以通过将表达式中的所有内容转换为CGFloat转换为错误,从而使错误消失.当然,这将使您的代码无法读取和丑陋,所以一旦你开始工作,你可能会一次删除一个转换,直到找到一个这样的工作.

  10. android如何旋转画布rect

    我创建一个特定大小的矩形,现在我想将它旋转到45度,我使用canvas.rotate,矩阵,但不工作.如何在android中旋转画布的正确方法?我对Path.Direction.CW感到好奇,是否用于旋转?

随机推荐

  1. js中‘!.’是什么意思

  2. Vue如何指定不编译的文件夹和favicon.ico

    这篇文章主要介绍了Vue如何指定不编译的文件夹和favicon.ico,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  3. 基于JavaScript编写一个图片转PDF转换器

    本文为大家介绍了一个简单的 JavaScript 项目,可以将图片转换为 PDF 文件。你可以从本地选择任何一张图片,只需点击一下即可将其转换为 PDF 文件,感兴趣的可以动手尝试一下

  4. jquery点赞功能实现代码 点个赞吧!

    点赞功能很多地方都会出现,如何实现爱心点赞功能,这篇文章主要为大家详细介绍了jquery点赞功能实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  5. AngularJs上传前预览图片的实例代码

    使用AngularJs进行开发,在项目中,经常会遇到上传图片后,需在一旁预览图片内容,怎么实现这样的功能呢?今天小编给大家分享AugularJs上传前预览图片的实现代码,需要的朋友参考下吧

  6. JavaScript面向对象编程入门教程

    这篇文章主要介绍了JavaScript面向对象编程的相关概念,例如类、对象、属性、方法等面向对象的术语,并以实例讲解各种术语的使用,非常好的一篇面向对象入门教程,其它语言也可以参考哦

  7. jQuery中的通配符选择器使用总结

    通配符在控制input标签时相当好用,这里简单进行了jQuery中的通配符选择器使用总结,需要的朋友可以参考下

  8. javascript 动态调整图片尺寸实现代码

    在自己的网站上更新文章时一个比较常见的问题是:文章插图太宽,使整个网页都变形了。如果对每个插图都先进行缩放再插入的话,太麻烦了。

  9. jquery ajaxfileupload异步上传插件

    这篇文章主要为大家详细介绍了jquery ajaxfileupload异步上传插件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  10. React学习之受控组件与数据共享实例分析

    这篇文章主要介绍了React学习之受控组件与数据共享,结合实例形式分析了React受控组件与组件间数据共享相关原理与使用技巧,需要的朋友可以参考下

返回
顶部