wagner的作用已经被three集成

参看D:\npmwork\three.js-master\examples\js中的shaderspostprocessing文件夹

关于提示找不到OrbitControls

OrbitControls已经从新版three.js中剥离,需要单独引入

添加场景背景,或vr背景

  1. 固定背景: scene.background = new THREE.TextureLoader().load( url );
  2. vr背景: scene.background = new THREE.CubeTextureLoader().load( [ 'px.jpg', 'nx.jpg', 'py.jpg', 'ny.jpg', 'pz.jpg', 'nz.jpg' ] );
    vr背景中由六个图拼成一个六边型,相机处于这个六边形的中心,

矩阵详解

www.opengl-tutorial.org/beginners-t…

镜头控制

//OrbitControls
var controls = new THREE.OrbitControls( camera );
复制代码

辅助线

var axesHelper = new THREE.AxesHelper( 5 );
scene.add( axesHelper );
复制代码

球体图片

球体图片应该是比例2:1的图片,不然会造成图像失真 下边这个库中有太阳系行星的素材

github.com/jeromeetien…

让对象以指定轴(非xyz轴)旋转

skybox.rotation.x/y/z 是球体绕自身圆形旋转

threejs.org/docs/index.…

@.rotateOnAxis

www.cnblogs.com/mimime/p/61…

@.setRotationFromEuler

blog.csdn.net/birdflyto20…

threejs.org/docs/index.…

第一点 物体的rotation的旋转属性是相对与该物体的本身坐标系而言的,物体的rotation就是Euler欧拉角,但是会存在万向节死锁的问题。

第二点 three.js中提供了相关的方法rotateOnAxis(axis,angle),该方法需要注意的是angle是相对于物体之前状态的旋转角度,也就是增加角度;另外一点需要注意的是axis参数向量是相对物体本身坐标系的,且为单位向量,通过调用.normalize()得到单位向量;rotateOnAxis方法其实也就是调用Quaternion对象的setFromAxisAngle方法

第三点 构建旋转矩阵,方法有:1、makeRotationAxis(axis,angle)方法生成绕任意轴转angle弧度的旋转矩阵 2、new THREE.Matrix4().makeBasis(axisX, axisY, axisZ).setPosition(point);构建矩阵 之后将物体的quaternion应用setFromRotationMatrix

How to rotate a 3D object on axis three.js?

引用:

www.javascriptcn.com/read-28339.…

CommunityTony Han提出了一个问题:How to rotate a 3D object on axis three.js?,或许与您遇到的问题类似。

回答者PeterCory Gross给出了该问题的处理方式:

Here are the two functions I use. They are based on matrix rotations. and can rotate around arbitrary axes. To rotate using the world’s axes you would want to use the second function rotateAroundWorldAxis().

// Rotate an object around an arbitrary axis in object space
var rotObjectMatrix;
function rotateAroundObjectAxis(object, axis, radians) {rotObjectMatrix = new THREE.Matrix4();rotObjectMatrix.makeRotationAxis(axis.normalize(), radians);// old code for Three.JS pre r54:// object.matrix.multiplySelf(rotObjectMatrix);      // post-multiply// new code for Three.JS r55+:object.matrix.multiply(rotObjectMatrix);// old code for Three.js pre r49:// object.rotation.getRotationFromMatrix(object.matrix, object.scale);// old code for Three.js r50-r58:// object.rotation.setEulerFromRotationMatrix(object.matrix);// new code for Three.js r59+:object.rotation.setFromRotationMatrix(object.matrix);
}var rotWorldMatrix;
// Rotate an object around an arbitrary axis in world space
function rotateAroundWorldAxis(object, axis, radians) {rotWorldMatrix = new THREE.Matrix4();rotWorldMatrix.makeRotationAxis(axis.normalize(), radians);// old code for Three.JS pre r54://  rotWorldMatrix.multiply(object.matrix);// new code for Three.JS r55+:rotWorldMatrix.multiply(object.matrix);                // pre-multiplyobject.matrix = rotWorldMatrix;// old code for Three.js pre r49:// object.rotation.getRotationFromMatrix(object.matrix, object.scale);// old code for Three.js pre r59:// object.rotation.setEulerFromRotationMatrix(object.matrix);// code for r59+:object.rotation.setFromRotationMatrix(object.matrix);
}
复制代码

So you should call these functions within your anim function (requestAnimFrame callback), resulting in a rotation of 90 degrees on the x-axis:

var xAxis = new THREE.Vector3(1,0,0);
rotateAroundWorldAxis(mesh, xAxis, Math.PI / 180);
复制代码

点击互动

//向点击方向发射镭射光,返回接触的对象
var raycaster = new Raycaster();
var mouse = new THREE.Vector3();
window.addEventListener("click", (e) => {
mouse.set((e.clientX / window.innerWidth)*2- 1,-(e.clientY / window.innerHeight)*2+ 1, 50
);raycaster.setFromCamera( mouse, camera );
let a= raycaster.intersectObject( ground, true );
console.log(a);
});
复制代码

three图片虚化

wow.techbrood.com/fiddle/2567…

无限管道

www.9iweb.com.cn/effects/res…

转载于:https://juejin.im/post/5ba30f43e51d450e60582843

three.js 专题相关推荐

  1. js 点击闭包_【新年跳槽必备】2020最新(前端原生JS专题)面试题 速领!

    最近我把每周更新的面试题 发在我们的学习群里 大家似乎都很高冷哇 难道是默默的做题去了没说话 每期面试题都是Richard老师认真准备的 真的希望能帮到大家哦 本期是前端原生JS专题 A前端原生JS专 ...

  2. Danfo.js专题 - Series对象

    Danfo.js专题 - Series对象 jcLee95 的 CSDN 博客 邮箱 :291148484@163.com CSDN 主页:https://blog.csdn.net/qq_28550 ...

  3. Danfo.js专题 - Danfo.js与Dnotebook简介与入门

    Danfo.js与Dnotebook -- pandas.jupyter的JavaScript版本 [前言]:谷歌公司不仅推出了tensorflow的JavaScript版本tensorflow.js ...

  4. Danfo.js专题 - 附:Dnotebook(Danfo Notebook)单机资源与汉化文档

    本文是汉化版的Danfo notebook对应修改的demo,与原版demo内容相比,请求csv的路径发生了变化,且部分文字汉化了.该汉化版本在博主发布的资源中可以找到. 由于G内网无法访问该文档,故 ...

  5. ctfshow node.js专题

    文章目录 web334 web335 web336 web337 web338 web339 web340 web341 web342.web343 web334 给了附件,然后进入后发现是一个登录框 ...

  6. 2023前端面试(JS专题)

    目录 一.前言 二.问题 1,JS数据类型 2,== 与 === 的区别? 3,JS的宏任务和微任务? 4,实现Jsonp 5,JS作用域 6,JS作用域+this指向+原型笔试题(高频) 7, JS ...

  7. Quill.js 专题

    参考: https://luncher.github.io/2018/06/02/Quill%E7%BC%96%E8%BE%91%E5%99%A8%E6%B7%BB%E5%8A%A0%E8%87%AA ...

  8. AR.js专题-多Renderer支持

    支持2渲染器 代码参考 https://threejs.org/docs/#examples/renderers/CSS3DRenderer // CSS3Drenderer cssScene = n ...

  9. js的tree数组对象扁平化思否_JS专题之数组展开

    前言 首先什么是数组展开? 假如现在有这样一个需求:将后台的一个多重 List 数据,展开成一个 List 后,并去重后排序: ["a", "b", [&quo ...

最新文章

  1. x is y python_Python 基础
  2. 中介分析 相对直接效应 相对简介效应_中介效应分析方法和流程
  3. “积水上报”广获好评 畅移信息接棒 “互联网+政务”落地
  4. python3 字符串转数组 数组转字符串 切片操作
  5. 【C 语言】文件操作 ( 文件加密解密 | 加密解密原理 | 对称加密 | 非对称加密 | 散列函数 )
  6. 中国人工智能产业发展指数重磅发布,中国声谷首批AI达摩名单揭晓
  7. 让开!!!谁也别拦着我封装React组件!
  8. 基于稀疏矩阵的k近邻(KNN)实现
  9. [BZOJ]2194: 快速傅立叶之二
  10. Docker核心技术与实现原理
  11. 2.大约QT数据库操作,简单的数据库连接操作,增删改查数据库,QSqlTableModel和QTableView,事务性操作,大约QItemDelegate 代理...
  12. Raki的读paper小记:Kernel Continual Learning
  13. jquery 取的单选按钮组的值
  14. 腾讯2019年理财通用户突破两亿;浪潮云估值突破100亿元 | 美通企业日报
  15. FRM-91500: Unable to start/complete the build.
  16. BT技术概念 — 一些术语的意思
  17. python求阶乘怎么做_python如何求阶乘
  18. emoji unicode java_4字节emoji表情对应的Unicode编码获取和编码转换
  19. 中科创达邹鹏程:与openEuler的结缘并非偶然,操作系统的未来离不开创新
  20. 列表/元组/切片/字典/字符串处理方法

热门文章

  1. MACE(1)-----环境搭建
  2. wordpress主题开发_了解WordPress主题开发标准的详细信息
  3. SpringBoot前后端分离参数传递方式总结
  4. 2020最新款影视小程序后端+前端搭建详细教程附源码
  5. laravel+easywechat对接微信公众号自动回复图文消息
  6. 生成神经对抗网络(GAN)的基本认识及应用
  7. 数据仓库数据质量管理【转】
  8. for循环实现:说一万次我爱你
  9. fortify java_Fortify SCA 代码规则库-支持Java
  10. 干货分享--社群促活的12种方式